SCZ Master Conversion Fails After Successful Shatter Step

Hi TechSoft3D team,

I’m trying to convert a Navisworks model (TS170.nwd) to SCZ format with shattering enabled. The shatter step completes successfully, generating the XML and individual SC files, but the SCZ master conversion fails with this error:

[09/23/2025 18-48-35-000 D:0 PID:9017 M:1837MB] ERROR 0: Failed to build master assembly model
ERROR: Failed to export SCZ file to: /home/pts-pc-70/Downloads/check/TS170_shatter/sczMaster/
HOOPS Communicator cleaned up


Folder Structure

/home/pts-pc-70/Downloads/check/
β”œβ”€ TS170.nwd                   # Original Navisworks model
β”œβ”€ TS170_shatter/              # Output of shatter conversion
β”‚   β”œβ”€ TS170.xml               # Master XML
β”‚   β”œβ”€ sc/TS170/               # Individual shattered SC files
β”‚   β”‚   β”œβ”€ 400-TS170-DLVP-0001B1.scz
β”‚   β”‚   β”œβ”€ 400-TS170-DLVP-0002B1.scz
β”‚   β”‚   β”œβ”€ 400-TS170-DLVP-0003B1.scz
β”‚   β”‚   └─ 400-TS170-DLVP-0004B1.scz
β”‚   β”œβ”€ scs/TS170/              # Additional SC-related files
β”‚   β”‚   β”œβ”€ [other SC files]    
β”‚   β”œβ”€ png/                    # Generated PNG previews
β”‚   └─ prc/                    # PRC files (if generated)

SCZ master output:
  /home/pts-pc-70/Downloads/check/TS170_shatter/sczMaster/


Master XML Snippet

<ModelFile>
    <ProductOccurence Id="0" Name="/EL-TS170" Children="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16" />
    <ProductOccurence Id="1" Name="/EL-TS170-CWAY-LV-PRI" Children="17 18 19 20 21 22 23" />
    <ProductOccurence Id="17" Name="/CW/400-TS170-DLVP-0001/B1" Children="24" />
    <ProductOccurence Id="24" Name="/CW/400-TS170-DLVP-0001/B1_B01" InstanceRef="27" Children="25 26" />
    <ProductOccurence Id="27">
        <ExternalModel Name="TS170/CW400-TS170-DLVP-0001B1_B01" />
    </ProductOccurence>
    <ProductOccurence Id="25" Name="RPATH 1 of CWBRAN /CW/400-TS170-DLVP-0001/B1_B01" InstanceRef="28" />
    <ProductOccurence Id="28">
        <ExternalModel Name="TS170/RPATH_1_of_CWBRAN_CW400-TS170-DLVP-0001B1_B01" />
    </ProductOccurence>
</ModelFile>


Observations

  • Shattered SC files exist in sc/TS170/.

  • XML references both sc/TS170/ and scs/TS170/ files.

  • Output folder sczMaster/ exists and is writable.

  • Shatter step and XML generation succeed, but WriteSCMaster fails.


Questions

  1. Are there common reasons why WriteSCMaster fails even when shatter and XML generation succeed?

  2. Could missing or mismatched <ExternalModel> paths in XML cause this?

  3. Any tips for debugging the SCZ master export process?

Thanks in advance for any guidance!

Just to confirm, you are trying to shatter a monolithic model and thus using this workflow and not the default Converter?:

Yes, I am trying to shatter a monolithic model and using this workflow instead of the default Converter.

My current setup

  • Shattered files generated successfully with convertScShattered.

  • Folder structure:

TS170_shatter/
β”œβ”€β”€ sc/
β”‚   └── TS170/
β”‚       β”œβ”€β”€ 400-TS170-DLVP-0001B1.scz
β”‚       β”œβ”€β”€ 400-TS170-DLVP-0002B1.scz
β”‚       └── ...
β”œβ”€β”€ scs/      (optional)
β”œβ”€β”€ prc/      (optional)
β”œβ”€β”€ png/      (optional)
└── TS170.xml  (master XML)

  • XML <ExternalModel> example:
<ProductOccurence Id="27" Name="" ExchangeId="" Behaviour="1" IsPart="false">
    <ExternalModel Name="TS170/CW400-TS170-DLVP-0001B1_B01" />
</ProductOccurence>

  • C++ code calling the API:
std::string xmlFilePath = "/home/.../TS170_shatter/TS170.xml";
std::string modelsPath  = "/home/.../TS170_shatter/sc/TS170/";
std::string outputFile  = "/home/.../TS170_shatter/sczMaster/TS170.scz";

SC_Export_Options exportOptions;
exportOptions.export_assemblytree        = true;
exportOptions.export_materials           = true;
exportOptions.export_physical_properties = true;
exportOptions.export_attributes          = true;
exportOptions.sc_create_scz              = true;
exportOptions.sc_compress_scz            = false;

exporter.WriteSCMaster(xmlFilePath.c_str(), modelsPath.c_str(), outputFile.c_str(), exportOptions);

Questions / Clarifications

  1. For WriteSCMaster, should modelsPath point to the folder containing SCZ files (sc/TS170/) or one level above (TS170_shatter/), given the XML references TS170/...?

  2. Is it okay to have scs/, prc/, png/ folders in the shatter output while only using SCZ files for master SCZ creation?

  3. Should the <ExternalModel Name="..."/> entries in XML include the .scz extension or just the base name?

  4. Does outputFile need to be a full path including the filename or just a folder path?

1 Like

Hello,

The method for generating a shattered assembly using WriteSCMaster is described in the following link:
Export to Shattered Parts

By enabling the prepare_shattered_parts and prepare_shattered_xml options, you can create the part-level SC models and master XML file using WriteSCShattered, and then generate the master SC model with WriteSCMaster. When executed in this sequence, the process works correctly.

This functionality is useful for CAD systems such as CATIA V5, Creo (Pro/E), NX, or SolidWorks, where subcomponents are stored as separate files.

On the other hand, the convertScShattered sample is intended for monolithic assembly modelsβ€”such as IFC, Revit, or Navisworksβ€”where it splits a single model into individual SC/SCS files. These files can then be loaded with loadSubtreeFromXmlFile or loadSubtreeFromScsXmlFile, but SCMaster generation is not supported in this workflow.

Toshi