{"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/dtgbrepgen-a-novel-b-rep-generative-model","title":"DTGBrepGen: A Novel B-rep Generative Model through Decoupling Topology and Geometry","arxiv_id":"2503.13110","date":"2025-03-17","proceeding":"CVPR 2025 1","authors":["Jing Li","Yihang Fu","Falai Chen"],"abstract":"Boundary representation (B-rep) of geometric models is a fundamental format in Computer-Aided Design (CAD). However, automatically generating valid and high-quality B-rep models remains challenging due to the complex interdependence between the topology and geometry of the models. Existing methods tend to prioritize geometric representation while giving insufficient attention to topological constraints, making it difficult to maintain structural validity and geometric accuracy. In this paper, we propose DTGBrepGen, a novel topology-geometry decoupled framework for B-rep generation that explicitly addresses both aspects. Our approach first generates valid topological structures through a two-stage process that independently models edge-face and edge-vertex adjacency relationships. Subsequently, we employ Transformer-based diffusion models for sequential geometry generation, progressively generating vertex coordinates, followed by edge geometries and face geometries which are represented as B-splines. Extensive experiments on diverse CAD datasets show that DTGBrepGen significantly outperforms existing methods in both topological validity and geometric accuracy, achieving higher validity rates and producing more diverse and realistic B-reps. Our code is publicly available at https://github.com/jinli99/DTGBrepGen.","url_abs":"https://arxiv.org/abs/2503.13110v1","url_pdf":"https://arxiv.org/pdf/2503.13110v1.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":"dtgbrepgen-a-novel-b-rep-generative-model","repo_url":"https://github.com/jinli99/dtgbrepgen","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":null,"task_name":"valid"}],"methods":[{"method_slug":"attention","method_name":"Attention"},{"method_slug":"diffusion","method_name":"Diffusion"},{"method_slug":"softmax","method_name":"Softmax"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2503.13110","atlas_url":"https://app.syntology.ai/?focus=2503.13110","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2503.13110"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":"deterministic:regex_extraction","url":"https://github.com/jinli99/DTGBrepGen","reach":null}],"summary":{"ran":5,"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":8,"samples":[{"code_sha256_prefix":"5e14520196637973","entry":"Embedder","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5e14520196637973"}},{"code_sha256_prefix":"62dce3c7fcf2de8b","entry":"GAT","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"62dce3c7fcf2de8b"}},{"code_sha256_prefix":"e5f285c1c21f239b","entry":"MLP","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e5f285c1c21f239b"}},{"code_sha256_prefix":"c0de2db778b4069d","entry":"PointNet2SSG","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c0de2db778b4069d"}},{"code_sha256_prefix":"6e9243898dc7d4c3","entry":"PointSampling","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6e9243898dc7d4c3"}},{"code_sha256_prefix":"8edf96dae3fde589","entry":"BallQuery","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8edf96dae3fde589"}},{"code_sha256_prefix":"8c05cc84397e1652","entry":"FaceEdgeModel","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8c05cc84397e1652"}},{"code_sha256_prefix":"3efded30aa3ac086","entry":"SABlock","repo":"jinli99/DTGBrepGen","repo_kind":"official","path":"model.py","file_url":"https://github.com/jinli99/DTGBrepGen/blob/HEAD/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3efded30aa3ac086"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}