Revit插件安装与平法钢筋算量:建模大师挂载排错指南

发布时间:2026/11/3 17:08:20
Revit插件安装与平法钢筋算量:建模大师挂载排错指南

上个月有个做造价的同行半夜发消息过来,就一句话:建模大师怎么安装到 Revit 里,我装了三遍,功能区干干净净,连个影子都没有。这大概是所有想把 Revit 当成算量工具用的人都绕不过去的第一道坎——插件装不上,后面谈什么钢筋平法计算都是空话。我这些年在这条路上来回折腾,从最早手动改配置文件,到后来帮人排查各种“装了没反应”的玄学问题,攒下来的东西足够写一篇长文。这篇就干两件事:把建模这类插件挂进 Revit 的完整链路拆开讲透,从 addin 清单文件到加载项目录到运行库依赖,一个环节一个环节过;再把“让 Revit 拥有造价人员习惯的钢筋平法计算”这件事的底层逻辑讲清楚,包括平法到底在算什么、Revit 原生钢筋能力的边界在哪、插件是怎么把图集规则翻译成钢筋实体的。不管你是刚接触 BIM 算量的造价新人,还是已经能建模但出量总觉得对不上账的老手,下面这些内容应该都能直接用上。

1. 从“功能区里什么都没有”说起:Revit 插件的加载机制

绝大多数人装插件失败,根本原因不是安装包有问题,而是压根不知道 Revit 是怎么“发现”一个插件的。脑子里默认的模型是“装了就有”,实际模型是“Revit 启动时按固定路径扫一遍清单文件,扫到才加载”。搞不清这一点,后面的操作全是瞎试。

1.1 .addin 清单文件到底写了什么

Revit 不认识 exe,也不认识快捷方式,它只认一种东西:扩展名为.addin的 XML 清单文件。这个文件本质上就是一张名片,告诉 Revit “我这儿有个程序集,里面有个类实现了入口接口,你启动的时候顺手把它叫起来”。名片上的关键字段就那么几个,写错一个,加载就断。

<?xml version="1.0" encoding="utf-8"?> <RevitAddIns> <AddIn Type="Application"> <Name>ModelMaster</Name> <Assembly>ModelMaster\ModelMaster.dll</Assembly> <AddInId>9A7F3C21-5B4E-4C8D-9E1A-6F2D8B3C4A57</AddInId> <FullClassName>ModelMaster.AppStartup</FullClassName> <VendorId>MM</VendorId> <VendorDescription>Model Master Plugin</VendorDescription> </AddIn> </RevitAddIns>

逐条解释一下,这些字段没有一个是摆设。Type="Application"表示这是一个随 Revit 启动一起加载的应用级插件,功能区选项卡就是靠它加的;如果是Type="Command",那就只注册一个外部命令,不会在功能区留位置。Assembly指向 dll 的实际位置,这里我故意写成相对路径,好处是将来换机器、换盘符不用重新改文件——Revit 会以 addin 文件自身所在目录为基准去找。AddInId是一个 GUID,全局唯一,重复了会出诡异问题,所以千万别图省事从别人的文件里复制粘贴。FullClassName必须精确到命名空间和类名,大小写都不能错,这是最容易被手误改坏的一行。

还有一个常被忽略的点:文件编码。用记事本另存为的时候如果选了 ANSI,中文路径或者某些字符会乱码,Revit 解析 XML 直接失败,表现出来就是“文件明明在那儿,就是不加载”。养成习惯,一律 UTF-8 无 BOM。

提示:一个.addin文件里可以写多个<AddIn>节点,把同一套插件的不同功能模块合并进去,比散落一堆小文件好管理得多。

1.2 两个加载项目录:用户级和机器级

清单文件写对了,还得放对地方。Revit 扫描的是两个固定目录,按年份版本分子文件夹:

目录层级典型位置生效范围适用场景
用户级%appdata%\…\Revit\Addins\2023\仅当前登录账户个人机器、调试阶段
机器级C:\ProgramData\…\Revit\Addins\2023\本机所有账户团队统一部署、公用工作站

路径中间那段带厂商名的目录,各版本命名一致,你在资源管理器地址栏敲%appdata%回车,找那个名字里带 Revit 的文件夹进去就能看到。ProgramData是隐藏目录,需要先打开“显示隐藏项目”。

