An open-source C++ library and CLI tool for converting 3Shape DCM files to standard 3D formats (STL, OBJ, PLY).
The project aims to provide a comprehensive solution for reading and converting 3Shape DCM files:
- ✅ Read and extract mesh geometry (vertices and triangles) from DCM files - Done
- Supports schemas CA, CB, CC, and CE (encrypted)
- ✅ Convert to STL, PLY, OBJ - Done (using Assimp)
- 🚧 Read mesh colors - To do
- 🚧 Read UV mapping and textures - To do
- 🚧 Read extra curves - To do
- Write DCM files
- Read heavily encrypted files without key
- C++20 compatible compiler (GCC 10+, Clang 12+, MSVC 2019+)
- CMake 3.16 or higher
- vcpkg (automatically installed by the build system)
The project uses vcpkg to manage dependencies automatically. The following libraries will be installed:
- Boost (program_options, dynamic_bitset)
- Poco (XML, Zip)
- Assimp
- fmt
- spdlog
- OpenSSL
# Clone the repository
git clone https://github.com/yourusername/Open3SDCM.git
cd Open3SDCM
# Configure with CMake (uses vcpkg preset)
cmake --preset ninja-release-vcpkg
# Build
cmake --build builds/ninja-release-vcpkg -j
# The executable will be in: builds/ninja-release-vcpkg/bin/Open3SDCMCLI# Clone the repository
git clone https://github.com/yourusername/Open3SDCM.git
cd Open3SDCM
# Configure with CMake
cmake --preset ninja-release-vcpkg
# Build
cmake --build builds/ninja-release-vcpkg --config Release
# The executable will be in: builds\ninja-release-vcpkg\bin\Open3SDCMCLI.exeFor development with debug symbols:
cmake -S . -B cmake-build-debug -DCMAKE_BUILD_TYPE=Debug
cmake --build cmake-build-debug -jThe CLI tool Open3SDCMCLI can convert DCM files in two modes:
Convert a single DCM file to your desired format:
# Convert to STL
./Open3SDCMCLI -i input.dcm -o output_directory -f stl
# Convert to PLY
./Open3SDCMCLI -i input.dcm -o output_directory -f ply
# Convert to OBJ
./Open3SDCMCLI -i input.dcm -o output_directory -f objConvert all DCM files in a directory:
# Convert all DCM files in a directory to STL
./Open3SDCMCLI -i input_directory -o output_directory -f stl
# Convert all DCM files to PLY
./Open3SDCMCLI -i input_directory -o output_directory -f ply# Example 1: Convert a single scan to STL
./Open3SDCMCLI -i TestData/Handle/HandleAngledLarge.dcm -o ./output -f stl
# Example 2: Convert all DCM files in a folder to PLY
./Open3SDCMCLI -i TestData/Scan-01 -o ./output -f ply
# Example 3: Convert with full paths
./Open3SDCMCLI -i /path/to/scan.dcm -o /path/to/output -f obj
# Display help
./Open3SDCMCLI --help-i, --input <path>: Input DCM file or directory containing DCM files (required)-o, --output_dir <path>: Output directory for converted files (required)-f, --format <format>: Output format:stl,ply, orobj(default:stl)-h, --help: Display help message
The tool creates a timestamped subdirectory in the output directory (e.g., 2025-02-01-14-30-45/) containing the converted files. The output filename preserves the original DCM filename with the new extension.
DCM files are XML-based files containing 3D scan data. The internal format is called HPS (Himsa Packed Scan). Key components:
- Vertices: Base64-encoded binary data (floats, 12 bytes per vertex)
- Facets: Base64-encoded compressed triangle data
- Schema: Indicates encoding type (CA, CB, CC, CE)
- CE schema uses Blowfish encryption
Example DCM structure:
<HPS version="1.0">
<Packed_geometry>
<Schema>CE</Schema>
<Binary_data>
<CE version="1.0">
<Vertices vertex_count="376" base64_encoded_bytes="4512">...</Vertices>
<Facets facet_count="748" base64_encoded_bytes="778">...</Facets>
</CE>
</Binary_data>
</Packed_geometry>
</HPS>For detailed format documentation, see:
- Update the version in the
VERSIONfile - Commit your changes
- Create and push a tag:
git tag v0.1.1
git push origin v0.1.1The GitHub Actions workflow will automatically build binaries for Linux, macOS, and Windows and create a release.
You can trigger a release build without creating a tag:
- Go to the "Actions" tab on GitHub
- Select the "Release" workflow
- Click "Run workflow"
- Enter the version (e.g.,
v0.1.1) - Click "Run workflow"
This is useful for testing or rebuilding a release without creating a new tag.
The project version is managed in the VERSION file at the repository root. This version is automatically read by CMake and used for all subprojects (CLI, Lib, TestTools).
DCM can be read with a text editor. It is a xml file. The internal file is called HPS. The leaves of the XML contain binary data that is encoded in base64. Thus vertices coordinates and triangles are encoded in base64.
<HPS version="1.0">
<Packed_geometry>
<Schema>CE</Schema>
<Binary_data>
<CE version="1.0">
<Vertices vertex_count="376" base64_encoded_bytes="4512" check_value="330137282">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</Vertices>
<Facets facet_count="748" base64_encoded_bytes="778" color="8421504">BAAAAAAAAAAAAAEAAAIAAAIAAAAAAgAAAAIAAAACAAECAAAAAgIAAAACAgAAAAAAAAICAAABAAICAAAAAAICAAECAgAAAQAAAQIAAAAAAgICAAAAAAAAAQACAgAAAAEAAgICAAAAAAACAgIAAQIAAQAAAAACAgIAAAAAAAICAgIAAAAAAAABAAAAAgICAAAAAQACAgICAAAAAAAAAgICAgABAgICAAABAAACAgIAAAAAAAACAgICAgAAAAAAAAABAAAAAgIAAQAAAAEAAgICAgIAAAAAAAAAAgICAgIAAQICAgAAAQAAAQICAgAAAAAAAAACAgICAgIAAAAAAAAAAAEAAAACAgABAAAAAQACAgICAgIAAAABAAAAAAICAgICAgABAgICAAABAQAAAgICAAAAAAAAAAACAgICAgIAAAAAAAAAAAABAAAAAAEAAQIAAAABAAICAgICAgIAAAAAAQAAAAICAgICAgIAAQICAgABAgABAAIAAQIAAAAAAAAAAAACAgICAgIAAAEAAAAAAAAAAQEAAAABAAIAAgIAAgICAgICAgIAAAEAAQAAAQABAgICAgICAAEAAQIAAQIAAAAH6wAAAAEBCQAAAAAAAAAAAQACAgICAAAAAQAAAAAAAAIAAAAAAQECAgACAgICAgICAgABAAAAAQABAAECAgICAgICBwoBAAABCQICAAEAAAEAAgAAAAAAAAEAAAACAgIAAAAAAQAAAAAAAAEAAAICAgACAgICAgICAgIAAQABAQIAAQICAgICAgICAgABAAEAAgAAAAAAAQAAAAIAAQAAAAEAAAAAAAEAAAICAAICAgICAgABAgc9AQAAAQkAAQICAgICAgICAgABAQACAAAAAAAAAAECAAAAAQAAAAABAAACAAICAgICAgABAAEBAgICAgICAgICAAIAAAACAAABAAAAAQAAAAEAAgACAgICAQABAgIAAQICAgICAAIAAgdxAQAAAAEAAQIAAAECAAICCQd2AQAAAQIHdAEAAAEJAgIAAgkBAQEBAQ==</Facets>
</CE>
</Binary_data>
</Packed_geometry>
<FacetMarks>QAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAA==</FacetMarks>
<Annotations/>
<Objects/>
<Splines/>
<Properties>
<Property name="EKID" value="1"/>
</Properties>
</HPS>
A documentation of the HPS (Himsa Packed Scan) format can be found here
Vertices are in float format (4 bytes per coordinates) thus 12 bytes per vertex.
- https://dcm2stl.appspot.com/ : A web service that can convert DCM to STL