Experimental support to proxy one shape for another in IFC

This commit is contained in:
Dion Moult
2019-12-03 17:27:22 +11:00
parent a00449e34b
commit 5df2b3aa0a
4 changed files with 41 additions and 5 deletions
@@ -58,6 +58,7 @@ classes = (
operator.RemoveClassification, operator.RemoveClassification,
operator.FetchLibraryInformation, operator.FetchLibraryInformation,
operator.FetchExternalMaterial, operator.FetchExternalMaterial,
operator.FetchObjectPassport,
prop.BIMProperties, prop.BIMProperties,
prop.BIMLibrary, prop.BIMLibrary,
prop.MapConversion, prop.MapConversion,
@@ -0,0 +1,6 @@
{
"blender": {
"uri": "high-res.blend",
"identification": "high-res"
}
}
@@ -680,3 +680,29 @@ class FetchLibraryInformation(bpy.types.Operator):
def execute(self, context): def execute(self, context):
# TODO # TODO
return {'FINISHED'} return {'FINISHED'}
class FetchObjectPassport(bpy.types.Operator):
bl_idname = 'bim.fetch_object_passport'
bl_label = 'Fetch Object Passport'
def execute(self, context):
for document in bpy.context.active_object.BIMObjectProperties.documents:
if not document.file[-6:] == '.opass':
continue
with open(os.path.join(bpy.context.scene.BIMProperties.data_dir, 'doc', document.file)) as f:
self.object_pass = json.load(f)
if 'blender' in self.object_pass:
self.fetch_blender()
return {'FINISHED'}
def fetch_blender(self):
identification = self.object_pass['blender']['identification']
uri = os.path.join(bpy.context.scene.BIMProperties.data_dir,
'doc',
self.object_pass['blender']['uri'])
bpy.ops.wm.link(
filename=identification,
directory=os.path.join(uri, 'Mesh')
)
bpy.context.active_object.data = bpy.data.meshes[identification]
+3
View File
@@ -55,6 +55,9 @@ class BIM_PT_object(Panel):
row.prop(props, 'applicable_documents', text='') row.prop(props, 'applicable_documents', text='')
row.operator('bim.add_document') row.operator('bim.add_document')
row = layout.row()
row.operator('bim.fetch_object_passport')
for index, document in enumerate(props.documents): for index, document in enumerate(props.documents):
row = layout.row(align=True) row = layout.row(align=True)
row.prop(document, 'file', text='') row.prop(document, 'file', text='')