I1-02 参数化/关联设计与设计变更管理
课程代码 I1-02 · 板块 I 结构设计与工程化 / 结构设计流程与 CAD 时长 约 3.5 小时(7 讲) 前置 I1-01 热管理零部件正向结构设计流程;体系外前置(需自备):三维 CAD 参数化建模操作基础 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 I1-02 大纲的完整展开版
引言:一键更新跑完的那一刻,变更才走完一半
同一个零件交给两个人各建一遍,外形可以做得一模一样,命运却完全不同。接口一改,一个人改一个顶层参数,让位关系、安装孔位、密封面一路跟着更新,装配打开不报错;另一个人的特征树从上游开始变红,红叉一路铺到底,最后发现修比重画还慢。差距不在谁的软件更熟、谁点得更快——它在建模那一天就定下来了:设计意图有没有被编进模型里,以及每一个特征到底建在什么东西上。
但只讲到这里,这门课就只做了一半。模型改得动,不等于改动管得住。改完的这一版算第几版、谁批准它改、和它一起被冻住的还有哪些图纸与文件、供应商手里那一份跟不跟着换——这些问题一个都不在 CAD 里,它们在变更流程与技术状态管理里。这两半在多数公司分属两拨人,而本课要说的第一句话就是:它们是同一张依赖图的两面。你建模时画下的每一条父子引用、每一条跨零件的关联边界,将来都会出现在某一张变更单的账上。
本课按这条线走七讲:第 1 讲讲参数化建模——把功能面、装配接口与工艺约束编成尺寸、约束与关系式,并把「树为什么会崩」拆成可以逐条排查的失效模式;第 2 讲讲自顶向下与关联设计——骨架/主模型怎么把接口从零件里提出来、单向发布给下游,关联该做到多深、边界该切在哪;第 3 讲讲设计表与系列化——怎么把一族变型压进一张主模型,以及什么时候不该硬压;第 4 讲讲 ECR→ECN 的变更闭环与变更影响分析;第 5 讲讲技术状态管理——版本、生命周期状态、配置基线、生效范围,以及 PLM 里的检入检出;第 6 讲讲中性格式的能力边界——什么传得过去、什么传不过去;第 7 讲讲交付与收件——IGES 与轻量化件各自的用法与红线、双发件怎么对版本,最后把变更纪律接回设计门控。
先说本课不管什么,省得你在这里找一份找不到的东西。本课讲机理,不讲某一款软件的菜单与操作——骨架与发布几何这套机制在几家主流 CAD 里名字各不相同,机理却是同一套;把课绑在某个版本的操作路径上,换软件时整门课就作废(本课默认你已经会用某一款三维 CAD 做参数化建模)。另有几件事各有属主,本课只写去向、不重讲:量产阶段的 4M 变更申报、再验证范围判定与量产断点切换见 M2-06 量产阶段变更控制:4M 变更申报、再验证范围判定与量产断点切换;平台边界怎么切、沿用率与摊薄成本怎么算见 I1-03 面向平台化的结构设计方法;GD&T 怎么标、公差链怎么算见 I5-02 GD&T 与公差分析在热管理中的应用;收件方拿到数模之后怎么验收、怎么退回见 J2-06 整车/机舱 CFD 前处理:从脏数模到可算网格(数模验收·删简·包面·计算域抽取);几何版本怎么绑进一次仿真的可复现集见 J7-07 仿真任务的输入、交付与模型资产管理;一次变更该触发哪些验证项回归见 B1-05 基于 V 模型的热管理正向开发流程;需求条目本身怎么双向追溯见 M1-04 需求管理与追溯(DOORS 等)。本课的起点接在 I1-01 热管理零部件正向结构设计流程 上——每一道设计门交什么、卡什么在那门课,门后的改动怎么受控地走,在这门课。⚠ 这不是一份完整的去向表,完整的上下游关系以「小结与课程衔接」一节为准。
钉子一:CAD 关联管的是几何再生,不替代任何一项工程校核。「改一个参数、下游自动更新」这句话之所以让人踏实,是因为它把一件很累的事自动化掉了;但它自动化掉的只是前半段。它交付的终点叫「数模一致」——该重算的特征都重算了,该让位的零件都让开了,装配打开不报错。而一次变更真正要走到的终点叫「变更可放行」——这一档改动在工程上还成不成立,它把哪些性能、验证、工装与售后对象拖下了水,哪些验证项要回过头重做。后半段一件也没被自动化掉,只能由人一类一类地过。两个终点长得很像,代价却完全不同:只走完前半段就把变更发出去,等于让一个没被验证过的改动上车,而所有人手里的数模都对得上、看起来一切正常。本课的典型案例就是这样一次改动的完整账:一个厚度参数改下去,几何部分自动跑完,后面还排着几道只能由人判的闸。
顺着这根钉子,本课有一处最容易被读反的判断,位置就在「自动重生成的那一批」与「受这次变更影响的那一批」之间。两者在中文里几乎同义,而且前者一键就列得出来、看上去又权威又完整,后者要靠人一类一类地想——于是很容易被当成同一件事。读反的代价不是漏掉一两条,而是整整一类不出现,可单子看起来是完整的。这一条第 2 讲末先点破一句,第 4 讲用两张图正式拆开,典型案例给出物证,常见误区收口。⚠ 在那之前,请先按「这两批东西未必是一回事」来读前两讲,⛔ 不要提前把它们画等号。
钉子二:参数化建模与变更管理是同一张依赖图的两面。变更的代价可以写成一条定性关系——变更代价 ∝ 影响件数 × 阶段放大系数:波及的对象越多越贵,发现得越晚越贵。它只用来比较两个方案的相对代价、以及回答「早改还是晚改」,⛔ 不用来算绝对金额。要害是这两个乘数必须分开压:关联设计压小的是第一个乘数里的「更新工作量」——同样波及一批件,从前要手工改一遍,现在自动重生成——但它一件也没有减少受影响的件数本身。真正压小影响件数的,是接口切得干不干净、耦合度设计得合不合适。所以「整车一张大骨架」不是关联做得好,是把账单做大了:一处崩全线崩,一次改动惊动所有人。⚠ 阶段放大系数是平台相关量,取决于本企业的阶段划分,以及工装、验证、在手件这三类沉没成本的解锁节奏,须由本企业的变更成本台账统计确定,⛔ 本课不给数;流传很广的「1:10:100」是一句便于记忆的口诀,不是可以代入的系数,本课既然不给它单点值,也就 ⛔ 不拿它做任何倍数或数量级比较。
学完这门课,你应该建立三个判断,并且交得出五样东西。三个判断是:一个模型改不改得动,看它的特征引用了什么,不看它画得像不像;关联该做到多深是一个要设计的取舍,两端都不是最优;一次变更放不放得行,不由数模一不一致来决定。五样东西是:一套骨架驱动、改一处下游自动更新的关联数模;一棵每个特征都说得清「它建在什么上」的特征树;一张能把一族变型压进一张主模型、改主模型即批量刷新的设计表;一张影响面逐类过完、且「几何一点没变但照样受影响」那一栏不是空的变更单,以及随它一起锁定的新配置基线;还有一份把「交付什么」与「不交付什么」并列写清的中性件交付约定。
第 1 讲 参数化建模:交付的是生成规则,不是一个形状
两个人可以交出外形完全一样的数模,而它们的价值差着一整个项目周期:一个只能拿去出图、看外观、做干涉检查,另一个能被下一轮改动直接驱动。差别不在形状上,在模型里有没有把设计意图编进去,以及编进去的那一套关系将来改不改得动。这一讲按四层往下走:先说清参数化建模的交付物到底是什么、用什么动作验收(1.1),再把「设计意图」拆成九条互不相同的承载通道,看清只盯尺寸会漏掉哪几类(1.2);然后进入关系层,分清驱动尺寸与从动尺寸、划出关系式的适用边界(1.3、1.4);最后落到特征树上,讲健壮性由什么决定(1.5)、崩掉时有哪十类失效模式(1.6)、建模顺序该怎么排(1.7),并用草图这一层的三态判据收口(1.8)。
1.1 参数化建模的交付物不是一个形状,是一套改得动的意图
是什么。参数化建模这个动作,做的是把设计意图——功能面在哪、装配接口怎么定、工艺上有哪些不能碰的约束——编码成尺寸、约束与关系式的组合。⇒ 模型交付的不是「这一次算出来的那个形状」,而是一套生成规则:给它一组输入,它按规则生成一个形状;换一组输入,它按同一套规则生成另一个。形状只是规则在某一组输入下的一次取值。
为什么这个区分是硬的。没有把意图编进去的模型只有一次性价值。它今天看起来和参数化模型没有任何差别——同样能出图、同样能测量、同样能做干涉检查;差别只在被要求改的那一刻显形:它只能重画。而重画出来的东西,没有任何机制能证明它还满足原来那些接口约束——原来的意图从来没有被写下来,只活在画它的那个人的记忆里,而那个人可能已经换了岗。⇒ 所以参数化模型的验收判据不是「看起来像不像」,而是一个动作:换一组输入,能不能重新生成一个仍然正确的形状。
工程量级。⛔ 一个零件该有多少个特征、开放多少个参数、树该有多深,全部取决于零件复杂度与本企业的建模规范,属平台相关量,本课不给数,也不给任何「特征数越少越好」之类的指标。本课在这一层交付的是判据与动作,不是数值。
易错点。把「画得像」当成「建得对」。最常见的表现是模型评审:一屋子人围着屏幕转着看外形、量几个关键尺寸,从头到尾没有人做一次「改一个顶层参数、再生成一遍」的动作。而这个动作恰恰是唯一能验收「意图有没有编进去」的动作——转着看外形只验收得了那个「一次取值」,验收不了生成规则本身。
1.2 设计意图有九条承载通道:只沿「尺寸」数,必漏「这个特征引用了谁」
是什么。「把意图编进模型」这句话里的编码通道,不止尺寸一条。把它们完整摆出来是九类(⚠ 这九类是本课归纳的,⛔ 不是任何标准里的既有分类,也不是哪一款软件文档里的现成清单,引用时请说明出处):
| # | 承载通道 | 属性 | 它承载的是什么意图 |
|---|---|---|---|
| ① | 尺寸(驱动尺寸与从动尺寸) | 数值型 | 「这个量取多少」 |
| ② | 草图内的几何约束(相切、共线、对称、水平/竖直、相等) | 数值型 | 「形状在改动中保持什么不变」 |
| ③ | 装配约束/配合与坐标系约束 | 数值型 | 零件之间的相对位置与自由度 |
| ④ | 关系式与逻辑表达式 | 数值型 | 「这个量由哪几个量算出来」 |
| ⑤ | 特征创建顺序与这个特征引用了谁 | 关系型 | 谁依赖谁、改动沿什么路径传播 |
| ⑥ | 参考基准(基准面/轴/坐标系)与直接引用模型面/边的差别 | 关系型 | 引用挂在稳定的东西上,还是挂在会变的东西上 |
| ⑦ | 跨零件的发布几何/复制几何通道 | 关系型 | 接口意图怎么合法地送出零件边界(第 2 讲展开) |
| ⑧ | 抑制状态与配置项 | 关系型 | 「这一版有没有这个特征」(第 3 讲展开) |
| ⑨ | 非几何属性(材料、质量属性、PMI 标注、元数据) | 关系型 | 不改形状、但下游要用的那部分意图 |
为什么必须先画全集。沿「尺寸」这一条线索往下数,是最自然的走法——尺寸最显眼、最好检查、评审时最容易被问到。但只沿这一条线数,漏掉的不会以「少了一条」的形式暴露,而是整类不出现:⑤ 与 ⑥ 根本不在「尺寸」这条线索上,它们不是「取值多少」的问题,是「挂在谁身上」的问题。⇒ 建全集的两问要逐个答出来:① 我是沿什么线索数出来的?(尺寸)② 有没有不在这条线索上、但同样承载设计意图的东西?(有,就是后五类。)九类里前四类是数值型,后五类是关系型——而决定模型改不改得动的是后五类,1.5 到 1.7 讲的全部是它们。
工程量级。⛔ 不给数。九类里每一类在某个具体零件上用到几处,取决于零件本身与建模规范,本课不给任何数量指标。
易错点。企业的建模规范只写「尺寸要有工程意义、不许出现无意义的小数」,不写「不许直接引用模型的面与边」。于是全公司的模型都建在脆弱的引用上,而没有任何一条规则被违反过——规范只覆盖了第 ① 类,把后五类整个漏在了规则之外。
射程。①~⑧ 在本课射程内。⑨ 里的 PMI 标注与公差属性,本课只讲一件事——它们在跨软件交付时传不传得过去(第 6 讲);⛔ 公差怎么标、公差链怎么算、基准体系怎么建,不在本课射程,去 I5-02 GD&T 与公差分析在热管理中的应用。
1.3 驱动尺寸是输入、从动尺寸是结果——从动尺寸被手改一次,那条关系式就永久失效
是什么。参数化模型里的尺寸有两种身份,⛔ 不许混着用:
d_j = f(d_1 … d_n, 约束)
式子右边的 d_1…d_n 是驱动尺寸,是人给的输入;左边的 d_j 是从动尺寸,由关系式与约束算出来,是结果。这两种身份必须在模型里能被一眼分开——改名前缀、参数表分组、显示颜色,三种做法任选一种,但全项目必须统一一种,⛔ 不许一个人一种。
为什么手改从动尺寸是不可逆的。从动尺寸被人直接输入一个数的那一刻,模型当场看起来完全正常:形状是对的、尺寸正好是想要的那个值、树上一片绿。但那条关系式已经被解除或被这个手输值覆盖了——下一次改驱动尺寸时,它不再跟着走。而这件事在多数 CAD 里不会触发任何报错:一个被手改过的从动尺寸和一个正常的驱动尺寸,在参数表里长得一模一样。⇒ 丢掉的不是这一次的形状,是这个模型「改得动」这个属性本身,而且丢掉的那一刻没有留下任何痕迹。
工程量级。⛔ 不给数。一个零件该开放几个驱动尺寸、从动尺寸占多大比例,取决于零件与建模规范,本课不给任何比例或数量。
易错点。两个形态,第二个更隐蔽:① 评审时问一句「这个尺寸是谁定的」,答不上来——说明这个模型里驱动与从动的身份从来没有被声明过;② 同一个接口尺寸,被两个人各自写成了自己零件里的驱动尺寸,于是同一个量有了两个源。它们此刻相等只是巧合,而不相等的时候,没有任何机制会报错。第 2 讲会给出这一条的正解(把它提到骨架上去,只留一个源)。
1.4 关系式的适用边界只有三条:单向、无环、可解
是什么。d_j = f(d_1 … d_n, 约束) 这条式子能用,前提是三件事同时成立:单向(谁算谁是定死的)、无环(全部变量之间构成有向无环图)、可解(每个从动量在给定驱动值下有唯一解)。三条缺一条,这套关系就不再是一套确定的生成规则。
为什么有环就不成立。有环意味着无法定序——求解器不知道该先算谁。此时结果依赖求解器的遍历顺序,而遍历顺序是软件的内部实现细节:同一个模型在不同机器、不同软件版本、甚至不同的打开顺序下,可能生成不同的形状。⚠ 更麻烦的是,有的 CAD 会接受这样一对关系式并静默取一个不动点,不报任何错——于是你得到一个能打开、能出图、但结果不可复现的模型。
工程量级。⛔ 不给数;这三条里没有一条是经验值。「无环」与「可解」都是布尔判据:要么成立要么不成立,不存在「环少一点比较好」这种说法。
易错点。两个:① 写下 A = B + 1 与 B = A − 1 这样一对互推的关系式,自己看着觉得「它们是自洽的」——自洽不等于可定序;② 拿一个已经声明「只由上游算出」的从动量去反算上游参数。第二个更常见,因为它在算术上永远能算:式子两边移项谁都会。但那个量的身份是「结果」,⛔ 它不能被拿回去当输入用,否则模型里就同时存在两条方向相反的依赖——那正是环的一种。
1.5 特征树的健壮性由「引用了什么」决定,不由「特征有多少」决定
是什么。树上每一个特征,都要能答出一句话:我建在什么上。答案分两类——建在基准(基准面、基准轴、坐标系)上,或者建在模型的面与边上。前者健壮,后者脆弱,因为基准不随形状变化而漂移,模型的面和边会。
为什么脆弱引用比报错更危险。这里的机理是拓扑命名(topological naming):模型重生成之后,面与边的内部标识可能发生漂移,原来挂在某个面上的引用会挂到另一个面上。⚠ 关键在于——它不一定报错。报错至少是个信号,你会去修;而挂错之后静默生成一个错的形状,模型是绿的、树是干净的、出的图是完整的,错误一路走到下游才被发现。⇒「不报错」不等于「没出问题」,这两句在参数化模型里不是同一件事。
工程量级。⛔ 不给数。⚠ 尤其不要用「特征数」当健壮性指标——健壮与脆弱是可以逐条判定的二分(这个特征引用的是基准还是模型面),不是一个可以打分排名的连续量;一棵特征很少的树,完全可能条条都是脆弱引用。
易错点。两条都很流行:① 用「特征数少=树干净=健壮」做评价标准,于是有人为了让树好看,把本该分开的特征合并、把本该建在基准上的东西直接搭在现成的模型面上;② 把「重生成没报错」当成验收通过。正确的验收动作还是 1.1 那一个:改一个顶层参数、再生成一遍,看形状对不对——而不是看树红不红。
1.6 特征树崩掉有十类失效模式:只查约束,必漏拓扑命名漂移与外部引用失效
是什么。「特征树崩了」不是一种故障,是十类(⚠ 这个十类归纳同样是本课整理的,⛔ 不是既有分类):
| # | 失效模式 | 发生位置 |
|---|---|---|
| ① | 父子引用丢失:被引用的面/边被后续特征改掉或删除 | 单零件内 |
| ② | 拓扑命名不稳:重生成后面与边的内部标识漂移,引用挂到别的面上,且不一定报错 | 单零件内 |
| ③ | 草图欠约束 | 单零件内 |
| ④ | 草图过约束、约束冲突 | 单零件内 |
| ⑤ | 建模顺序不合理:工艺特征在前、主形体在后 | 单零件内 |
| ⑥ | 圆角/倒角吃掉了被后续特征引用的边 | 单零件内 |
| ⑦ | 外部引用失效:发布几何被改名、被删、引用路径断 | 跨零件 |
| ⑧ | 关系式循环引用 | 单零件内 |
| ⑨ | 某个配置行/抑制组合下无解的再生失败 | 只在特定配置下 |
| ⑩ | 单位与容差的边界情况 | 单零件内 |
为什么不能只查约束。沿「约束加够没有」这条线索去查,能查到的只有 ③ 和 ④。而 ② 与 ⑦ 是最难缠的两类,它们不在这条线索上:② 的特征是静默(不报错,直接给你一个错形状),⑦ 的特征是发生在别人手里(你的零件一个字没动,上游被改名了)。⇒ 三种发生位置完全不同,查法也就不同:单零件内的靠强制重生成全树逐条看,跨零件的靠检查外部引用还有效没有,只在特定配置下出现的那一类,必须把配置一行一行走一遍才会暴露(第 3 讲会讲到这一点)。
工程量级。⛔ 不给数。但这里有一个可执行的固定动作:强制重生成一次全树,把错误清单逐条看完——而不是等下次打开时它自己报出来。
易错点。把排错做成「哪个特征红了就修哪个」,并且从最下游往上修。这样修到一半就会发现根因在上游第三个特征上,前面修的全白修;更糟的是,为了消掉下游的红色,往树上加的那几个补丁特征会留下来,成为下一轮的新脆弱点。⇒ 正确顺序是从最上游的那个红色节点开始:上游一修好,下游多数红色会自己消失。
1.7 建模顺序:主形体在前、工艺特征在后——会变的量不许待在被引用的位置上
是什么。树按三段排,段内再按依赖排序:主形体 → 功能特征 → 工艺特征。工艺特征指圆角、倒角、拔模、抽壳这一类由制造工艺决定、而且会改变边与面的特征。
为什么顺序不是习惯问题。工艺特征会吃掉边与面。一条被圆角吃掉的边,在圆角之后就不存在了——后续特征只能引用「被吃掉之后」的那套拓扑,而这套拓扑是随圆角半径变的。⇒ 半径一改,被引用的对象直接消失,后面挂在它上面的特征成片失败。这正是 1.5 那条判据在顺序层的推论:不要把「后面还要变的量」放在被引用的位置上。
工程量级。⛔ 不给数。三段怎么切、每段里放几个特征,取决于零件与本企业的建模规范,本课只交付这个排序判据本身。
易错点。两个方向相反的错:① 先倒圆角再拉伸——圆角吃掉了后面要引用的那条边;② 把「装配孔」这类会随接口变化的特征做在主形体的最前面,于是接口一改,主形体连同后面挂着的一切一起作废。判断某个特征该排在前还是排在后,问一句就够:它将来会不会变?会变的往后放;要被别人引用的往前放。两条要求撞在一起的时候(既会变、又要被引用),说明这个东西根本不该留在零件里——它是接口,该提到骨架上去,那是第 2 讲的内容。
把这棵树翻译成父子依赖的有向图之后,还能顺手读出一件将来要反复用到的事:改一个参数之后,直接或间接引用了它的那一片下游节点,就是这次改动要重算几何的范围——本课统一把它叫作更新集,图 1 上那块浅底色区就是它。⚠ 这里先记住它只回答一个问题:哪些特征的几何要重算。它的正式定义在第 2 讲,它管得了什么、管不了什么在第 4 讲。另外,本课全课统一一种画法:有向边的箭头由引用方指向被引用方(另一种画法箭头相反,⛔ 本课不用);⚠ 既然箭头这样画,更新集就落在箭头的来向一侧——要找的是「谁引用了被改节点」,⛔ 不是「从被改节点顺着箭头能走到谁」,后者走到的是被改节点自己依赖的那些上游基准。
1.8 草图约束三态:欠约束、全约束、过约束——两头都要命
是什么。草图的状态由自由度 DOF 判,不由眼睛判,三态各有判据:DOF 大于 0 是欠约束;DOF 等于 0 是全约束,这是唯一可控的状态;约束冗余且互相矛盾时求解器报冲突,即过约束。
为什么两头都要命,而且要命的方式相反。欠约束的草图没有唯一解——重生成时求解器完全可能落到另一个解上,表现就是尺寸乱跳、改一处动全形,而且改动的传播方向不可预测。过约束正相反:约束互相矛盾,草图连合法的改动都被拒绝,你想把一个尺寸改成一个完全合理的值,软件直接报冲突。⇒ 一个是「改了不知道会变成什么」,一个是「根本改不了」,两种失败的症状完全不同,但根因在同一件事上:约束这一层没有被当成设计意图来写。
工程量级。DOF 是由草图实体数与独立约束数算出来的整数,可判可数,不是经验值——这是本讲少数几个能直接算出确定答案的判据之一。⛔ 但「一张草图该有几个实体、该有几个尺寸」是平台相关量,取决于零件与本企业的建模规范,本课不给数。
易错点。① 用「看起来对」代替 DOF 等于 0——草图在屏幕上摆得很正,不代表它被约束住了,它只是此刻停在那个位置;② 为了把欠约束消掉而乱加固定约束,把草图钉死在绝对坐标上。⛔ 这是假的全约束:DOF 确实变成了 0,但它是被钉在坐标系上,而不是被约束在设计意图上——上游一动(第 2 讲的骨架一动就是这种情况),这些固定约束立刻和新的位置打架,整张草图报冲突。⇒ 消欠约束的正确做法是补有工程含义的约束与尺寸,不是补固定。
⇒ 这一讲从头到尾在讲同一件事:你建模时每画下一条引用,就是在画一张依赖图。树的顺序、每个特征引用了谁、哪些引用挂在基准上而哪些挂在模型面上——这三件事共同决定了这张图的形状。这张图不是软件替你选的,是你一笔一笔画出来的;而它决定的也不只是「今天这个模型崩不崩」。第 2 讲把这张图从一个零件扩到一组零件,第 4 讲会回来算这张图的账。
后面还有 6 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做