如果只是偶尔画一两块板子,原理图模板这种事确实不值得专门写一篇。但当你手上同时管着好几块板,还动不动就要把图纸发给结构、发给外协、发给产线,最后还得归档到公司文件服务器的时候,图框里那些信息——设计人是谁、哪天画的、改到第几版、项目叫什么、单板代号是什么——就会变得特别要命。我最开始用Altium Designer自带的默认模板,每次画完原理图都要手动回去改标题栏,十次有八次忘改版本号,等板子都投出去了才发现图纸上写的还是V1.0,那种感觉真的很难受。
所以这篇“案牍(2)”就专门聊聊Altium Designer的自定义原理图模板:从为什么值得做模板、参数体系怎么规划,到怎么从零搭出一张可用的SchDot模板文件,再到Special Strings的联动原理和团队协作时的版本管理。内容延续案牍系列一贯的实操风格,适合刚入门想规范自己输出文件的工程师,也适合正在替团队搭统一设计环境的硬件负责人参考。文章里所有操作我都基于AD 17到AD 24的常规界面写,个别菜单位置在新旧版本略有差异,但思路是通用的。
1. 被默认模板折腾过几次,才想通模板要解决什么事
1.1 一个常见又没必要的返工流程
很多工程师刚用AD时,原理图模板这件事是完全被忽略的。新建工程,默认的Sheet带着Altium的Logo,图框是那个经典的黑白矩形框,看起来也还行,于是就这么画。等原理图画完,问题就来了:要出图给别人的时候,标题栏里没有公司信息,没有项目编号,甚至没有设计人姓名。于是打开文档参数一项项填,填完了打印出来一看,日期还没对上。版本号随手写了个V1.2,实际文件已经改到V2.0了。图纸一旦流出去,后面追责或者追溯的时候,信息对不上就是麻烦。
这种返工流程本质上不是因为懒,而是因为模板没有承担起“信息管理”的职责。默认模板只是一个空壳,它没有建立图纸和参数之间的关联,所有信息都得靠人肉维护,人肉维护就一定会出错。我见过的很多团队,明明有统一的硬件设计规范,但每个人交付出来的原理图格式五花八门,标题栏里填的内容各式各样,给后续的评审、归档、产线导入造成了大量无意义的沟通成本。
1.2 模板真正承担的四件事
把自己的需求理清楚之后,我发现一张好用的原理图模板,核心要干四件事:
第一,统一图纸外观。图框大小、边框粗细、标题栏布局、Logo位置,这些视觉元素必须全公司一致。图纸发出去,别人一眼就知道是你们公司做的。
第二,自动带出文档信息。文件名、项目名、设计人、日期、修订号、总页数和当前页码,这些信息应该自动出现在标题栏里,不需要人手动填。这是模板和参数系统联动的核心价值。
第三,承载版本与审批信息。版本号是EVT还是DVT,当前处于哪个设计阶段,评审人是谁,这些问题如果能在模板里占好位,出图时就能顺着流程更新,不用回过去补记录。
第四,带上公司品牌与合规信息。Logo、公司全称、地址、联系方式、保密声明,这些内容一旦放进模板,所有图纸自然带出,比逐个文档去复制粘贴可靠得多。
1.3 用什么文件格式来承载模板
明确了要做什么之后,就会遇到一个基本问题:模板应该存成什么格式。AD里和原理图模板相关的格式主要有两类,一个是SchDot,也就是Schematic Template;另一个是SchLib,也就是原理图库。很多初学者会把这两个搞混,其实分工完全不同:SchLib是放元器件符号的库,SchDot才是放图框和模板参数的。你要自建原理图模板,正确选择是SchDot。
AD从很老的版本到现在的AD 24,SchDot这一格式一直保留着,兼容性做得不错。早期用AD 9建的模板,在AD 20里打开通常没太大问题。但这并不意味着你可以完全无视版本差异——至少字体渲染和参数面板的交互方式在近几个版本里改过好几次,这个后面我会专门讲。如果你是从AD 20开始接触的,现阶段直接用SchDot规划模板,方向就是对的。
2. 参数规划先行:模板里的变量比线条更重要
2.1 先梳理你每次出图必须的信息
很多人做模板一上来就打开软件画图框,画到一半才想起要放参数,然后放一个字段就保存一次,反复改。我建议反过来,先在Excel或者纸上把“每次出图必须出现的信息”列出来。
我给自己列过一张清单,分成三类:人/事类(设计人、审核人、公司名称)、版本类(版本号、日期、修订说明)、图纸结构类(项目名、单板名、文件名、当前页码、总页数)。再加上一些公司行政信息(地址、电话、保密等级)。这些信息不是每一条都要填,但模板里必须为它们留好位置;宁可留空,也不要等需要的时候没有地方放。
2.2 常用系统参数一览与调用方式
Altium内置了一批系统参数,你不需要自己造,直接在Special Strings选单里就能调用。下面这张表是我在模板里用得最频繁的一组:
| 参数名称 | 显示内容 | 调用方式 |
|---|---|---|
=Title | 文档标题 | 放置字符串后按Tab,编辑框里按Ctrl+V调出Special Strings选择 |
=DocumentName | 当前文档文件名 | 同上 |
=CurrentDate | 当前日期 | 同上 |
=SheetNumber | 当前原理图页码 | 同上 |
=SheetTotal | 工程总页数 | 同上 |
=Revision | 修订版本号 | 同上 |
=CompanyName | 公司名 | 同上 |
=Address | 公司地址 | 同上 |
=DocumentNumber | 文档编号 | 同上 |
=ProjectName | 工程文件名 | 同上 |
系统参数的取值逻辑是:在Project → Project Options → Parameters,或者Document Options → Parameters里维护。模板里的字段只是“引用”,显示的内容取决于这些参数的实际值。所以模板本身可以不动,每个项目只需填好自己的参数表,图纸信息就自动对了。
2.3 自定义参数怎么和公司命名规范挂钩
除了系统参数,你一定会需要自定义字段,比如“单板代号”“项目阶段”“保密等级”“PCB文件路径”之类。这些信息在模板里同样可以占位,做法有两种:一种是直接在模板的Document Options里加自定义参数,但这样模板自带的默认值会被复制到所有用模板创建的文档里,不一定合适;另一种更推荐的做法,是在模板画布上放置一个Text String,然后把它的值指定为某个参数名,这样参数本身归各个项目管,模板只管显示。
自定义参数的命名,建议和公司的命名规范保持一致。比如我们这边,单板代号统一叫BoardCode,项目阶段统一叫Stage,字段值用EVT/DVT/PVT这样的枚举。如果你们公司已经有内部的文档编码规则,尽量把参数名也对应上,少造同义异名的字段,不然模板在团队里推广时,每个人理解的“项目名”不是一个东西,照样乱。
3. 从新建SchDot到放完最后一个字段的完整操作链
3.1 新建原理图模板文件
理论说完了,开始动真格。第一步,在AD里执行File → New → Schematic,先建一个普通原理图文档,然后把它另存为SchDot格式。注意,虽然也可以通过File → New → Schematic Template直接创建,但我更推荐先建普通文档再存成模板,因为这样你能够在创建初期就看到和普通原理图完全一致的工作环境,操作更顺手。
存好模板文件后,先别急着画,打开Document Options(右键画布选择Options → Document Options,或者快捷键D O),把图纸尺寸定下来。我个人建议,常规项目用A3或A4就够。A4适合页数多、每页内容少的板子,A3适合单页内容大、希望减少翻页次数的设计。AD的图纸尺寸在Sheet Size下拉里选,选完记得把Use Custom Size勾选掉,不然有时候改了数值不生效。单位建议全程用mil,后面画边框和标题栏时坐标好对齐。
3.2 画图框、标题栏、放Logo
模板里所有可见图形都是普通的Place工具画的,没有隐藏魔法。图框我用的是Place → Line,从原理图边框线的坐标点开始逐段画。线宽一般设置到0.2mm左右,外框用粗线(比如0.3mm),内部分隔线用细线(0.15mm)。颜色默认是黑色,如果你公司有统一的CAD标准色,也可以在Template Color里改,但我个人不建议在原理图模板上用太深的底色或彩色线,打印出来效果不稳定。
标题栏的布局,我通常放在图纸右下角,这也是符合工程图阅读顺序的位置。画标题栏时,先用Line画好行列分隔,再用String放文字。每个单元格放什么字段,前面已经规划好了。放Logo用Place → Drawing Tools → Graphic,选一张公司Logo图片(最好是PNG或者BMP,线条简单的矢量图更好),放进去之后注意锁定宽高比,不然Logo变形很尴尬。这里有一个关键点:图片嵌入方式默认是链接还是嵌入,取决于你的操作方式,如果你不希望发出去的图纸Logo丢失,务必在放置后检查图片属性,确认不是外部链接。外部链接意味着打开图纸的人看不到图片,这个问题我在后面第6章还会专门讲。
3.3 往标题栏里放Special Strings
标题栏里真正让模板“活”起来的是Special Strings,也就是特殊字符串。操作方法是:按P T放置一个字符串,放置状态下按Tab打开属性面板,在Text属性那一栏按Ctrl+V,会弹出Special Strings的选择子菜单。这个Ctrl+V是很多新手不知道的关键,它和打印时插入特殊字符串是同一套机制。
菜单里能看到一堆=开头的特殊项,比如=Title、=Description、=DocumentName、=SheetNumber等等,选中它,回到画布上放置。放完之后,此时画布上显示的还是= Title这串字符本身,不要慌,这是正常的,模板在设计状态下不会实时计算显示结果。等模板真正被用来创建原理图文档,并且文档里维护了对应的参数值,它就变成具体内容了。如果你希望在编辑模板时提前预览效果,可以打开Preferences → Schematic → Graphical Editing,把“Always Show Special Strings”勾上,这样就能看到特殊字符串的动态内容。
3.4 保存模板与验证
模板画完,Ctrl+S保存。到这一步,一个基础模板就算成形了。但别急着收工,验证这步很关键。新建一个测试工程,再新建一张原理图,创建方式选择From Template,找到刚才保存的SchDot文件。打开测试图,在Document Options里设置几个参数值,比如Title写成“Test Board”,Revision写成“V1.0”,然后看标题栏里的Special Strings是否同步显示出来。
这一步如果显示正常,再生成一份PDF,翻到最后检查标题栏内容没有错位、没有缺失,模板就算真正可用了。很多模板出问题都是在PDF导出阶段才暴露的——屏幕上看着对,打印出来线条跑偏、字符截断,这类问题我在第6章会给出排查路径。
4. 让图框学会自动说话:Special Strings与参数的联动机制
4.1 为什么模板里的字段会自动变化
很多人第一次接触Special Strings时会觉得它像某种高级文本控件,其实它的本质不复杂,就是一个“参数引用”。可以这样理解:你在模板里放的=Title,类似于Excel单元格里写了一个公式,它本身不存内容,只说明“这里应该显示当前文档的Title参数值”。
这份联动关系是AD内置的,不需要你写脚本或做额外配置。当你在一个项目里创建新原理图时,模板会把图框、标题栏、特殊字符串引用全部复制到新文档中。新文档运行时,AD会去当前文档的Document Options参数表和当前工程的Project Options参数表里查找对应的参数名,找到就显示值,找不到就显示参数名本身(所以有时候你会看到=Title裸露在图纸上,那就是没设置对应参数)。
这也解释了为什么模板字段可以统一、但信息又能各不相同:模板提供的是“引用关系”,每个项目往参数表里填自己的内容。公司层面定义好参数名规范,项目层面负责填值,模板本身不用每回改。
4.2 系统参数和项目参数的正确放置位置
这里有个细节容易搞混:哪些参数写在Document Options里,哪些参数写在Project Options里。我的经验是,和整个项目有关的信息放Project Options,比如项目名、项目编号、客户名;和单张图纸有关的信息放Document Options,比如当前页面的内容说明、设计人、日期。举个例子,=ProjectName的值放在Project Parameters里,=DocumentName和=SheetNumber则是由AD自动管理的文档属性。
特别提醒一点:=CurrentDate这个参数有一个很坑的行为——它可能在“打开文档时”刷新,也可能在“打印输出时”刷新,具体取决于使用的字段类型和AD版本。如果你希望日期保持为“最近一次修改图纸的日期”,不要用=CurrentDate,直接用文档参数里的Date字段并自己维护。用=CurrentDate输出的永远是下次打开或打印的当天,这在归档时可能会有歧义。
4.3 模板字体与国产化问题
字体是模板里最容易翻车的隐性细节。AD早期版本在中文字体渲染上问题很多,尤其是放中文公司名的时候,保存模板再重新打开,会发现字符间距错乱,或者干脆变成方块。AD 17之后这个问题改善了不少,但如果你还在用AD 16或之前的版本,模板里的中文字符建议统一用宋体或者微软雅黑,不要用系统默认的SimSun之外的字体,更不要直接用CAD字体。
另外在导出PDF时,如果目标设备或合作伙伴那边的电脑没有字体,PDF里的中文可能会变成乱码或者替换成不合适的字体。最好是安装好的字体就一直没有变,同时AD的Preferences里不要勾选对PDF字体做精简的那一类选项,保证PDF嵌入完整字体。这样外发给产线和供应商时,图纸上的中文永远能正常显示。
5. 模板文件的分发、升级与历史包袱处理
5.1 模板文件放在哪里最不容易丢
模板这东西,一旦做好了,最怕的就是丢和乱。单独存在自己笔记本电脑的某个目录下,换电脑就找不到了;多人协作时,A同事改了一版,B同事还在用老模板,出图风格立刻分叉。
我的做法是,在DXP → Preferences → Data Management → Templates里配置模板路径,把模板目录指向公司服务器上一个固定共享目录(或者私有Git仓库里的一个固定路径)。该目录下用二级子目录区分“正式发布模板”和“草稿模板”,正式模板用版本号命名后缀,比如Company_Sch_Template_A4_v2.1.SchDot,草稿一律不允许放成正式文件名。这样任何人通过AD新建原理图时,都能在模板列表里看到同一个模板,不会出现各用各的版本。
如果你用的是AD 24,也可以考虑用Managed Sheet/Managed Template这类企业级模板管理方式,把模板发布到Altium 365或者本地Vault服务器上。好处是模板更新后,所有关联的文档都会有提示,规范性强很多;坏处是配置复杂度高,小团队没必要上,等团队规模大到有专职EDA管理员再考虑也来得及。
5.2 模板升级后,旧原理图如何批量刷新
模板不是一次画完就永远不变的。公司Logo换了、部门代码改了、标题栏想多增加一个“审核人”字段……每次改动都会面临老工程要不要同步的问题。
AD提供了一个命令,菜单路径是Tools → Update From Template,翻译过来就是“根据模板更新”。这个功能可以针对当前打开的文档,也能通过Project面板批量选中多张原理图一起更新。执行时,AD会把模板里当前图框参数、Special Strings布局等同步覆盖到目标文档,从而将新模板的样式应用到旧文档上。需要注意,更新前务必先把旧文档另存一份备份,因为一旦更新,原有的标题栏信息可能被覆盖。
这里有个容易踩的坑:Update From Template默认不是全字段覆盖,有的选项需要手工勾选。我一般把“Update Document Parameters”勾上,但不要勾“Erase existing parameters”之类清除已有参数的选项,否则老图纸里已经填好的项目参数会被清掉,重新填一遍就很痛苦。
5.3 AD版本升级带来的模板兼容性问题
从AD 17到AD 24,SchDot文件的兼容性整体上是好的,但并不意味着你可以忽视版本差异。AD版本之间对字体渲染的改进、对参数面板交互方式的调整,都可能让同一个模板在不同版本里看起来不太一样。
我实际遇到过的问题是,旧版模板里设置过图纸颜色,用的是全局Color设置;升级到新版本后,Color机制改了,模板打开后图纸颜色变成另一种效果。解决办法是把图框、边框、文字的颜色全部显式固定在模板中,不要依赖“系统默认颜色”。再比如,AD 20之后对“特殊字符串预览”选项的开关位置变了,如果你在某个版本里找不到“Always Show Special Strings”,最好去查那个版本的官方文档,而不是凭记忆盲目勾选。
6. 使用模板最容易踩的五个坑及排查思路
6.1 模板改完了,已经画好的原理图怎么不更新
这是新人问得最多的问题。你在模板里加了一个“阶段”字段,保存模板,回到老工程,标题栏里什么都没有。为什么?因为普通原理图文档在创建时只是从模板复制了一份内容和引用,并不会持续锚定模板文件。模板只是“模具”,不是“后台数据库”。
解决办法就是用前面说的Tools → Update From Template重新应用一次模板。如果你的团队经常改模板,建议养成习惯:模板文件每次发布新版本时,在群里或者周会上同步一声,让所有项目负责人手动执行一次更新,不要指望自动同步。AD有些企业级方案可以自动化这个流程,但在普通项目团队中,人工统一更新是成本最低、最不容易出错的。
6.2 Special Strings显示成等号开头的一串字符
如果模板放置的是=Title,但原理图画布上始终显示“=Title”而不是实际标题,原因通常是参数没有设置,或者特殊字符串显示预览没有打开。按P T放置状态下按Tab,打开属性面板,在里面能看到当前字符串的值;如果显示的是=Title而不是具体目录的值,检查Document Options里的参数表和Project Parameters里的参数表,看看对应参数名是否已填写。
如果参数已经填了、画布上还是显示“=Title”,那大概率是Preferences里显示预览的选项没开,也就是前面提到的“Always Show Special Strings”那个功能。在正式打印或导出PDF时,AD会因为输出流程强制重新解析这些字段,所以打印是对的,只是屏幕显示没刷新。遇到这种情况不用急,优先查参数,再查显示设置,基本都能定位。
6.3 默认栅格不对导致图框线位置不齐
导入模板到新文档后,有时候会发现图框线和标题栏分隔线对不齐,看着就跟手画的歪楼一样。这不是模板画错,而是单位或栅格设置不一致。比如你在模板文件里用的是公制单位,而当前原理图文档用的是英制单位,线条坐标经过换算之后就会出现一两个mil的偏移,这在放大到200%时非常明显。
要彻底根治,建议模板文件和应用文档的单位保持一致。在Preferences → System → Units里把单位统一为mil或者mm,同时把捕捉栅格(Snap Grid)、可视栅格设置成一致的值。我的习惯是全公司统一用mil作为原理图单位,这样模板里每个坐标点都是整数,不会有转换误差。
6.4 打印或PDF导出时标题栏被截断
模板画出来在屏幕上非常完整,可一打印,标题栏底部居然没了,或者右边一列被裁掉。这个问题的根源绝大多数不是模板本身,而是页面纸张大小没匹配。打印/PDF导出时,纸张设置默认可能还是Letter或者A4,但你的模板用了A3,导出时AD尝试把A3内容塞进A4纸张,结果就是内容被裁切。
解决方法是,在File → Page Setup里,把Printer Paper Size设置成和模板图纸一致,同时把Scaling设为“Fit Document On Page”或者1:1。如果你希望每次打印都省心,可以在模板里不锁定纸张大小,而是让Page Setup跟随模板设置——这需要在模板创建时就定义好Sheet Size。经验是:模板用什么尺寸,导出的页面就锁什么尺寸,Print Preview先看一眼,没问题再出PDF。
6.5 公司Logo发给别人后显示不了
这个问题特别容易被项目经理在验收时抓到。模板里明明放了Logo,自己在公司电脑看一切正常,把工程压缩包发给外协或者客户,对方打开图纸,标题栏里的Logo变成了一个灰色空白块。
原因就是Logo以链接方式嵌入了模板,而不是随文件打包。AD的Place Graphic默认支持嵌入和链接两种路径,如果源图片相对路径发生变化,或者工程转移后没有把图片目录一起带过去,链接就断了。最稳妥的办法是放置图片时,在属性面板中选择嵌入模式,让图片数据直接写进SchDot文件。如果你已经有几个老模板是链接图片,重新嵌入一次,然后另存为一个新的SchDot版本,不要在原版上继续改。
另外一个偏方是:把Logo转成PCB封装焊盘阵列或者放置到隐藏引脚上,这种“歪门邪道”能让Logo跟随库文件走,但复杂度高,新手不建议尝试。标准做法就是嵌入图片,简单直接。
最后聊点个人的使用体会。模板看起来是个不起眼的小东西,但它其实牵动着你每一天画图时的效率和风格。我现在这套自定义模板已经连续用了三年多,中间换过公司、换过AD版本,但模板文件一直跟着我走。每次新建工程,新建原理图,模板自动带出所有公共信息,我只需要填几个项目级参数,然后就可以专心画电路。
如果你现在还在用默认模板,看完这篇不妨抽一个下午,把自己的第一版模板搭起来。第一版不需要把所有功能都做全,先覆盖标题栏、页码、版本号这几个最常用的,画两块板子之后再迭代一次,把暴露出的问题补掉,比你一开始就追求完美要靠谱得多。模板这东西,用起来才会发现问题,改起来才会越来越顺手。