Load SECAD-Net Model
Load SECAD-Net, then hope the Google Drive download actually lands
- model
- model_info
This is the node every SECAD-Net workflow starts with, and it does more than load weights - half the time it's the thing that downloads them. ComfyUI-SECADNET turns a 64³ voxel grid into a CAD-style mesh using the SECAD-Net paper ("Self-Supervised CAD Reconstruction by Learning Sketch-Extrude Operations"). This node builds the three networks the paper needs - an encoder, a decoder, and an occupancy generator - and loads a pretrained checkpoint into them.
The mechanism is worth knowing because it explains the outputs. LoadSECADNetModel constructs an Encoder (five 3D convolutions that squeeze 64³ voxels down to a 256-dim latent), a Decoder (maps that latent to rotation, translation and dimension parameters for four sketch-extrude primitives), and a Generator (the "neural sketch head" that evaluates an occupancy field at query points). All three are stitched into a single SECADNET_MODEL object. The number of primitives is hardcoded to 4 because that's what the pretrained ABC dataset checkpoint uses - you can't just point it at any .pth.
The inputs that actually matter
model_version- an enum with exactly one entry, "ABC Dataset (recommended)". SECAD-Net's pretrained model was trained on the ABC CAD dataset. There's only one choice, so this is a formality.device-auto,cuda, orcpu.autopicks CUDA if it's there, which it should be for the fine-tune step later.auto_download(default on) - if the checkpoint isn't cached locally, the node pulls it from Google Drive viagdown.custom_checkpoint- a path to your own.pth, which overridesmodel_version. Handy if the auto-download fails and you fetch the file by hand.
It outputs two things: the model (SECADNET_MODEL), which you wire into the Inference, Fine-tune, and Latent-to-Mesh nodes, and model_info (a STRING), a plain-text summary of what loaded. The download lands at ComfyUI/models/cadrecon/secadnet/ModelParameters/best.pth, and it's cached there, so the second run is instant.
Installing
Via ComfyUI Manager, search "SECADNET". Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/PozzettiAndrea/ComfyUI-SECADNET
pip install -r ComfyUI-SECADNET/requirements.txt
The requirements are torch 2.0+, numpy, trimesh, PyMCubes, and gdown - the last one is the workhorse for the Google Drive download.
Where people get burned
The pack's README opens with "Work in Progress! This node is not finished," so treat it as a research-grade toy, not a polished tool. The real trap is silent: if the download fails (gdown hiccups on big Drive files all the time), the node doesn't error out - it loads randomly initialized weights and prints a single line to the console. You get a mesh, it just looks like noise, and there's no red marker telling you why. Check the console for [SECAD-Net] No checkpoint found, using randomly initialized weights. If you see it, either flip auto_download back on and retry, or grab the .pth from the Drive folder linked in the code and drop it at ComfyUI/models/cadrecon/secadnet/ModelParameters/best.pth, then point custom_checkpoint at it.
One more thing to know: this pack is nearly invisible online - a search of r/comfyui turns up essentially nothing about it, and its parent project ComfyUI-CADabra is the one people actually talk about. Don't expect a trail of forum posts to save you; the source code is your best documentation.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model_version | COMBO | ABC Dataset (recommended) | Pretrained model version. ABC Dataset model is recommended. |
| deviceopt | COMBO | auto | Device to load model on. 'auto' uses CUDA if available. |
| auto_downloadopt | BOOLEAN | true | Automatically download model if not found locally. |
| custom_checkpointopt | STRING | Optional: Path to custom checkpoint (.pth file). Overrides model_version. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | SECADNET_MODEL | — |
| model_info | STRING | — |