standalone_drawer.py: dont require drawing elements to be speified on cli

This commit is contained in:
Thomas Krijnen
2025-08-06 09:18:10 +02:00
parent 071353eddc
commit be8e96d918
+8 -5
View File
@@ -16,10 +16,10 @@ class LineworkContexts(NamedTuple):
class Drawer:
def execute(self):
if len(sys.argv) < 5:
print(f"Expected 4 arguments, got {len(sys.argv) - 1}. Example usage:")
if len(sys.argv) < 4:
print(f"Expected 3 or 4 arguments, got {len(sys.argv) - 1}. Example usage:")
print(
"python standalone_drawer.py drawing.ifc drawing_guid drawing_element_guid1,drawing_element_guid2,drawing_element_guid3 output.svg"
"python standalone_drawer.py drawing.ifc drawing_guid [drawing_element_guid1,drawing_element_guid2,drawing_element_guid3] output.svg"
)
exit(1)
@@ -30,7 +30,10 @@ class Drawer:
# Get all representation contexts to see what we're dealing with.
target_view = ifcopenshell.util.element.get_psets(self.camera_element)["EPset_Drawing"]["TargetView"]
contexts = self.get_linework_contexts(ifc, target_view)
drawing_elements = set([ifc.by_guid(g) for g in sys.argv[3].split(",")])
if len(sys.argv) == 6:
drawing_elements = set([ifc.by_guid(g) for g in sys.argv[3].split(",")])
else:
drawing_elements = set(ifc.by_type('IfcElement'))
self.setup_serialiser(ifc, target_view)
@@ -55,7 +58,7 @@ class Drawer:
results = self.svg_buffer.get_value()
print("results", results)
with open(sys.argv[4], "w") as svg:
with open(sys.argv[-1], "w") as svg:
svg.write(results)
def get_linework_contexts(self, ifc, target_view) -> LineworkContexts: