Skip to content

Commit

Permalink
Added metadata handling to Assembly.add method (#1327)
Browse files Browse the repository at this point in the history
* Added metadata handling to Assembly.add method

* Remove one overload

* Update assembly metadata test

---------

Co-authored-by: AU <[email protected]>
Co-authored-by: Lorenz Neureuter <[email protected]>
  • Loading branch information
3 people authored May 14, 2023
1 parent 95f37fd commit 0fc683c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
5 changes: 5 additions & 0 deletions cadquery/assembly.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ def add(
loc: Optional[Location] = None,
name: Optional[str] = None,
color: Optional[Color] = None,
metadata: Optional[Dict[str, Any]] = None,
) -> "Assembly":
"""
Add a subassembly to the current assembly with explicit location and name.
Expand All @@ -194,6 +195,7 @@ def add(
:param name: unique name of the root object (default: None, resulting in an UUID being
generated)
:param color: color of the added object (default: None)
:param metadata: a store for user-defined metadata (default: None)
"""
...

Expand All @@ -214,6 +216,9 @@ def add(self, arg, **kwargs):
subassy.loc = kwargs["loc"] if kwargs.get("loc") else arg.loc
subassy.name = kwargs["name"] if kwargs.get("name") else arg.name
subassy.color = kwargs["color"] if kwargs.get("color") else arg.color
subassy.metadata = (
kwargs["metadata"] if kwargs.get("metadata") else arg.metadata
)
subassy.parent = self

self.children.append(subassy)
Expand Down
14 changes: 14 additions & 0 deletions tests/test_assembly.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,17 @@ def metadata_assy():
)
assy.add(sub_assy)

sub_assy2 = cq.Assembly(name="sub2", metadata={"mykey": "sub2-data"})
sub_assy2.add(
b1, name="sub2-0", loc=cq.Location((1, 0, 0)), metadata={"mykey": "sub2-0-data"}
)
sub_assy2.add(
b1, name="sub2-1", loc=cq.Location((2, 0, 0)), metadata={"mykey": "sub2-1-data"}
)
assy.add(
sub_assy2, metadata={"mykey": "sub2-data-add"}
) # override metadata mykey:sub2-data

return assy


Expand Down Expand Up @@ -488,6 +499,9 @@ def test_metadata(metadata_assy):
assert len(metadata_assy.metadata) == 2
# Test that metadata was copied by _copy() during the processing of adding the subassembly
assert metadata_assy.children[0].metadata["b2"] == "sub-data"
assert metadata_assy.children[1].metadata["mykey"] == "sub2-data-add"
assert metadata_assy.children[1].children[0].metadata["mykey"] == "sub2-0-data"
assert metadata_assy.children[1].children[1].metadata["mykey"] == "sub2-1-data"


def solve_result_check(solve_result: dict) -> bool:
Expand Down

0 comments on commit 0fc683c

Please sign in to comment.