{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/secad-net-self-supervised-cad-reconstruction","title":"SECAD-Net: Self-Supervised CAD Reconstruction by Learning Sketch-Extrude Operations","arxiv_id":"2303.10613","date":"2023-03-19","proceeding":"CVPR 2023 1","authors":["Pu Li","Jianwei Guo","Xiaopeng Zhang","Dong-Ming Yan"],"abstract":"Reverse engineering CAD models from raw geometry is a classic but strenuous research problem. Previous learning-based methods rely heavily on labels due to the supervised design patterns or reconstruct CAD shapes that are not easily editable. In this work, we introduce SECAD-Net, an end-to-end neural network aimed at reconstructing compact and easy-to-edit CAD models in a self-supervised manner. Drawing inspiration from the modeling language that is most commonly used in modern CAD software, we propose to learn 2D sketches and 3D extrusion parameters from raw shapes, from which a set of extrusion cylinders can be generated by extruding each sketch from a 2D plane into a 3D body. By incorporating the Boolean operation (i.e., union), these cylinders can be combined to closely approximate the target geometry. We advocate the use of implicit fields for sketch representation, which allows for creating CAD variations by interpolating latent codes in the sketch latent space. Extensive experiments on both ABC and Fusion 360 datasets demonstrate the effectiveness of our method, and show superiority over state-of-the-art alternatives including the closely related method for supervised CAD reconstruction. We further apply our approach to CAD editing and single-view CAD reconstruction. The code is released at https://github.com/BunnySoCrazy/SECAD-Net.","url_abs":"https://arxiv.org/abs/2303.10613v1","url_pdf":"https://arxiv.org/pdf/2303.10613v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"secad-net-self-supervised-cad-reconstruction","repo_url":"https://github.com/bunnysocrazy/secad-net","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"cad-reconstruction","task_name":"CAD Reconstruction"}],"methods":[{"method_slug":"abc","method_name":"ABC"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/cad-reconstruction-on-deepcad","task":"CAD Reconstruction","dataset":"DeepCAD","model":"SECAD-Net","rank_in_archive_order":6,"of":11,"metrics":{"Camfer Distance (median)":"3.65","IoU":"72.9"},"uses_additional_data":false},{"leaderboard":"/sota/cad-reconstruction-on-fusion-360-gallery","task":"CAD Reconstruction","dataset":"Fusion 360 Gallery","model":"SECAD-Net","rank_in_archive_order":3,"of":11,"metrics":{"Chamfer Distance (median)":"4.32","IoU":"69.0"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.10613","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.10613"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/bunnysocrazy/secad-net","reach":null}],"summary":{"ran":1,"ran_fixture":1,"ran_draft_wrong":3,"unverified":3},"by_repo_kind":{"official":{"samples":8,"ran":5,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"dfb8ca849bc938df","entry":"SketchHead","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dfb8ca849bc938df"}},{"code_sha256_prefix":"47d5c549ba4246dd","entry":"add_latent","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"47d5c549ba4246dd"}},{"code_sha256_prefix":"bc4b1c0dfd5ef7d0","entry":"quaternion_apply","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bc4b1c0dfd5ef7d0"}},{"code_sha256_prefix":"569d14df01769cd6","entry":"quaternion_invert","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"569d14df01769cd6"}},{"code_sha256_prefix":"1d5fd671755bfef6","entry":"quaternion_raw_multiply","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1d5fd671755bfef6"}},{"code_sha256_prefix":"6770ca8e39d6a908","entry":"Generator","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6770ca8e39d6a908"}},{"code_sha256_prefix":"3eac1e69026534ee","entry":"sdfExtrusion","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3eac1e69026534ee"}},{"code_sha256_prefix":"d99f5fe17a529cb1","entry":"transform_points","repo":"bunnysocrazy/secad-net","repo_kind":"official","path":"model/network.py","file_url":"https://github.com/bunnysocrazy/secad-net/blob/HEAD/model/network.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d99f5fe17a529cb1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}