这里有个实操经验值得说:调试阶段一律放用户级目录,因为改完文件重启 Revit 就生效,不用管理员权限;等确认没问题了再往机器级目录挪,做统一分发。我见过有人直接往机器级目录里塞,结果文件写入被系统拦了,只写进去一半,addin 文件是残缺的 XML,Revit 静默跳过,人还以为是插件本身有毛病,白白折腾一下午。

另外,年份文件夹必须手动建。Revit 不会帮你创建Addins\2023这个目录,目录不存在它扫都懒得扫。

1.3 版本号是硬门槛,不是建议

这是踩得最深的一个坑。Revit 每个大版本之间的 API 都有变动,插件 dll 是针对特定年份编译的,2019 的包扔进 2023 里,加载阶段就会抛异常。更麻烦的是近两年的变化:从某个大版本开始,运行环境从 .NET Framework 迁移到了 .NET,编译目标完全变了,老插件在新版上根本跑不起来,表现就是启动时报一条含糊的加载错误,日志里才看得出是框架不匹配。

判断方法很简单,看安装包文件名,正规的包一定会标明适配年份,比如“For 2020-2024”这种范围写法。如果只写了一个年份,就别往别的版本上试。实在拿不准,装之前先看一眼插件目录里的 dll,属性页里能看到它的目标框架,和目标 Revit 版本对一对,比装完再排查省事得多。

顺带说一句运行库。Revit 本身依赖一套 .NET 运行环境和 VC++ 运行库,如果系统是精简版或者刚重装,这些可能缺失。插件加载失败的报错里如果出现“无法加载文件或程序集”字样,八成就是这个原因,去装一遍完整的运行库再试。

2. 把建模大师挂进 Revit 的完整操作路径

机制讲清楚了,动手部分其实不复杂。我习惯把整个过程拆成“装”和“挂”两步——安装程序负责把文件铺到硬盘上,挂载负责让 Revit 认识它。很多人的问题出在第一步就把路走歪了。

2.1 安装包与安装位置:别装在带空格和中文的路径下

安装路径这件事,听起来是老生常谈,但它真的会咬人。默认路径往往是C:\Program Files\...,中间带空格。大部分情况下没问题,但一旦插件内部有代码在拼接路径时没加引号,或者要调用外部命令行工具,空格就会把路径截断,报出来的错误莫名其妙。

我的习惯是统一装到一个短路径下,比如D:\BIMPlugins\ModelMaster\。这条路径同时满足三个条件:盘符独立、没有空格、没有中文。中文路径的风险更大,某些老版本的组件在读配置文件时用的还是本地编码,中文字符直接变问号,配置文件读不出来,插件启动即崩溃。

安装过程中还有两个细节值得留意。一是安装程序如果询问“是否为所有用户安装”,个人机器选当前用户就行,省得后面权限纠缠。二是装完之后去安装目录看一眼,正常应该能看到主 dll、若干依赖 dll、资源文件夹、以及一个.addin文件。如果.addin文件不存在,说明这个包需要你手动挂载,或者安装程序挂载失败被回滚了。

注意:安装前把 Revit 完全退出,包括后台残留的进程。任务管理器里如果有 Revit 相关进程还在跑,安装程序写文件时会被占用,写不进去但又不报错,装完就是个半残状态。

2.2 手动挂载:一份可以直接抄的 addin 文件

如果安装程序没帮你挂上,或者你想自己控制加载位置,手动挂载是最可靠的办法。步骤就四步。

第一步,找到插件的 dll 所在目录,确认里面有主程序集。第二步,在用户级加载项目录下建好对应年份的文件夹。第三步,新建一个文本文件,把扩展名改成.addin(注意 Windows 默认隐藏已知扩展名,别搞成xxx.addin.txt)。第四步,把上面那段 XML 模板抄进去,改成你的实际路径和类名。

类名怎么确定?两个办法。一是看安装包里有没有自带的 addin 文件,直接抄里面的FullClassName。二是用反编译或者 IL 查看工具打开 dll,找实现了应用入口接口的那个类,通常在根命名空间下,名字类似App、Application、AppStartup。

