I want to define a new kind of part and then using Automator efficiently find all instances of that part. Currently, I am trying to do that as follows:
Library definition:
library package SPECTRA {
private import Metaobjects::SemanticMetadata;
abstract occurrence def ReusablePart :> Parts::Part;
abstract occurrence reusableParts : ReusablePart[*] nonunique;
metadata def reusablePart :> SemanticMetadata {
:>> baseType = reusableParts meta SysML::Usage;
}
}
package MySystem {
private import SPECTRA::reusablePart;
#reusablePart server1;
#reusablePart server2;
}
Automator code:
def is_reusable_part(node: syside.Element) -> bool:
for metadata in node.metadata.collect():
if str(metadata.metadata_definition.qualified_name) == "SPECTRA::reusablePart":
return True
return False
for node in model.nodes(node_kind=syside.Element, include_subtypes=True):
if is_reusable_part(node):
print(pprint_sysml(node))
Does anybody know a more straightforward/efficient way of doing this?