NewFormByThickenSingleSurface

Главная Форумы Задать вопрос NewFormByThickenSingleSurface

Помечено: 

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

    Всем доброго дня, я новичок и столкнулся с таким вопросом
    Стоит задача создания отделки для лестниц. После множества неумелых попыток решено было сделать это методом FaceWall, но в качестве Reference грани лестницы не подходят. Единственный как мне видится вариант создавать форму по этим этим граням методом NewFormByThickenSingleSurface и потом использовать ее как ссылку, в конце удалять формы. Собственно вопрос который никак не удается решить – как этим методом пользоваться. 
    https://drive.google.com/open?id=1z2_6o0ZNXoZvKuDgqKKK5jLkWDIZNrfv

    https://drive.google.com/open?id=1VO8LpT692aIGB0JvEBl42XlkmkENVotm

    #9735 Score: 0
    Ilya
    Участник

    import clr
    clr.AddReference(“RevitServices”)
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    clr.AddReference(“RevitAPI”)
    import Autodesk
    from Autodesk.Revit.DB import *
    from Autodesk.Revit.Creation import *
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    clr.ImportExtensions(Revit.GeometryConversion)
    #Введенные в этом узле данные сохраняется в виде списка в переменных IN.
    doc = DocumentManager.Instance.CurrentDBDocument
    reset = IN[0]

    opt = Options()
    opt.ComputeReferences = True
    opt.IncludeNonVisibleObjects = True
    opt.View = doc.ActiveView
    Z = []
    Vert = []
    WallType = UnwrapElement(IN[2])
    ref = ReferenceArray()
    vector = []
    uvpoint = UV(0.5,0.5)
    XYZ1 = XYZ(0,0,1)
    XYZ2 = XYZ(0,0,-1)
    F = UnwrapElement(IN[1])
    Walls = []
    Layer = ShellLayerType.Exterior
    x = Autodesk.Revit.DB.Architecture.Stairs
    Stairs = FilteredElementCollector(doc).OfClass(x).ToElements()
    TransactionManager.Instance.EnsureInTransaction(doc)
    Fm = []
    for i in Stairs:
    for obj in i.get_Geometry(opt):
    for h in obj.GetInstanceGeometry():
    if “Autodesk.Revit.DB.Solid” in str(h):
    Z.append(h)
    for t in h.Faces:
    vector.append(t.ComputeNormal(uvpoint))
    if t.ComputeNormal(uvpoint).IsAlmostEqualTo(XYZ1) or t.ComputeNormal(uvpoint).IsAlmostEqualTo(XYZ2):
    Vert.append(t)
    TrueFace = [item for item in h.Faces if item not in Vert]
    for g in TrueFace:
    ref = g.Reference
    #                    Walls.append(FaceWall.IsValidFaceReferenceForFaceWall(doc,ref))
    Fm = FamilyItemFactory.NewFormByThickenSingleSurface(bool(1),ref,XYZ1)
    ref = Fm.Reference
    Walls.append(FaceWall.Create(doc,WallType.Id,0,ref))

    TransactionManager.Instance.TransactionTaskDone()
    #Назначьте вывод переменной OUT.
    OUT = Walls

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