Создание геометрии в семействе с помощью API

Главная Форумы Задать вопрос Создание геометрии в семействе с помощью API

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #6973 Score: 0
    user
    Участник

    Здравствуйте!
    Задача состоит в том чтобы создать в семействе (типовая модель) геометрию и сохранить его под определенным именем.
    Под словом “геометрия” имеется ввиду выдавливание прямоугольника .Файл семейства открыт то есть мне нужно указывать активный документ ,правильно ли я понимаю?как открывать ревит и создавать семейство с помощью программы пока не разобрался
    На сколько я понимаю мне нужно для начала создать 4 точки и соединить их кривой с помощью метода PolyCurve.ByPoints а потом с помощью метода ExtrudeAsSolid сформировать выдавливание?
    Второй вопрос заключается в том каким методом это семейство “Сохранить как” отдельный файл?
    <b></b>

    #7000 Score: 0
    Khasan Mamaev
    Модератор
    187 pts

    Набросал для RevitPythonShell код для построения кубика
    import clr
    from System import *
    from System.Collections.Generic import *
    from Autodesk.Revit.DB import *

    app = __revit__.Application
    doc = __revit__.ActiveUIDocument.Document

    t = 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')

    #7029 Score: 0
    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__” ?) а я то думаю почему у меня в Питон Шел ничего не получается…оказывается тут другой синтаксис для меня не известный пока
    И почему вы метод сохранения семейства вынесли после завершения транзакции?

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Для ответа в этой теме необходимо авторизоваться.