2929 AssemblyFeature ,
3030 AssemblyFeatureType ,
3131 AssemblyInstance ,
32+ BodyType ,
3233 MatedCS ,
3334 MateFeatureData ,
3435 MateGroupFeatureData ,
@@ -539,10 +540,17 @@ def estimate_api_calls(
539540 Estimated remaining API calls: 24
540541 """
541542 num_kinematic_parts = sum (
542- 1 for key , part in self .parts .items () if part .rigidAssemblyToPartTF is None and not part .isRigidAssembly
543+ 1
544+ for key , part in self .parts .items ()
545+ if part .rigidAssemblyToPartTF is None and not part .isRigidAssembly and not self .instances [key ].suppressed
543546 )
544547
545- num_rigid_subassemblies = sum (1 for key , sub in self .subassemblies .items () if sub .isRigid )
548+ num_rigid_subassemblies = sum (
549+ 1 for key , sub in self .subassemblies .items () if sub .isRigid and not self .instances [key ].suppressed
550+ )
551+ num_flexible_subassemblies = sum (
552+ 1 for key , sub in self .subassemblies .items () if not self .instances [key ].suppressed
553+ )
546554
547555 # Each rigid subassembly needs get_root_assembly to fetch occurrence data
548556 subassembly_calls = num_rigid_subassemblies
@@ -553,7 +561,7 @@ def estimate_api_calls(
553561
554562 mate_property_calls = 0
555563 if fetch_mate_properties :
556- mate_property_calls = 1 + len ( self . subassemblies ) - num_rigid_subassemblies
564+ mate_property_calls = 1 + num_flexible_subassemblies - num_rigid_subassemblies
557565
558566 mesh_download_calls = 0
559567 if download_meshes :
@@ -1285,7 +1293,7 @@ def _populate_parts(self, assembly: Assembly) -> None:
12851293 self .parts [key ] = Part (
12861294 isStandardContent = False ,
12871295 partId = subassembly_instance .elementId , # Use element ID as part ID
1288- bodyType = "assembly" ,
1296+ bodyType = BodyType . SOLID ,
12891297 documentId = subassembly_instance .documentId ,
12901298 elementId = subassembly_instance .elementId ,
12911299 documentMicroversion = subassembly_instance .documentMicroversion ,
@@ -1329,6 +1337,12 @@ async def _fetch_mass_properties(key: PathKey, part: Part, client: Client) -> No
13291337
13301338 tasks = []
13311339 for key , part in self .parts .items ():
1340+ if part .bodyType == BodyType .SHEET .value :
1341+ continue # skip surface bodies
1342+
1343+ if self .instances [key ].suppressed :
1344+ continue
1345+
13321346 if part .MassProperty is not None :
13331347 logger .debug (f"Part { key } already has mass properties, skipping" )
13341348 continue
@@ -1387,6 +1401,9 @@ async def _fetch_rootassembly(key: PathKey, subassembly: SubAssembly, client: Cl
13871401
13881402 tasks = []
13891403 for key , subassembly in self .subassemblies .items ():
1404+ if self .instances [key ].suppressed :
1405+ continue
1406+
13901407 if subassembly .RootOccurrences is not None :
13911408 logger .debug (f"Subassembly { key } already has RootOccurrences, skipping" )
13921409 continue
@@ -1430,6 +1447,9 @@ def fetch_mate_limits(self, client: Optional[Client]) -> None:
14301447
14311448 # Add flexible subassemblies
14321449 for sub_key , subassembly in self .subassemblies .items ():
1450+ if self .instances [sub_key ].suppressed :
1451+ continue
1452+
14331453 if not subassembly .isRigid :
14341454 assemblies_to_fetch .append ((
14351455 sub_key ,
0 commit comments