<?xml version="1.0" encoding="utf-8"?> <RevitAddIns> <AddIn Type="Application"> <Name>ModelMaster</Name> <Assembly>D:\BIMPlugins\ModelMaster\ModelMaster.dll</Assembly> <AddInId>9A7F3C21-5B4E-4C8D-9E1A-6F2D8B3C4A57</AddInId> <FullClassName>ModelMaster.AppStartup</FullClassName> <VendorId>MM</VendorId> <VendorDescription>Model Master Plugin</VendorDescription> </AddIn> </RevitAddIns>

这里我用的是绝对路径,因为手动挂载阶段路径确定,绝对路径最不容易出岔子。等确认能加载了,再改成相对路径做长期维护。相对路径的写法就是相对于 addin 文件自身所在位置,比如 addin 放在Addins\2023\下,dll 在D:\BIMPlugins\ModelMaster\,那就得写一长串..\..\..\..\,不如直接把 addin 文件复制到 dll 同级目录,然后<Assembly>只写文件名。

改完之后一定要用 XML 校验工具过一遍,或者干脆在浏览器里打开这个文件——浏览器对 XML 格式的容错比 Revit 宽松得多,能打开说明结构没坏,打不开就是标签没闭合或者有非法字符。

2.3 首次启动后的三处验证

挂载完成,启动 Revit,别急着点功能。按顺序验证三件事。

第一处,看功能区。正常情况下会在选项卡栏多出一个插件专属选项卡,里面是按功能分组的按钮面板。如果选项卡出现了但里面是空的,说明应用入口加载成功了,但按钮注册那部分代码出了问题,通常是资源文件缺失或者权限不足读不到图标。

第二处,看加载日志。Revit 在启动时会写日志文件,位置在用户目录下的日志文件夹里,按时间排序找最新的那个,搜索插件名称,能看到加载成功或者失败的具体原因。这一步比瞎猜强一百倍,报错信息里往往直接写明了缺哪个 dll、哪个版本不匹配。

第三处,随便点一个不涉及模型的命令,比如“关于”或者“设置”。这类命令不碰文档对象,即使有问题也不会把 Revit 搞崩,适合做第一次功能验证。等这个通过了,再打开一个测试模型去点建模相关功能。

这三步走完,基本就能确定插件是不是真的挂上了。跳过验证直接上生产模型,一旦插件在加载模型的过程中抛异常,轻则命令失败,重则文档损坏,得不偿失。

3. 装上却用不了:按现象反推的排查链路

插件这东西,失败的方式五花八门,但现象就那么几种。我习惯按“现象 → 可能原因 → 验证动作”的顺序反推,比从头捋一遍快得多。下面这张表是我这些年攒下来的对照清单,遇到问题先在这张表里找。

现象高概率原因快速验证处理动作
功能区完全没有新选项卡addin 文件位置错/年份目录不存在检查Addins\年份\下是否有文件移正位置,补建目录
有选项卡但无按钮图标资源路径失效、权限不足看启动日志中的资源加载报错补齐资源目录,或改绝对路径
点按钮报“无法加载文件或程序集”依赖 dll 缺失或运行库不全检查安装目录 dll 数量重装运行库,补依赖
点按钮直接闪退目标框架与 Revit 版本不匹配查 dll 属性里的目标框架换对应年份的安装包
部分功能能用部分报错与其它插件抢同一个功能面板禁用其它插件单独测试调整加载顺序或移除冲突项
首次能用,重启后失效临时目录被清理,缓存丢失检查配置是否写在临时目录改配置到固定目录

3.1 选项卡压根不出现

这是最常见的一种。按概率排,第一位是路径问题,第二位是 XML 格式问题,第三位才是插件本身坏了。

路径问题很好排除:直接在资源管理器里把 addin 文件的完整路径复制出来,逐段核对。年份写错(比如装的是 2022 的包,目录建成了 2023)、目录名拼错(Addin少了 s)、文件放到了上层目录,这三个我全见过。

XML 问题稍微隐蔽一点。有个细节特别坑:从网页或者聊天软件里复制 XML 内容时,可能带进了不可见的 Unicode 字符,肉眼完全看不出来,Revit 解析时直接判定为非法。解决办法是用纯文本编辑器重打一遍,或者粘到编辑器里先做一次“显示所有字符”检查。

还有一种情况是 addin 文件被系统标记为“来自网络”,加了个隐藏的锁定属性。右键属性里如果有“解除锁定”的勾选框,勾上确定,问题就解决了。这个坑在从别人机器上拷文件过来时特别容易出现。

