mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Revert "feat(drawing): support multiple file selection in Add Reference"
This reverts commit cf5ffad9af.
This commit is contained in:
@@ -3094,20 +3094,9 @@ class AddReference(bpy.types.Operator, tool.Ifc.Operator, ImportHelper):
|
|||||||
use_relative_path: bpy.props.BoolProperty(name="Use Relative Path", default=True)
|
use_relative_path: bpy.props.BoolProperty(name="Use Relative Path", default=True)
|
||||||
filename_ext = ".svg"
|
filename_ext = ".svg"
|
||||||
|
|
||||||
files: bpy.props.CollectionProperty(type=bpy.types.OperatorFileListElement)
|
|
||||||
directory: bpy.props.StringProperty(subtype="DIR_PATH")
|
|
||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
# Handle both single and multiple file selection
|
filepath = tool.Ifc.get_uri(self.filepath, use_relative_path=self.use_relative_path)
|
||||||
if self.files:
|
core.add_document(tool.Ifc, tool.Drawing, "REFERENCE", uri=filepath)
|
||||||
for file_elem in self.files:
|
|
||||||
filepath = os.path.join(self.directory, file_elem.name)
|
|
||||||
uri = tool.Ifc.get_uri(filepath, use_relative_path=self.use_relative_path)
|
|
||||||
core.add_document(tool.Ifc, tool.Drawing, "REFERENCE", uri=uri)
|
|
||||||
else:
|
|
||||||
# Fallback for single file (backward compatibility)
|
|
||||||
filepath = tool.Ifc.get_uri(self.filepath, use_relative_path=self.use_relative_path)
|
|
||||||
core.add_document(tool.Ifc, tool.Drawing, "REFERENCE", uri=filepath)
|
|
||||||
|
|
||||||
|
|
||||||
class RemoveReference(bpy.types.Operator, tool.Ifc.Operator):
|
class RemoveReference(bpy.types.Operator, tool.Ifc.Operator):
|
||||||
|
|||||||
@@ -958,71 +958,3 @@ class TestAddReferenceImage(NewFile):
|
|||||||
|
|
||||||
uv_node = material_nodes["Texture Coordinate"]
|
uv_node = material_nodes["Texture Coordinate"]
|
||||||
assert len(uv_node.outputs["Generated"].links[:]) == 1
|
assert len(uv_node.outputs["Generated"].links[:]) == 1
|
||||||
|
|
||||||
|
|
||||||
class TestAddReference(NewFile):
|
|
||||||
def test_add_single_reference(self):
|
|
||||||
"""Test adding a single reference file (backward compatibility)"""
|
|
||||||
bpy.ops.bim.create_project()
|
|
||||||
ifc_path = Path("test/files/temp/test.ifc").absolute()
|
|
||||||
bpy.ops.bim.save_project(filepath=str(ifc_path), should_save_as=True)
|
|
||||||
|
|
||||||
# Create a temporary SVG file
|
|
||||||
svg_path = Path("test/files/temp/reference.svg").absolute()
|
|
||||||
svg_path.parent.mkdir(parents=True, exist_ok=True)
|
|
||||||
with open(svg_path, "w") as f:
|
|
||||||
f.write('<svg xmlns="http://www.w3.org/2000/svg"></svg>')
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Add single reference
|
|
||||||
bpy.ops.bim.add_reference(filepath=str(svg_path))
|
|
||||||
|
|
||||||
# Verify reference was added
|
|
||||||
ifc = tool.Ifc.get()
|
|
||||||
references = [doc for doc in ifc.by_type("IfcDocumentInformation") if doc.Scope == "REFERENCE"]
|
|
||||||
assert len(references) == 1
|
|
||||||
assert references[0].Name == "reference"
|
|
||||||
finally:
|
|
||||||
# Cleanup
|
|
||||||
if svg_path.exists():
|
|
||||||
svg_path.unlink()
|
|
||||||
|
|
||||||
def test_add_multiple_references(self):
|
|
||||||
"""Test adding multiple reference files at once"""
|
|
||||||
bpy.ops.bim.create_project()
|
|
||||||
ifc_path = Path("test/files/temp/test.ifc").absolute()
|
|
||||||
bpy.ops.bim.save_project(filepath=str(ifc_path), should_save_as=True)
|
|
||||||
|
|
||||||
# Create temporary SVG files
|
|
||||||
temp_dir = Path("test/files/temp").absolute()
|
|
||||||
temp_dir.mkdir(parents=True, exist_ok=True)
|
|
||||||
|
|
||||||
svg_files = []
|
|
||||||
for i in range(3):
|
|
||||||
svg_path = temp_dir / f"reference_{i}.svg"
|
|
||||||
with open(svg_path, "w") as f:
|
|
||||||
f.write('<svg xmlns="http://www.w3.org/2000/svg"></svg>')
|
|
||||||
svg_files.append(svg_path)
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Test by directly calling core.add_document multiple times
|
|
||||||
# (simulating what the operator does with multiple files)
|
|
||||||
ifc = tool.Ifc.get()
|
|
||||||
for svg_file in svg_files:
|
|
||||||
uri = tool.Ifc.get_uri(str(svg_file), use_relative_path=True)
|
|
||||||
from bonsai.bim import core
|
|
||||||
|
|
||||||
core.drawing.add_document(tool.Ifc, tool.Drawing, "REFERENCE", uri=uri)
|
|
||||||
|
|
||||||
# Verify all references were added
|
|
||||||
references = [doc for doc in ifc.by_type("IfcDocumentInformation") if doc.Scope == "REFERENCE"]
|
|
||||||
assert len(references) == 3
|
|
||||||
|
|
||||||
reference_names = {ref.Name for ref in references}
|
|
||||||
expected_names = {f"reference_{i}" for i in range(3)}
|
|
||||||
assert reference_names == expected_names
|
|
||||||
finally:
|
|
||||||
# Cleanup
|
|
||||||
for svg_file in svg_files:
|
|
||||||
if svg_file.exists():
|
|
||||||
svg_file.unlink()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user