一种脚本化网格与边界表示双实现的三维建模方法与流程

摘要: 本技术涉及三维建模,具体涉及一种在脚本编程语言中提供网格与边界表示双实现的三维建模方法。背景技术:1、三维建模系统按几何表示可分为边界表示(boundaryre...
一种脚本化网格与边界表示双实现的三维建模方法与流程

本技术涉及三维建模,具体涉及一种在脚本编程语言中提供网格与边界表示双实现的三维建模方法。

背景技术:

1、三维建模系统按几何表示可分为边界表示(boundary representation,b-rep)与网格(mesh)表示两大类。本技术所称边界表示实体,指由边界表示几何内核维护、包含精确曲面定义与实体拓扑关系的几何对象;所称网格实体,指由顶点、边与三角面构成的离散几何对象。边界表示能够表达精确的曲面与实体拓扑,但网格类运算难以在边界表示上执行,例如隐式曲面采样建模、滚花与纹路顶点位移、曲面细分等操作;复杂拓扑布尔运算在边界表示上亦容易失败。网格表示的精度受细分度限制,无法精确导出step等b-rep格式的模型文件,面与边的引用在重算后不稳定,参数化编辑与装配困难。而实际建模需求往往在同一个场景、甚至同一条建模特征链上并存多类操作:先精确拉伸一个法兰,再在其表面做滚花;或导入一个step精确实体后,再用隐式建模挖一个内部水道;或将扫描点云重建为参数化模型。单一几何表示无法同时满足上述需求。

2、在脚本化建模与人工智能生成代码的建模场景中,几何操作以建模脚本中的语句为操作单元:脚本中的几何操作语句以函数调用形式表达建模意图,由代码执行引擎逐语句执行。该场景对执行路径的确定性要求远高于交互式建模:同一段脚本每次执行必须走同一路径,结果必须可复现、可缓存,人工智能改写任意语句的参数后其余语句的结果不得漂移。

3、针对上述问题,现有技术提出了若干混合方案,但均存在缺陷。第一种是工作台/工作流级分离方案,例如在freecad中以"零件设计工作台"与"网格工作台"分离两类操作,由用户手动切换并通过手动转换在网格与实体之间迁移。该方案路径选择依赖用户手工操作,不在同一个操作面上自动判定,混合特征链需要反复手工转换,无法支撑一条建模脚本链上多类操作交错的自动化建模。第二种是全局开关方案,整个文档或会话锁定一种几何表示。该方案无法逐对象混合:一个场景中部分零件需要精确导出、部分零件需要网格特效,全局开关只能二选一。

4、此外,还有一类方案将网格仅作为边界表示内核的三角化输出(预览层),网格不构成独立的建模操作:对象类型在创建时确定,网格只是边界表示的显示附属,无法在网格侧执行独立的建模操作,也无法按对象当前的表示状态在两类操作之间演化。

5、在混合表示与多内核领域,现有技术沿三个方向发展,但均未落入本技术的路径:第一类是单一内核内的数据结构融合,例如siemens parasolid的convergent modeling,其将facet mesh扩展为边界表示模型中的一种新的表面类型,形成统一的收敛体(convergent body),使传统边界表示操作可直接作用于网格体而无需转换;该类方案中网格面片内嵌于边界表示模型,对象本身不区分边界表示属性与网格属性,不存在逐对象的表示属性身份,也没有按输入对象表示属性逐语句分派的机制。第二类是编译期内核绑定与多内核适配映射,例如公开号为cn122365617a的中国专利文献公开的多内核几何对象与算法适配映射方法,其在系统编译或构建前由开发者从候选几何内核中选定一个目标内核,按该内核对应的预定义映射规则将其拓扑对象、几何对象、属性数据、精度数据与原生算法函数映射到平台统一拓扑表达和统一算法接口,运行期上层应用经统一接口建模、底层固定调用编译期已绑定的内核;该类方案跨多个同构边界表示内核做适配,运行期固定调用单一内核,既不在边界表示实现与网格实现两类表示之间分派,也不依据输入几何对象的表示属性在执行期逐语句判定。第三类是运行期由外部指定或按几何形状指标调度内核,例如中国图学学会《面向多内核兼容的几何建模接口规范》(中国图学学会团体标准,2026年8月31日公开征求意见,征求意见截止日期为2026年9月27日)所述上层业务在执行建模任务前由运行时或编译时管理模块指定目标内核并加载对应适配模块,又如部分cad系统由用户为特征选择默认内核、或依据曲率、厚度比等几何形状指标在多内核间调度;该类方案的分派主体为上层业务、用户或形状指标,切换粒度为多个同构边界表示内核,其判定依据不是输入几何对象是否携带边界表示实体。此外,部分现有技术以文档级或渲染级全局开关切换建模后端(例如openscad的预览与渲染双模式),非操作级判定,且无逐对象状态;隐式建模工具、点云逆向工具与参数化建模工具在现有技术中通常各自为独立工作流,数据在工具间以文件方式传递,缺乏在同一建模脚本中按统一分派机制承载边界表示、网格、隐式与点云逆向多种建模方式的方案。

6、在人工智能生成建模代码的场景中,上述路径决定方式进一步全部失灵:人工智能难以在生成代码时预知运行期失败,无法替用户完成手动切换,亦无法在编译期决定内核。若在生成的代码中显式编写路径分支或运行时兜底(例如捕获失败后改走网格路径),路径选择逻辑即与建模意图一同混杂于代码内容之中,导致结果随运行条件漂移、缓存实现复杂、代码耦合性高。本技术与此方向相反:脚本化与人工智能生成代码的建模要求路径决定与语句内容解耦——人工智能只负责表达建模意图(写哪些几何操作语句),代码内容不携带任何路径选择指令,每条几何操作语句走哪条路径由代码执行引擎在执行前按固定规则确定,本次执行时不再变更,且每条语句执行前均重新确定,无需在代码中编写路径分支或兜底。

7、因此,现有技术缺乏一种在同一操作面上、以单一执行链承载多类建模操作、执行前确定路径、各几何对象分别维护其表示属性、属性切换时刻确定性归约并通知功能模块、切换至多一次且由实现集保证成功、行为可预测可复现的执行机制。

技术实现思路

1、本技术要解决的技术问题是:如何在脚本化与人工智能生成代码的三维建模中,使边界表示建模、网格建模、隐式建模与点云逆向建模在同一条建模链上统一交错执行,并将每条几何操作语句的执行路径决定与语句内容解耦,由代码执行引擎在运行时的每次语句执行前按固定规则分派,保证行为确定、可复现。

2、为解决上述技术问题,本技术提供一种脚本化网格与边界表示双实现的三维建模方法。本技术中,几何操作以建模脚本中的语句为操作单元。本技术所称几何操作原语,指在库(标准库或第三方库)中定义、建模脚本中可以调用的几何函数,是表达建模意图的最小可调用单元,例如创建、变换、布尔、倒角、隐式采样、加载等,每个几何操作原语在其定义中声明实现集。本技术所称几何操作,指调用几何操作原语并产生几何对象的操作。本技术所称几何操作语句,指建模脚本中调用几何操作原语的语句,语句以函数调用形式引用被调用的几何操作原语并携带实参(例如"let b = union(a, c)"),由代码执行引擎逐条执行。原语、操作与语句的分工为:实现集的声明发生在几何操作原语的定义中(库侧),执行路径的确定发生在语句执行前(引擎侧),脚本语句只表达调用哪个几何操作原语、以什么参数调用,不声明实现集。由此,本技术的"几何操作"区别于以用户界面菜单或几何内核调用为操作单元的现有系统:操作内容由脚本语句确定,操作路径由代码执行引擎按固定规则确定。

3、上述执行路径的确定发生于代码执行引擎内部;所述代码执行引擎以语句为粒度执行建模脚本的机制属关联申请五《一种以代码文本为唯一接口契约的ai/ui协同建模系统》的执行引擎范畴,本技术不主张执行粒度;本技术主张的代码执行引擎行为仅限于依据执行模式、实现集与表示属性确定执行路径并完成表示属性切换。

4、本技术维护所述建模脚本的单一执行链:所述执行链由几何操作语句及几何操作语句的输入输出几何对象按依赖关系构成,多零件建模即由各零件的操作分支构成同一执行链。执行链上各几何对象分别具有表示属性,表示属性为边界表示属性或网格属性二者之一:几何对象携带边界表示实体时表示属性为边界表示属性,未携带边界表示实体时表示属性为网格属性;不存在全局表示属性标志,各几何对象的表示属性互不影响。对单个几何对象而言,其操作历史构成执行链上的一条分支链,表示属性沿该分支链连续:切换发生前该对象的表示属性始终为边界表示属性,切换发生后始终为网格属性,不存在来回跳变;表示属性至多发生一次由边界表示属性到网格属性的切换(切换点),切换后不再恢复边界表示。整条执行链为混合链:链上不同几何对象的表示属性可以不同,同一几何对象的表示属性在切换点前后可以不同,但切换至多一次。

5、在几何操作原语的定义中声明实现集,实现集包含网格实现与边界表示实现的存在性且至少包含一个实现,所述实现集固定于几何操作原语的定义,脚本中的几何操作语句不声明实现集。响应几何操作语句时,在执行该语句之前,依据执行模式、该语句所调用几何操作原语的实现集以及输入几何对象的表示属性,确定本次执行路径为边界表示路径或网格路径,本次执行时不再变更;每条几何操作语句执行前均重新依据执行模式、该语句所调用几何操作原语的实现集以及输入几何对象的表示属性进行确定。最后按确定的路径调用对应实现执行语句并输出几何对象:边界表示路径调用边界表示实现,产出携带边界表示实体、表示属性为边界表示属性的几何对象;网格路径调用网格实现,产出表示属性为网格属性的几何对象。当几何操作语句的执行导致输入几何对象的表示属性由边界表示属性切换为网格属性时(切换情形仅在自动模式发生),仅对表示属性为边界表示属性的输入几何对象执行网格归约,并将该几何对象的表示属性切换为网格属性,即切换;切换是对输入数据的规整而非错误回退。切换由实现集保证成功:每个几何操作原语的实现集包含至少一个实现,且实现集仅由网格实现与边界表示实现两类构成;自动模式下当语句需要切换至网格路径时(其调用几何操作原语仅声明网格实现,或输入几何对象的表示属性为网格属性),该几何操作原语已声明网格实现,网格路径存在可调用的实现,不因缺少实现而切换失败。

6、建模脚本由人工智能(ai)生成、由用户界面(ui)操作生成、或由两者共同生成:人工智能按需求生成几何操作语句序列,用户界面将交互操作转换为几何操作语句,两者均写入同一代码库并交由同一代码执行引擎执行。链的推动方为人工智能与用户界面——它们决定脚本中写哪些几何操作语句;链的走向由本方法固化于代码执行引擎的执行前分派规则中——每条语句走边界表示路径还是网格路径,在执行前依据执行模式、该语句所调用几何操作原语的实现集、输入几何对象的表示属性与所需能力确定,本次执行时不再变更,每条语句执行前均重新确定。人工智能生成的脚本语句不携带路径选择指令,也无法通过改写语句改变已固化的走向规则;人工智能改写任意语句后,路径确定规则保持恒定,表示属性依据改写后的语句重新确定。

7、在一种实施方式中,执行模式包括自动模式、边界表示强制模式与网格强制模式。自动模式下优先边界表示路径,当边界表示实现缺失、输入几何对象的表示属性为网格属性或所需能力缺失时,改走网格路径;边界表示强制模式下,不支持的情形明确报错且不自动切换;网格强制模式下所有操作走网格路径。由此,路径确定在执行前完成、执行中不再变更,结果可复现。

8、在一种实施方式中,各几何对象分别具有表示属性:几何对象的表示属性由该对象是否携带边界表示实体唯一决定,不存在全局表示属性标志,各几何对象的表示属性互不影响。由此,一个对象因网格类操作切换为网格属性,不影响同一执行链上其他对象继续走边界表示路径,混合场景天然成立,无需任何全局开关。

9、在一种实施方式中,实现集以声明方式提供:几何操作原语在定义时通过声明式接口声明网格实现与边界表示实现的存在性,由代码执行引擎统一分派,实现方不编写分派逻辑;实现集包含仅网格实现、仅边界表示实现与两者并存三类。由此,库作者只声明实现集,分派规则在代码执行引擎单点维护,第三方库零散判定被杜绝。

10、在一种实施方式中,几何操作原语在其定义中声明所需能力,所述所需能力指边界表示实现所支持的几何操作能力,包括面演化、修复、直接编辑、高级曲面与装配中的至少一种;代码执行引擎在分派前查询边界表示实现的能力集,所需能力缺失时,自动模式改走网格路径,边界表示强制模式报错,不伪造缺失能力。

11、在一种实施方式中,在执行模式为自动模式时,切换的情形包括:语句所调用的几何操作原语仅声明网格实现、输入几何对象中存在表示属性为网格属性的对象;切换时刻仅对表示属性为边界表示属性的输入几何对象执行网格归约(顶点焊接、删除退化面、统一朝向与二流形断言中的至少一种),表示属性为网格属性的输入几何对象原样透传;切换为永久性,不再恢复边界表示。边界表示强制模式下,上述情形明确报错,不发生切换;网格强制模式下,所有操作自始走网格路径,不存在切换。由此,切换是对输入数据的规整而非错误回退,全边界表示或全网格场景行为不变。

12、在一种实施方式中,当几何操作语句具有几何输入、全部输入几何对象的表示属性均为边界表示属性而输出几何对象的表示属性为网格属性时,由代码执行引擎统一发出事件通知,通知包含对象标识、调用方与切换原因,使功能模块能够感知精度丢失并响应。

13、在一种实施方式中,几何对象的表示属性在创建或加载时确定:创建语句以空输入执行且所调用几何操作原语声明有边界表示实现时自动判定表示属性为边界表示属性;加载语句按源数据格式确定表示属性,源数据格式为b-rep格式(step/stp等)时表示属性为边界表示属性,源数据格式为mesh格式(stl/obj/3mf等)或点云格式(ply/xyz/las等)时表示属性为网格属性,网格强制模式下加载语句走网格路径、产物为网格属性;确定依据格式提示或源数据文件名扩展名,格式提示优先于扩展名。由此,导入路径同样在执行前确定,与操作路径确定一致。

14、在一种实施方式中,隐式建模通过符号距离函数定义几何并对几何采样生成网格,隐式建模原语声明网格实现,产物表示属性为网格属性。由此,隐式建模作为网格侧的生成型几何操作统一接入执行链。

15、在一种实施方式中,点云逆向建模中,点云格式经加载语句确定为网格属性,在网格侧完成去噪、配准与网格重建,产物表示属性为网格属性,后续操作沿网格路径执行。

16、在一种实施方式中,表示属性为边界表示属性的几何对象的显示数据由该几何对象携带的边界表示实体自身派生,显示数据的派生与表示属性为网格属性的几何对象无关。由此,边界表示侧与网格侧各自按各自的表示能力显示,网格侧不承担边界表示的显示附属职能。

17、在一种实施方式中,边界表示路径执行的布尔操作与变换操作记录输入面到输出面的面演化映射,面演化映射随几何对象逐对象维护,供面引用的稳定性验证与面迁移使用。

18、在一种实施方式中,表示属性为边界表示属性的几何对象携带局部坐标系偏移,几何操作语句在世界坐标系下执行时,按偏移将世界坐标转换为局部坐标后再执行操作,保证切换前操作在正确坐标系执行。

19、本技术与现有技术相比至少具有以下区别:与第一类内核内融合方案(例如convergent modeling)相比,本技术不将网格内嵌为边界表示模型的一种面类型,而是保留边界表示实现与网格实现两类相互独立的实现,每个几何对象在身份槽中明确登记其表示属性,代码执行引擎按该属性分派至对应实现;与第二类编译期内核绑定方案(例如cn122365617a)相比,本技术不在编译或构建期由开发者固定绑定单一几何内核,而是在每条几何操作语句执行前,由代码执行引擎依据执行模式、该语句所调用几何操作原语的实现集与输入几何对象的表示属性,在边界表示路径与网格路径之间逐语句判定,本次执行不再变更;与第三类运行期外部指定或形状指标调度方案相比,本技术的分派主体是代码执行引擎而非上层业务或用户,判定依据是输入几何对象是否携带边界表示实体,而非用户选择或曲率、厚度比等形状指标;与文档级或渲染级全局开关方案相比,本技术的表示属性逐对象维护,同一执行链上不同对象可处于不同表示属性;此外,单个几何对象的表示属性至多发生一次由边界表示属性到网格属性的切换,且切换后不再恢复;几何操作语句不携带路径选择指令,路径决定与语句内容解耦,执行路径在执行前确定、执行中不变,结果确定、可复现,改写任意语句后路径确定规则保持恒定。

20、有益效果:第一,一条脚本链上同时承载精确边界表示操作与网格操作,混合建模需求在同一操作面上完成;第二,逐对象表示属性使精度与性能按对象分配,无需全局开关;第三,执行前确定路径使结果确定、可复现,人工智能改写后规则恒定;第四,切换时刻确定性归约并通知功能模块,精度丢失显式可控;第五,切换至多一次且永久,避免反复转换;第六,实现集声明与能力路由使新增实现不影响既有语句的分派规则;第七,同一脚本可在不同几何实现上执行,路径由各实现能力决定。