Exemplo n.º 1
0
    def setRoom(self,room):
        self.room = room

        #get boundary segments
        boptions = DB.SpatialElementBoundaryOptions()
        boundsegs = self.room.GetBoundarySegments(boptions)
        boundcurves = []
        
        for bound in boundsegs:
            crvs = []
            for seg in bound:
                crv = seg.GetCurve()
                crvs.append(crv)
            boundcurves.append(crvs)

        self.boundcurves = boundcurves
Exemplo n.º 2
0
@rpw.db.Transaction.ensure('Make Floor')
def make_floor(new_floor):
    floor_curves = DB.CurveArray()
    for boundary_segment in new_floor.boundary:
        try:
            floor_curves.Append(boundary_segment.Curve)  # 2015, dep 2016
        except AttributeError:
            floor_curves.Append(boundary_segment.GetCurve())  # 2017

    floorType = doc.GetElement(new_floor.floor_type_id)
    level = doc.GetElement(new_floor.level_id)
    normal_plane = DB.XYZ.BasisZ
    doc.Create.NewFloor(floor_curves, floorType, level, False, normal_plane)


NewFloor = namedtuple('NewFloor', ['floor_type_id', 'boundary', 'level_id'])
new_floors = []
room_boundary_options = DB.SpatialElementBoundaryOptions()

for room in selected_rooms:
    room_level_id = room.Level.Id
    # List of Boundary Segment comes in an array by itself.
    room_boundary = room.GetBoundarySegments(room_boundary_options)[0]
    new_floor = NewFloor(floor_type_id=floor_type_id,
                         boundary=room_boundary,
                         level_id=room_level_id)
    new_floors.append(new_floor)

for new_floor in new_floors:
    make_floor(new_floor)