def offset_bbox(bbox, offset): """ Offset Bounding Box by given offset http://archi-lab.net/create-view-by-room-with-dynamo/ """ bboxMinX = bbox.Min.X - offset bboxMinY = bbox.Min.Y - offset bboxMinZ = bbox.Min.Z - offset bboxMaxX = bbox.Max.X + offset bboxMaxY = bbox.Max.Y + offset bboxMaxZ = bbox.Max.Z + offset newBbox = DB.BoundingBoxXYZ() newBbox.Min = DB.XYZ(bboxMinX, bboxMinY, bboxMinZ) newBbox.Max = DB.XYZ(bboxMaxX, bboxMaxY, bboxMaxZ) return newBbox
duplicate_plan.CropBox = cropbox duplicate_plan.CropBoxVisible = False return duplicate_plan with db.Transaction("Duplicate View"): for sheet_name in all_sheet_names: # check if duplicate exists col_plan = db.Collector( of_class="ViewPlan", is_type=False, where=lambda x: sheet_name + "-Plan" in x.Name, ).unwrap() col_rcp = db.Collector( of_class="ViewPlan", is_type=False, where=lambda x: sheet_name + "-RCP" in x.Name, ).unwrap() # get cropbox region cropbox = DB.BoundingBoxXYZ() bbmin, bbmax = ui.Pick.pick_box(sheet_name) cropbox.Min = bbmin.unwrap() cropbox.Max = bbmax.unwrap() if col_plan.GetElementCount() < 1: # create duplicate duplicate_plan = duplicate_view(plan_view, cropbox, "-Plan") if col_rcp.GetElementCount() < 1: # create duplicate duplicate_rcp = duplicate_view(rcp_view, cropbox, "-RCP")