3.2 选项卡出来了,按钮点了没反应或直接闪退

能出选项卡,说明加载链路是通的,问题出在功能执行阶段。这类问题排查起来要看日志,但日志位置不直观,很多人根本不知道有这回事。

一个更快的判断方法:新建一个空项目,在空项目里点按钮。如果空项目里正常、有模型的时候报错,那问题多半在模型数据上,比如某个构件类型插件不认识、模型里有异常图元。如果空项目里也崩,那就是插件环境问题,重点查依赖。

依赖这块有个经典组合拳:先看插件目录里的 dll 是不是齐全,再用系统的事件查看器看应用程序日志,崩退的瞬间会留下一条错误记录,里面带着出错模块的名字。看到是某个系统 dll 报的错,基本就是缺少对应的运行库或者版本太旧。

提示:调试期可以临时把其它插件全部移出加载目录,只留目标插件跑一遍。确认是它自己的问题还是冲突问题,这一步能省掉大量互相甩锅的时间。

3.3 多插件共存时的加载顺序与冲突

一个稍微上点规模的项目,机器上装五六个插件是常态。这些插件之间不一定和平共处,冲突主要有三种形态。

第一种是抢功能区面板。两个插件都想往同一个选项卡里加面板,如果代码里没做存在性判断,后加载的会把先加载的覆盖掉,表现出来就是“昨天还在的按钮今天没了”。第二种是抢事件。多个插件都订阅了文档保存、图元修改这类事件,其中一个处理时间过长或者抛异常,会拖累整个事件链。第三种是抢资源文件,两个插件用了同名的配置文件或者同名的临时目录。

排查冲突的通用做法是二分法:先全部禁用,确认基础功能正常,然后一次加回一个,加到出问题为止。这方法笨,但绝对有效。我在一个十几人的团队环境里用过,前后花了两个小时定位到一个插件在启动时把全局的单位设置给改了,导致后续所有插件的计算全偏。

4. 平法计算这件事,为什么造价人员总觉得软件不懂他

插件装好了,接下来才是真正有意思的部分。Revit 天生是个建模工具,它的基因里没有“算量”这个概念;造价人员的脑子是按平法图集的逻辑长的,看一张梁配筋图,眼睛里自动跳出来的是锚固长度、搭接区、加密区根数。这两套语言不通,所以才会有人觉得“软件不懂我”。插件要做的事,本质就是当翻译。

4.1 平法算量的四块骨头:锚固、搭接、加密、扣减

平法计算的规则看起来庞杂,但拆到底层,反复出现的就是四类判断,几乎所有构件的钢筋量都是这四类判断的组合结果。

锚固解决的是“钢筋伸进支座多深才算够”。这个深度不是拍脑袋定的,它跟混凝土强度等级、钢筋级别、抗震等级、钢筋直径四个参数联动,查表得出一个以直径为倍数的数值。举个具体的,某强度等级的混凝土配某级别钢筋、二级抗震,受拉钢筋的抗震锚固长度大约是按直径的四十倍左右。直径 25 的钢筋,锚固长度就是 1000 毫米上下。支座宽度不够 1000,就得弯锚,水平段满足一个下限,弯折段按十五倍直径算。

搭接解决的是“钢筋不够长要接起来,接头处多长才安全”。搭接长度不是锚固长度的简单复制,还要乘一个修正系数,跟接头面积百分率有关。同一截面接头越多,系数越大。

加密解决的是“箍筋在哪些区段要变密”。梁的加密区在支座附近,长度取梁高的 1.5 倍和 500 毫米中的较大值;柱的加密区更复杂,跟柱净高、截面尺寸都有关系,取几个值里的最大者。加密区和非加密区的箍筋根数要分开算,这是很多人手算时容易漏的地方。

扣减解决的是“构件相交的地方量算给谁”。梁和柱相交,梁的净跨要扣掉柱的截面;板和林相交,板的面积要扣掉梁宽。这部分规则最琐碎,也最容易在软件里出偏差。

4.2 一个梁构件的手算过程,用来对照软件

拿一根最常见的框架梁做例子,把计算过程走一遍,后面你就知道该拿什么去校验插件的结果。

梁截面 300×600,净跨 6000 毫米,混凝土强度等级按中等考虑,保护层 20 毫米,箍筋直径 8,加密区按梁高 1.5 倍和 500 取大。

