What is an ASM file?
In mechanical CAD, the .asm extension identifies an assembly: a file that lists the components of a product, how they are positioned relative to one another, and properties such as color, visibility or suppression for each instance. Two unrelated CAD systems use this extension, PTC Creo and its predecessors Pro/ENGINEER and Wildfire, and Siemens Solid Edge.
In both cases, the ASM file is a structure that points to other files. A Creo assembly references .prt part files, while a Solid Edge assembly references .par part files, .psm sheet metal files and often other .asm sub-assemblies. To obtain the full geometry, the referenced files must be available alongside the assembly. Note that the .asm extension is also used for assembly-language source code, which has nothing to do with CAD.
Creo ASM vs. Solid Edge ASM
| Feature | Creo / Pro/ENGINEER | Solid Edge |
| Vendor | PTC | Siemens |
| Referenced files | .prt parts and .asm sub-assemblies | .par parts, .psm sheet metal parts and .asm sub-assemblies |
| File naming | Often followed by a version number, such as .asm.1 or .asm.2 | Plain .asm extension |
| Assembly-level content | Instance properties, assembly cuts, simplified representations, family tables, user parameters, PMI | Instance properties, user-defined attributes, workplanes |
| Related files | .xpr and .xas instance accelerator files for family tables | None specific |
What Is ASM Used For? Applications and Industry Use Cases
ASM files are the backbone of product design in Creo and Solid Edge, used across industrial machinery, automotive, aerospace, consumer products and many other sectors. They capture the complete structure of a product, from top-level assembly down to individual parts, and are exchanged between design teams, suppliers and manufacturing partners.
For software developers, reading ASM files lets CAM, CAE, simulation, PDM/PLM and visualization applications bring in a whole product rather than isolated parts. The product structure can drive bills of materials, persistent names keep simulation setups linked to components through design changes, and hole and pattern data from Creo supports automated machining.
Challenges or Common Pitfalls
Missing files are the most frequent problem. An ASM file on its own contains no part geometry, so every referenced part and sub-assembly must be shipped with it. For Creo assemblies that use family tables, the .xpr and .xas instance accelerator files must also sit next to the assembly. Creo only saves them when a specific option is enabled, and without them the translated result can be incorrect.
Some recent or specialized features are harder to translate. Monolithic ("inseparable") assemblies introduced in Creo 8.0, light welds without geometry, and parameters defined at feature or surface level are examples of content that a translator may not carry over.
Finally, the same extension covers two different formats, so applications need to identify whether an .asm file comes from Creo or Solid Edge before reading it.
How Spatial Helps
Our 3D InterOp SDK reads both kinds of ASM files and delivers the product structure and precise B-rep geometry of the referenced parts to CGM Modeler, 3D ACIS Modeler or Parasolid. Depending on what the target supports, the assembly can be kept as a hierarchy or flattened, and its structure can be exported to an XML E-BOM.
For Creo, 3D InterOp imports Pro/ENGINEER, Wildfire and Creo files, including Creo 12, without requiring a Creo license. It reads the full assembly tree and family tables, instance color, transparency, visibility and suppression, assembly cuts, simplified representations, user parameters and persistent names, and since Release 2026 1.0 it also supports assembly-level PMI. Creo files are imported only; writing them is not supported.
For Solid Edge, 3D InterOp reads assemblies from Solid Edge V18 to Solid Edge 2026, with a choice between a direct translator and a Parasolid-based translator. It imports the assembly structure, instance color and transparency, user-defined attributes, workplanes and persistent names that remain stable when components are added, moved, renamed or replaced, which makes simulation update workflows much easier.