mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 22:33:33 +00:00
New Link IFC operator to easily append IFCs from another Blend file into a master file
This commit is contained in:
@@ -231,6 +231,7 @@ if bpy is not None:
|
|||||||
operator.SetBlenderClashSetB,
|
operator.SetBlenderClashSetB,
|
||||||
operator.ExecuteBlenderClash,
|
operator.ExecuteBlenderClash,
|
||||||
operator.CleanWireframes,
|
operator.CleanWireframes,
|
||||||
|
operator.LinkIfc,
|
||||||
prop.StrProperty,
|
prop.StrProperty,
|
||||||
prop.Attribute,
|
prop.Attribute,
|
||||||
prop.MaterialLayer,
|
prop.MaterialLayer,
|
||||||
|
|||||||
@@ -4862,3 +4862,30 @@ class CleanWireframes(bpy.types.Operator):
|
|||||||
if not obj.modifiers.get("EdgeSplit"):
|
if not obj.modifiers.get("EdgeSplit"):
|
||||||
obj.modifiers.new("EdgeSplit", "EDGE_SPLIT")
|
obj.modifiers.new("EdgeSplit", "EDGE_SPLIT")
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class LinkIfc(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.link_ifc"
|
||||||
|
bl_label = "Link IFC"
|
||||||
|
filepath: bpy.props.StringProperty(subtype="FILE_PATH")
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
#bpy.context.active_object.active_material.BIMMaterialProperties.location = self.filepath
|
||||||
|
#coll_name = "MyCollection"
|
||||||
|
|
||||||
|
with bpy.data.libraries.load(self.filepath, link=True) as (data_from, data_to):
|
||||||
|
data_to.scenes = data_from.scenes
|
||||||
|
|
||||||
|
for scene in bpy.data.scenes:
|
||||||
|
if not scene.library or scene.library.filepath != self.filepath:
|
||||||
|
continue
|
||||||
|
for child in scene.collection.children:
|
||||||
|
if "IfcProject" not in child.name:
|
||||||
|
continue
|
||||||
|
bpy.data.scenes[0].collection.children.link(child)
|
||||||
|
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
def invoke(self, context, event):
|
||||||
|
context.window_manager.fileselect_add(self)
|
||||||
|
return {"RUNNING_MODAL"}
|
||||||
|
|||||||
@@ -2305,6 +2305,8 @@ class BIM_PT_annotation_utilities(Panel):
|
|||||||
|
|
||||||
row = layout.row(align=True)
|
row = layout.row(align=True)
|
||||||
row.operator("bim.clean_wireframes")
|
row.operator("bim.clean_wireframes")
|
||||||
|
row = layout.row(align=True)
|
||||||
|
row.operator("bim.link_ifc")
|
||||||
|
|
||||||
row = layout.row(align=True)
|
row = layout.row(align=True)
|
||||||
op = row.operator("bim.add_annotation", text="Dim", icon="ARROW_LEFTRIGHT")
|
op = row.operator("bim.add_annotation", text="Dim", icon="ARROW_LEFTRIGHT")
|
||||||
|
|||||||
Reference in New Issue
Block a user