Создание геометрии в семействе с помощью API
Главная › Форумы › Задать вопрос › Создание геометрии в семействе с помощью API
- В этой теме 2 ответа, 2 участника, последнее обновление 7 лет назад сделано user.
-
АвторСообщения
-
userУчастник
Здравствуйте!
Задача состоит в том чтобы создать в семействе (типовая модель) геометрию и сохранить его под определенным именем.
Под словом “геометрия” имеется ввиду выдавливание прямоугольника .Файл семейства открыт то есть мне нужно указывать активный документ ,правильно ли я понимаю?как открывать ревит и создавать семейство с помощью программы пока не разобрался
На сколько я понимаю мне нужно для начала создать 4 точки и соединить их кривой с помощью метода PolyCurve.ByPoints а потом с помощью метода ExtrudeAsSolid сформировать выдавливание?
Второй вопрос заключается в том каким методом это семейство “Сохранить как” отдельный файл?
<b></b>Набросал для RevitPythonShell код для построения кубика
import clr
from System import *
from System.Collections.Generic import *
from Autodesk.Revit.DB import *app = __revit__.Application
doc = __revit__.ActiveUIDocument.Documentt = Transaction(doc, 'creationFamily')
t.Start()curveArrArray = CurveArrArray()
curveArray1 = CurveArray()normal = XYZ.BasisZ
plane = app.Create.NewPlane(normal, XYZ.Zero)
sketchPlane = SketchPlane.Create(doc, plane)p0 = XYZ.Zero
p1 = XYZ(10, 0, 0)
p2 = XYZ(10, 10, 0)
p3 = XYZ(0, 10, 0)
line1 = Line.CreateBound(p0, p1)
line2 = Line.CreateBound(p1, p2)
line3 = Line.CreateBound(p2, p3)
line4 = Line.CreateBound(p3, p0)
curveArray1.Append(line1)
curveArray1.Append(line2)
curveArray1.Append(line3)
curveArray1.Append(line4)curveArrArray.Append(curveArray1)
creationFamily = doc.FamilyCreate
rectExtrusion = creationFamily.NewExtrusion(True, curveArrArray, sketchPlane, 10)t.Commit()
doc.SaveAs('g:\cub.rft')
userУчастникЗдравствуйте ,Хасан!
У меня это получилось сделать через динамо.Лишь только воспользоватся методом сохранения не получилось.
не могли бы посмотреть на мой код,какие я ошибки допустил?я подозреваю ошибки в импорте библиотек,много лишнего.А дальше у меня подозрений явных нет но волнуюсь что что то не так сделал)reset = IN[0]
import clr
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import*
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference('ProtoGeometry')
import Autodesk
from Autodesk.DesignScript.Geometry import*
clr.AddReference('RevitNodes')
import Autodesk
from Revit.GeometryConversion import*
from Revit.Elements import*
clr.AddReference ( " RevitNodes " )
import Revit
clr.ImportExtensions (Revit.GeometryConversion)doc = DocumentManager.Instance.CurrentDBDocument
nazvanie=IN[1]
width=IN[2]
length=IN[3]
height=IN[4]
p1 = Point.ByCoordinates(0,0,0)
p2 = Point.ByCoordinates(int(width[0]),0,0)
p3 = Point.ByCoordinates(int(width[0]),int(length[0]),0)
p4 = Point.ByCoordinates(0,int(length[0]),0)
a = PolyCurve.ByPoints((p1,p2,p3,p4),True)
b = Curve.ExtrudeAsSolid(a,int(height[0]))
c = UnwrapElement(b)
v = ImportInstance.ByGeometry(b)
OUT=vи есть у меня еще парочку вопросов.
что вот это такое – “__revit__” ?) а я то думаю почему у меня в Питон Шел ничего не получается…оказывается тут другой синтаксис для меня не известный пока
И почему вы метод сохранения семейства вынесли после завершения транзакции? -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.