先算箍筋单根长度。外箍是矩形,两边的长度要各扣两个保护层,再加上两个弯钩。抗震箍筋的弯钩按 11.9 倍直径计入,公式是:

单根长度 = 2×(b - 2c) + 2×(h - 2c) + 2×11.9d = 2×(300 - 40) + 2×(600 - 40) + 2×11.9×8 = 520 + 1120 + 190.4 = 1830.4 mm

再算根数。加密区长度取 1.5×600 = 900 毫米,和 500 比取 900。两端各 900,中间非加密区就是 6000 - 1800 = 4200 毫米。加密区间距按 100 算,每端 900/100 向上取整加一,得到 10 根,两端共 20 根;非加密区间距按 200 算,4200/200 减一,得到 20 根。总数 40 根。

总长度 1830.4 × 40 = 73216 毫米,换算成米是 73.2 米,再乘上直径 8 的理论重量系数(约 0.395 千克每米),得到箍筋重量约 28.9 千克。

这套算法你手上有,就有了校验的标尺。插件算出来的结果差个百分之几很正常,差百分之二十以上就一定有环节错了,要么是加密区判定,要么是弯钩系数,要么是保护层取值。

4.3 Revit 原生钢筋能力的边界在哪

搞清楚原生能力边界,才知道为什么要靠插件。

Revit 原生是能放钢筋的,叫钢筋图元,可以做成实体形状,能在三维里看见,也能统计。但它有几个明确的短板。第一,钢筋形状要自己定义,图集里那套规则它不认识,你得手工把每种形状画出来,构件一多就是灾难。第二,规则不会联动,混凝土等级改了、抗震等级改了,已经放好的钢筋不会自动重算,得手动一个个改。第三,出量的字段要自己配明细表,而且统计口径是按图元走,不做平法意义上的归并和分区。第四,也是最要命的,原生钢筋是跟着几何跑的,模型一改,钢筋可能失效或者跳到奇怪的位置,返工量巨大。

所以插件干的事就很清楚了:把图集规则固化成一个参数化的规则库,构件几何一改,钢筋按规则自动重生成,同时把算量口径按造价人员的习惯组织好。这中间的转化链路,是下一篇要说的重点。

5. 插件把图集规则翻译成钢筋实体的那条链路

理解了平法在算什么,再看插件的实现路径就顺了。我把它拆成三段:认构件、套规则、出数据。这三段每一段出问题,最终的量都不对,所以排查的时候也要分段查。

5.1 构件识别与几何提取

插件第一步得知道“这是一根什么构件”。Revit 里的构件是按族和类别组织的,一根梁可能来自不同的族,命名五花八门。插件通常靠类别加参数特征来判断,比如类别是结构框架、参数里有截面宽度和高度,就判定为梁。

这一步最容易出的问题是族不规范。同一个项目里,有人用 A 族画梁,有人用 B 族画梁,参数名一个叫“宽度”一个叫“b”,插件识别不出来,结果就是漏算。这也是我一直强调建模规范的原因——插件不是万能的,它只能读它认识的东西。

几何提取环节要拿到的是净跨、截面尺寸、支座宽度、顶标高、底标高这些。净跨的算法是扣掉两端支座的覆盖部分,如果梁和柱的连接关系在模型里没建对(比如梁端点没真正连到柱上,只是视觉上贴着),净跨会算错,钢筋长度跟着错。

提示:建模阶段养成习惯,梁的端点一定用捕捉连到柱或墙的中心线,不要目测对齐。这一个动作能让后面的算量准确率提升一大截。

5.2 规则库与参数联动

规则库是插件的核心资产,本质是把图集里的表格和构造详图翻译成可执行的判断逻辑。一个好的规则库应该做到参数一改全链路重算。

联动的参数主要有这么几组:

参数组影响什么常见取值来源
混凝土强度等级锚固长度、搭接长度项目全局设置或构件属性
钢筋级别与直径锚固倍数、弯钩长度、理论重量配筋表中读取
抗震等级锚固修正、加密区长度项目全局设置
保护层厚度箍筋周长、纵筋定位按环境类别和构件类型查表
接头面积百分率搭接长度修正系数按施工方案设定

