Fix #3939. Bug where IfcLabel data type was incorrectly used for longer text data.

This commit is contained in:
Dion Moult
2023-10-28 14:44:41 +11:00
parent e641120166
commit cdc3f70ff4
10 changed files with 32 additions and 24 deletions
@@ -908,14 +908,14 @@ class OverrideDuplicateMoveAggregate(bpy.types.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=tool.Ifc.get().by_id(pset["id"]),
properties={"Data": json.dumps(data)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(data))},
)
else:
ifcopenshell.api.run(
"pset.edit_pset",
tool.Ifc.get(),
pset=tool.Ifc.get().by_id(pset["id"]),
properties={"Parent": parent.GlobalId, "Data": json.dumps(data)},
properties={"Parent": parent.GlobalId, "Data": tool.Ifc.get().createIfcText(json.dumps(data))},
)
else:
@@ -927,7 +927,7 @@ class OverrideDuplicateMoveAggregate(bpy.types.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Parent": parent.GlobalId, "Data": json.dumps(data)},
properties={"Parent": parent.GlobalId, "Data": tool.Ifc.get().createIfcText(json.dumps(data))},
)
def add_child_to_assembly_data(new_entity):
@@ -941,7 +941,7 @@ class OverrideDuplicateMoveAggregate(bpy.types.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=tool.Ifc.get().by_id(parent_pset["id"]),
properties={"Data": json.dumps(data)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(data))},
)
def create_data_structure(entity, level=-1):
@@ -1215,7 +1215,10 @@ class RefreshAggregate(bpy.types.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Parent": instance_entity.GlobalId, "Data": json.dumps(data)},
properties={
"Parent": instance_entity.GlobalId,
"Data": tool.Ifc.get().createIfcText(json.dumps(data)),
},
)
part_obj = tool.Ifc.get_object(part)
@@ -1254,7 +1257,10 @@ class RefreshAggregate(bpy.types.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Parent": instance_entity.GlobalId, "Data": json.dumps(data)},
properties={
"Parent": instance_entity.GlobalId,
"Data": tool.Ifc.get().createIfcText(json.dumps(data)),
},
)
part_obj = tool.Ifc.get_object(part)
@@ -59,7 +59,7 @@ class AddArray(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Parent": element.GlobalId, "Data": json.dumps(data)},
properties={"Parent": element.GlobalId, "Data": tool.Ifc.get().createIfcText(json.dumps(data))},
)
return {"FINISHED"}
@@ -132,7 +132,7 @@ class EditArray(bpy.types.Operator, tool.Ifc.Operator):
tool.Model.regenerate_array(parent, data)
pset = tool.Ifc.get().by_id(pset["id"])
data = json.dumps(data)
data = tool.Ifc.get().createIfcText(json.dumps(data))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": data})
tool.Blender.Modifier.Array.set_children_lock_state(element, self.item, True)
@@ -196,7 +196,7 @@ class RemoveArray(bpy.types.Operator, tool.Ifc.Operator):
ifcopenshell.api.run("pset.remove_pset", tool.Ifc.get(), pset=pset)
else:
del data[self.item]
data = json.dumps(data)
data = tool.Ifc.get().createIfcText(json.dumps(data))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": data})
tool.Blender.Modifier.Array.constrain_children_to_parent(element)
@@ -549,7 +549,7 @@ class AddDoor(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Data": json.dumps(door_data, default=list)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(door_data, default=list))},
)
update_door_modifier_representation(context, obj)
return {"FINISHED"}
@@ -608,7 +608,7 @@ class FinishEditingDoor(bpy.types.Operator, tool.Ifc.Operator):
update_door_modifier_representation(context, obj)
pset = tool.Pset.get_element_pset(element, "BBIM_Door")
door_data = json.dumps(door_data, default=list)
door_data = tool.Ifc.get().createIfcText(json.dumps(door_data, default=list))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": door_data})
return {"FINISHED"}
@@ -856,7 +856,7 @@ class MEPAddTransition(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Data": json.dumps(transition_data, default=list)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(transition_data, default=list))},
)
tool.System.add_ports(obj, offset_end_port=profile_offset_si)
@@ -1200,7 +1200,7 @@ class MEPAddBend(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Data": json.dumps(bend_data, default=list)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(bend_data, default=list))},
)
tool.System.add_ports(obj, end_port_pos=second_object_offset)
@@ -114,7 +114,7 @@ def update_bbim_railing_pset(element, railing_data):
pset = tool.Pset.get_element_pset(element, "BBIM_Railing")
if not pset:
pset = ifcopenshell.api.run("pset.add_pset", tool.Ifc.get(), product=element, name="BBIM_Railing")
railing_data = json.dumps(railing_data, default=list)
railing_data = tool.Ifc.get().createIfcText(json.dumps(railing_data, default=list))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": railing_data})
@@ -412,7 +412,7 @@ def update_bbim_roof_pset(element, roof_data):
pset = tool.Pset.get_element_pset(element, "BBIM_Roof")
if not pset:
pset = ifcopenshell.api.run("pset.add_pset", tool.Ifc.get(), product=element, name="BBIM_Roof")
roof_data = json.dumps(roof_data, default=list)
roof_data = tool.Ifc.get().createIfcText(json.dumps(roof_data, default=list))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": roof_data})
@@ -377,7 +377,7 @@ class AddStair(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
ifc_file,
pset=pset,
properties={"Data": json.dumps(stair_data)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(stair_data))},
)
regenerate_stair_mesh(context)
update_ifc_stair_props(obj)
@@ -419,7 +419,7 @@ class FinishEditingStair(bpy.types.Operator, tool.Ifc.Operator):
update_stair_representation(obj)
pset = tool.Pset.get_element_pset(element, "BBIM_Stair")
data = json.dumps(data)
data = tool.Ifc.get().createIfcText(json.dumps(data))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": data})
# update IfcStairFlight properties
@@ -169,7 +169,7 @@ class UpdateDataFromSverchok(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Data": json.dumps(sverchok_data)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(sverchok_data))},
)
update_sverchok_modifier(context)
@@ -496,7 +496,7 @@ class AddWindow(bpy.types.Operator, tool.Ifc.Operator):
"pset.edit_pset",
tool.Ifc.get(),
pset=pset,
properties={"Data": json.dumps(window_data, default=list)},
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(window_data, default=list))},
)
update_window_modifier_representation(context, obj)
return {"FINISHED"}
@@ -553,7 +553,7 @@ class FinishEditingWindow(bpy.types.Operator, tool.Ifc.Operator):
update_window_modifier_representation(context, obj)
pset = tool.Pset.get_element_pset(element, "BBIM_Window")
window_data = json.dumps(window_data, default=list)
window_data = tool.Ifc.get().createIfcText(json.dumps(window_data, default=list))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": window_data})
return {"FINISHED"}
+6 -4
View File
@@ -513,7 +513,8 @@ class Model(blenderbim.core.tool.Model):
else:
pset = ifcopenshell.api.run("pset.add_pset", tool.Ifc.get(), product=element, name="BBIM_Boolean")
data = boolean_ids
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": json.dumps(data)})
data = tool.Ifc.get().createIfcText(json.dumps(data))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": data})
@classmethod
def unmark_manual_booleans(cls, element, booleans):
@@ -526,7 +527,8 @@ class Model(blenderbim.core.tool.Model):
data = list(data)
pset = tool.Ifc.get().by_id(pset["id"])
if data:
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": json.dumps(data)})
data = tool.Ifc.get().createIfcText(json.dumps(data))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=pset, properties={"Data": data})
else:
ifcopenshell.api.run("pset.remove_pset", tool.Ifc.get(), pset=pset)
@@ -601,7 +603,7 @@ class Model(blenderbim.core.tool.Model):
else:
obj = tool.Ifc.get_object(element)
array_pset = tool.Pset.get_element_pset(element, "BBIM_Array")
default_data = '[{"children": []}]'
default_data = tool.Ifc.get().createIfcText('[{"children": []}]')
ifcopenshell.api.run(
"pset.edit_pset",
tool.Ifc.get(),
@@ -611,7 +613,7 @@ class Model(blenderbim.core.tool.Model):
tool.Model.regenerate_array(obj, array_data)
json_data = json.dumps(array_data)
json_data = tool.Ifc.get().createIfcText(json.dumps(array_data))
ifcopenshell.api.run("pset.edit_pset", tool.Ifc.get(), pset=array_pset, properties={"Data": json_data})
for i in range(len(array_data)):