anatools.lib.ana_object module¶
- class AnaBaseObject(object_type)¶
- Bases: - ABC- Base class for Ana objects - dump_annotations(calculate_obstruction=False)¶
- Generate annotations for the object. 
 - dump_metadata()¶
- Convert object to a JSON serializable representation. Sub classes add metadata by implementing the dump_metadata method as follows: - def dump_metadata(self):
- meta = super().dump_metadata() return {**meta, “subclass-attribute”: subclass-value, …} 
 
 - load(**kwargs)¶
- Default loader - Load the object from a file - When overriding this method in your subclass you must do all of the following
- set self.root = the loaded object 
- set self.loaded = True 
 
 
 - next_instance = 1¶
 
- class AnaObject(object_type)¶
- Bases: - ABC- Base class for Ana objects - dump_annotations(calculate_obstruction=False)¶
- Generate annotations for the object. 
 - dump_metadata()¶
- Convert object to a JSON serializable representation. Sub classes add metadata by implementing the dump_metadata method as follows: - def dump_metadata(self):
- meta = super().dump_metadata() return {**meta, “subclass-attribute”: subclass-value, …} 
 
 - find_object(qname)¶
- Recursively search the object hierarchy for a child object where qname is a list of object base names from the original hierarchy. - For example, given this object hierarchy in the original blender file: - Aircraft
- Left_Wing
- Flap 
- Right_Wing
- Flap.001 
 
 - To find the right wing flap in a loaded instance of this object you would do the following, assuming “aircraft” is the AnaObject instance. - obj = aircraft.find_object([“Right_Wing”, “Flap”]) - IMPORTANT CAVEAT: - This will not work if an object in the hierarchy has two children with the same base name, e.g. - Aircraft
- Left_Wing
- Flap Flap.001 
- Right_Wing
- Flap.002 Flap.003 
 
 - To solve this problem you need to modify the original file to follow the “no two children with the same base name” rule 
 - load(**kwargs)¶
- Default loader - Load the object from a file - If you override this method in your subclass you must do all of the following
- create the object hierarchy with a single root object 
- create the object collection 
- link all objects to the collection 
- link the collection to the current scene 
- set self.collection = the collection datablock 
- set self.root = the root object datablock 
- set self.loaded = True 
 
 
 - next_instance = 1¶
 