这几组参数里,最容易被设错的是抗震等级和保护层。抗震等级在项目全局里设一次,如果建模的人没设或者设成了最低级,所有锚固长度都会偏短,量就整体偏小。保护层按环境类别取值,室内和室外、地上和地下都不一样,一个项目里往往有好几种,需要用构件属性分别控制,不能全局一刀切。

联动做得好不好,有个简单的测试方法:把混凝土等级从一种改到另一种,看钢筋量有没有跟着变。变了说明联动生效,没变说明规则库里这部分是写死的,那这个插件在方案比选阶段就不好用——而方案比选恰恰是算量最需要快速出数的时候。

5.3 出量口径:明细表字段怎么配

算出来的钢筋要变成造价能用的数据,中间还隔着明细表这一层。这一层不做对,量算得再准也用不上。

明细表的核心是三件事:单位、归并、分区。单位上,Revit 内部长度单位是英尺,显示可以设成毫米,但导出的时候如果没做换算,会出现小数点后一堆位数或者数值差几十倍的情况,第一次用的人几乎都会栽在这。归并上,要按钢筋级别加直径归并,不要按图元归并,否则同一根梁里的同规格钢筋会被拆成好几行。分区上,按楼层、按构件类型、按施工段分区统计,这是造价出量的基本要求,分区字段要在明细表里提前加好。

我一般会建两个明细表,一个按构件明细,用来对账;一个按规格汇总,用来出量。两个表的总重必须一致,不一致说明归并逻辑有问题或者有构件没被统计进去。这个小交叉校验很管用,能抓出大部分配置错误。

6. 我实际用下来觉得最该盯住的几个地方

讲完机制和链路,最后说点实操层面的东西。这些不是文档里会写的,全是踩出来的。

6.1 单构件对账:先跑一根梁再跑一层

新装的插件,或者改了参数之后,千万别直接整层跑。找一个最简单的构件,一根梁、一根柱,单独算,拿手算结果对。

对的时候盯三个数:单根长度、根数、总重。三个数里任何一个对不上,就停下来查。单根长度不对,问题在锚固或弯钩;根数不对,问题在加密区判定或跨数识别;单根和根数都对但总重不对,那是理论重量系数或者单位换算的问题。

我一般的容忍度是百分之三以内放行,超过就查。为什么允许百分之三?因为不同的规则库在边角处理上有细微差别,比如弯钩是不是计、箍筋保护层扣几面,这些细节各家的取舍不同,差异在合理范围内。但差异超过百分之十,一定是有系统性错误,不能放。

6.2 全局参数设错的三种典型表现

参数设错不会报错,只会让量悄悄偏掉,特别隐蔽。我总结了三种最有辨识度的表现。

第一种,所有构件的钢筋量整体偏小百分之十到二十。几乎可以断定是抗震等级设低了,锚固长度整体缩水。第二种,箍筋量明显偏少但纵筋正常。这是保护层设大了,箍筋周长变小,同时加密区长度可能也没对。第三种,梁的量正常但柱的量偏大很多。多半是柱的净高取值出了问题,柱的钢筋长度跟净高强相关,净高算错直接放大。

这三种表现对应的检查位置都很固定,遇到时先去看全局参数面板,别一头扎进单个构件里找。

6.3 出量前的三项自检

正式出量之前,我固定做三项检查,花不了十分钟,能挡掉大部分返工。

第一项,检查有没有构件没被识别。做法是关掉插件的显示层,看模型里有没有游离的、没有钢筋的构件,或者直接看插件生成的清单里构件数量跟模型里实际数量对不对得上。对不上就是有构件漏了。

第二项,检查单位。随便挑一个已知长度的构件,看明细表里的数值是不是和毫米单位相符。差了三十倍左右说明是英尺没换算,差了一千倍说明是米和毫米搞混了。

第三项,检查扣减。挑一个梁柱相交的节点,手工算一下梁的净跨,和插件算的比。这一步能发现连接关系没建对的问题,这类问题在复杂节点区域特别普遍,而且对量的影响是成片的。

这三项做完,量基本就能拿出去用了。剩下的差异,那属于规则口径的博弈,得跟对方对规则,不是技术问题。

最后分享一个小技巧:把每次对账的差异记下来,形成一份自己的检查清单。同类型的项目,差异往往出现在同一批位置,清单越攒越准,后来基本看一眼模型就知道哪里会出问题。这套东西比任何工具都值钱,因为工具会换,判断力不会。