Координаты вершин комнаты
Главная › Форумы › Python › Помогите с питон кодом › Координаты вершин комнаты
- В этой теме 0 ответов, 1 участник, последнее обновление 6 лет, 11 месяцев назад сделано Denis.
Просмотр 1 сообщения - с 1 по 1 (всего 1)
-
АвторСообщения
-
Добрый день!
Задача: Хочу решить задачу с автоматической расстановкой оборудования в помещении (в данном случае – светильники). Для этого мне нужно знать координаты вершин ограничивающих плоскость потолка. Для этого мне нужно получить:
a) Линии из которых состоит комната, чтобы далее получить координаты вершин этих линий.
б) Координаты вершин комнаты
Проблема: используя BoundarySegment я получаю только плоскость пола.
Вопрос: Как получить координаты линий, описывающих 3D комнату, а не 2D?П.С. В LookUP я нашел, где хронятся эти вершины, но не смог их достать.
import clr # Import RevitAPI clr.AddReference("RevitAPI") import Autodesk from Autodesk.Revit.DB import * # Import DocumentManager and TransactionManager clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager # Import ToDSType(bool) extension method clr.AddReference("RevitNodes") import Revit clr.ImportExtensions(Revit.Elements) clr.ImportExtensions(Revit.GeometryConversion) import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * #The input to this node will be stored in the IN[0] variable. doc = DocumentManager.Instance.CurrentDBDocument app = DocumentManager.Instance.CurrentUIApplication.Application appversion = app.VersionNumber rooms = [] boundaries = [] collector = FilteredElementCollector(doc) collector.OfCategory(BuiltInCategory.OST_Rooms) famtypeitr = collector.GetElementIdIterator() famtypeitr.Reset() output = [] for item in famtypeitr: elmID = item eleminst = doc.GetElement(elmID) #print eleminst if eleminst.Area > 0: room = eleminst boptions = Autodesk.Revit.DB.SpatialElementBoundaryOptions() boundsegs = room.GetBoundarySegments(boptions) boundcurves = [] if app.VersionNumber == 2016: for bound in boundsegs: crvs = [] for seg in bound: crv = seg.Curve() crvs.append(Revit.GeometryConversion.RevitToProtoCurve.ToProtoType( crv, True )) boundcurves.append(crvs) else: for bound in boundsegs: crvs = [] for seg in bound: crv = seg.GetCurve() crvs.append(Revit.GeometryConversion.RevitToProtoCurve.ToProtoType( crv, True )) boundcurves.append(crvs) rooms.append(room) boundaries.append(boundcurves) #output.append(rooms) output.append(boundaries) #Assign your output to the OUT variable OUT = boundaries
-
АвторСообщения
Просмотр 1 сообщения - с 1 по 1 (всего 1)
- Для ответа в этой теме необходимо авторизоваться.