NewFormByThickenSingleSurface
Главная › Форумы › Задать вопрос › NewFormByThickenSingleSurface
Помечено: Python
- В этой теме 1 ответ, 1 участник, последнее обновление 4 года, 10 месяцев назад сделано Ilya.
-
АвторСообщения
-
IlyaУчастник
Всем доброго дня, я новичок и столкнулся с таким вопросом
Стоит задача создания отделки для лестниц. После множества неумелых попыток решено было сделать это методом FaceWall, но в качестве Reference грани лестницы не подходят. Единственный как мне видится вариант создавать форму по этим этим граням методом NewFormByThickenSingleSurface и потом использовать ее как ссылку, в конце удалять формы. Собственно вопрос который никак не удается решить – как этим методом пользоваться.
https://drive.google.com/open?id=1z2_6o0ZNXoZvKuDgqKKK5jLkWDIZNrfv
https://drive.google.com/open?id=1VO8LpT692aIGB0JvEBl42XlkmkENVotm
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 -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.