ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

嘉立创EDA 3D模型导入Altium Designer?FreeCAD中转定位全攻略

嘉立创EDA 3D模型导入Altium Designer?FreeCAD中转定位全攻略 先交代一下背景。我日常画板子用的是嘉立创EDA但客户那边指定要在Altium Designer里做结构验证所有关键器件都要带真实尺寸的3D模型。立创商城那套封装库有多香不用我多说USB-C、DDR、网口变压器、各种电感在嘉立创EDA里点开3D预览全都有等于白送一个零件级3D模型库。问题是这些模型真正搬到AD里之后位置偏了半个板子、器件整个倒扣、尺寸莫名放大25.4倍的情况我全遇过最折腾的一次光调一个连接器就花了一晚上。这篇不跟你谈什么高大上的方法论就是把“嘉立创EDA 3D模型 → FreeCAD处理 → AD导入并精准定位”这条路彻底趟平。适合谁看用过AD但没系统做过3D封装的被模型坐标搞到怀疑人生的以及想在AD里建自己3D库的人。模型从哪来、怎么改、怎么对准焊盘我会把每一步的坑都标清楚。文章偏实操新手可以照步骤抄老手也能看几个坐标处理的细节。1. 为什么要绕一圈嘉立创EDA的模型并不能直接进AD先说为什么大家都想用嘉立创EDA的3D模型。用过AD自带那套封装库的人都知道想给一个电阻加上像样的3D体要么自己抻拉一个长方体要么去网上翻第三方模型效率低不说尺寸对不对还得赌运气。嘉立创EDA这边的好处是商城里有大量 BOM 里的物料库里都配好了对应的3D预览选中封装导出STEP理论上就能拿给AD用。但“理论上”三个字就是坑的开始。我最早也想偷懒把STEP文件直接往AD里拖结果呢模型在AD里显示的位置跟焊盘完全是两套坐标系器件跑到板框外面去有些倒置的SMT焊盘被塑料外壳盖住更离谱的是尺寸明明一个0402电阻导入后变成一块砖头那么大。后来我才搞清楚问题出在三个地方坐标系原点不一致、STEP格式里的单位约定容易混、模型创建时的基准面跟PCB封装的基准面不统一。所以链路里必须插一个FreeCAD。FreeCAD是免费开源的参数化建模软件用它做中转本质上是干三件事把模型“洗干净”把参考原点改到我们想要的点上把方向修正到AD的3D坐标系里。这三件事在别的CAD软件里也能做但FreeCAD免费、跨平台、还能跑Python脚本对硬件工程师来说门槛最低。整套流程一旦固定下来单个器件从导出到在AD里对位五分钟以内能搞定。我用文字描述一下最终方案的长相后面每个环节都会详细展开嘉立创EDA专业版里选中封装导出STEP模型文件FreeCAD打开STEP修正模型位置、方向和单位把模型原点调整到目标焊盘中心在AD的PCB封装编辑器里通过Place菜单放置3D Body以Pin 1为锚点导入STEP这套流程不挑AD版本AD17到AD24我都试过入口基本一致无非是按钮位置变动、对话框名称稍有不同。2. 实操第一站从嘉立创EDA导出STEP这一步就埋着大坑2.1 导出入口和格式选择嘉立创EDA我是以专业版为主标准版大同小异。操作路径是在PCB编辑器里选中目标封装右键菜单里找“导出”或者“3D模型”相关选项然后选择导出格式为STEP后缀一般是.step或.stp。有些版本还能选导出3D PDF这里别选错我们要的是带实体几何信息的STEP。导出之前有个动作值得养成习惯先在嘉立创EDA里打开3D预览转一转视角确认模型完整、没有缺面、没有多余的包装条或者料带模型混在里面。毕竟商城里有些物料的3D模型是带编带或者托盘示意形状的导出到AD里会干扰判断。2.2 坐标系统的陷阱你以为的原点并不是AD认识的原点这是整个流程里最容易被忽视、也最让人抓狂的一环。STEP文件本身只记录实体的几何信息和模型空间坐标它不像AD的封装文件那样有“Pin 1中心”这种语义化基准。嘉立创EDA在生成STEP时模型的原点通常取的是元件在库编辑器里的参考点而这个参考点往往跟封装的坐标原点不是一回事。举个例子一个SOP-8芯片封装原点可能在Pin 1焊盘中心但在立创的3D模型里STEP模型的原点可能是整个实体的几何中心也可能是某个引脚的端点。结果就是AD导入后你怎么拖都对不齐模型跟焊盘之间总有那么一段莫名其妙的偏移有时候X方向差0.5mm有时候Y方向差好几毫米完全没有一个规律可循。我一开始很天真想直接在AD里手动填偏移量。试了两次就放弃了一个SOP-8调完再来一个QFN又得重新算纯靠人肉效率太低了。后面换了个思路既然STEP原点没有语义那干脆在FreeCAD里把STEP模型整体平移让模型自己的原点变成“Pin 1焊盘中心”然后到AD里用Pin 1作为锚点放置一次就能对准。2.3 导出时注意检查“模型是否和封装方向一致”还有一个小坑嘉立创EDA里3D预览的视角跟实际STEP文件导出来的方向不一定一致。我之前导出过一个贴片晶振预览里看上去是正着的导入AD后发现整个器件绕Z轴转了180度丝印方向跟3D体完全相反。这不是FreeCAD的问题是EDA导出时模型自身的坐标轴方向决定的。所以在导出之后、处理之前我会用任意一个能看STEP的软件先快速瞄一眼模型的大致朝向。后面在FreeCAD里修正方向时才能判断该绕哪个轴转多少度。3. FreeCAD处理把模型改成“AD认识的样子”3.1 导入STEP的单位与AP版本怎么选打开FreeCAD新建一个文档通过File菜单导入STEP文件。STEP文件本身是带单位信息的正常情况选默认导入就行。但保险起见建议先看一个地方FreeCAD底部状态栏的单位设置。如果状态栏显示的是mm那导入后模型的尺寸一般不会出问题如果显示inch或者m那就要警惕了。单位混用的后果非常直观一个本该长3.2mm的电阻在AD里显示成81.28mm或者反过来变成0.126mm。这几乎是所有“模型忽大忽小”问题的根源。我的习惯是进Preferences把默认单位系统设为MKSmm/kg/s这样处理所有STEP模型心里都有底。AP203和AP214这两个STEP子格式也值得说一句。AP203偏向纯几何交换结构最简单兼容性最好但颜色和层信息容易丢AP214支持产品配置和颜色视觉效果更好但偶尔会多出一些AD不认识的节点。实际经验是如果发现导入AD后报“invalid solid”之类的错误优先换AP203试试如果只是颜色丢了那选AP214更舒服。3.2 修模型隐藏干扰件、合并实体、检查边界框嘉立创的3D模型有时会包含不只一个实体。比如一个带屏蔽壳的连接器可能拆成了外壳、引脚、内部胶芯三个单独对象有些LED模型甚至会带上透镜和安装支架。导入AD后这些对象会一起出现在3D体里虽然看起来没问题但如果想统一调颜色或者后续做碰撞检查就很别扭。FreeCAD里的处理方式是先选中不需要的对象右键隐藏或删除再把需要保留的对象合并成一个整体。具体操作上可以用Part工作台的布尔并集把所有实体合并成一个Shape如果布尔运算报错那通常意味着模型有小破面可以先对每个对象跑一遍Part → Refine shape把无效边和退化面清掉再重新做布尔。合并完成之后有一个我每次都会做的动作在FreeCAD的Python控制台里查看模型的边界框。选中模型对象输入下面两行obj App.ActiveDocument.getObjectByLabel(你的模型名称) obj.Shape.BoundBox输出大概是这样的BoundBox (Xmin : -5.6, Ymin : -2.7, Zmin : -3.2, Xmax : 5.6, Ymax : 2.7, Zmax : 1.9)这组数字就是模型在XYZ方向上的范围单位为毫米。后面调原点要靠它做参照千万别跳过。3.3 关键操作把模型原点平移到Pin 1焊盘中心这个操作是整个避坑指南的核心理解它之后你基本就掌握了99%的3D封装对位逻辑。先明确目标我们在AD里放置3D体时如果指定了Pin 1作为锚点那么模型的原点会落在Pin 1焊盘中心。所以FreeCAD里要做的就是让STEP文件的模型原点正好落在“该器件Pin 1焊盘所对应的实体位置”。具体怎么找这个位置如果嘉立创EDA的模型本身Pin 1引脚实体刚好在模型坐标原点附近那只需要微调但大多数情况不是这样。我的做法是先在FreeCAD里选中模型拉近视角找到Pin 1引脚的那个实体面用测量工具或者直接用BoundBox判断它在模型空间里的坐标记为(Px, Py, Pz)。然后选中模型对象在属性面板里找到Placement将Position的X、Y、Z分别设为-Px、-Py、-Pz。这个操作的本质是把整个模型往坐标系负方向平移让原先位于(Px, Py, Pz)的那个点挪到(0, 0, 0)上来。经过这一步模型的原点就是Pin 1焊盘中心了。举个例子假设一个USB-C座子Pin 1引脚中心在模型空间里的坐标是(9.6, -0.5, -3.15)那么Placement的Position就填X-9.6、Y0.5、Z3.15。填完数字模型会移动但移动的方向和距离需要心里有数它是在把自己“按”到原点上去。如果模型有好几个对象则要么先合并要么对每个对象执行同样的Placement改动。最省事的方式是先全选统一设置Position再分别导出。3.4 模型歪着、翻着怎么办旋转角度和轴的选择坐标对齐只是第一步方向不对照样白搭。AD的3D环境里电路板平面是XY面垂直板面方向是Z轴元件通常是“站在”板子上的。但机械CAD软件出身的三维模型可能默认把元件横躺着放或者把底面朝上这就要在FreeCAD里修正旋转。旋转同样在Placement里面做。Placement里有Angle和Axis两个关键参数Angle是旋转角度Axis是旋转轴。Axis用向量表示绕X轴旋转就填(1, 0, 0)绕Y轴填(0, 1, 0)绕Z轴填(0, 0, 1)。拿一个常见的贴片连接器举例模型导入后躺平了引脚朝侧面那我需要用Axis(1, 0, 0)、Angle90让模型绕X轴立起来。如果器件倒扣那就Axis(1, 0, 0)、Angle180。这里有个容易搞混的地方旋转的正方向遵循右手定则建议每次只转90度然后看一眼模型朝向再继续别一上来就转180度方向搞反了又得重来。“FreeCAD里如何将物体折一个角度”这类问题本质上就是Placement的Angle和Axis设置。模型处理里没有非要靠建模操作去“折弯”的情况你动的只是整个模型的空间姿态不是改模型本身形状。3.5 导出干净STEP的五点检查清单处理完模型、点导出之前花三十秒过一遍这五个检查项能省下后面大量的返工时间单位底部状态栏必须是mm导出对话框里单位也选毫米原点Placement的Position是否已经指向想要的基准点方向模型在FreeCAD里看是不是已经“正”了实体状态合并之后还能不能选中一个完整对象有没有残留的隐藏对象颜色有没有保留颜色如果AD里不在乎颜色这步可跳过导出时选择STEP格式文件名建议包含封装名和版本例如USB-C-16P-001.step方便后续在AD里管理。导出完成后可以再重新导入一次看看确认边界框和旋转都对。4. AD侧导入别再把STEP文件当普通文件拖进来4.1 正确入口Place菜单里的3D BodyAD里想给封装添加3D模型常见的错误操作是直接打开PCB库然后把STEP文件拖进画布。这样操作在部分新版本里也能出来模型但往往没有正确的放置基准后续对位特别麻烦。标准做法是在PCB封装编辑器里点击菜单Place → 3D Body弹出3D Body对话框然后在3D Model Type区域选择Generic再点“Choose”按钮找到之前导出的STEP文件。这个操作的语义很明确你是在往封装上放置一个3D体而不是在PCB上乱拖一个图形对象。老一点的AD版本这个入口可能在Place → 3D Body新版本如果找不到可以按快捷键P然后看菜单里有没有“3D Body”。逻辑都是同一个别被版本差异吓住。4.2 3D Body属性里的Body Center与Pin 1精准定位的关键放置3D Body时对话框里有一项“Body Center”下拉选项通常包括Center和Pin 1。这里就是AD侧的“基准点”设置。如果选CenterAD会把STEP文件的原点视为模型的“中心”放置的时候以元件中心或者PCB原点为锚点这样之前FreeCAD里对好的原点全白费。而选Pin 1放置时AD会提示你点击某个焊盘模型的原点会精确地跟这个焊盘的参考点重合。这就是我们需要的那一步。实际操作顺序是在封装编辑器里先放置好焊盘然后Place → 3D Body加载STEP文件Body Center选Pin 1接着在画布上点击Pin 1焊盘的中心。模型进来之后一般就已经严丝合缝了。如果还有细小偏差可以在3D Body属性里调整X/Y/Z的数值做微调但通常不应该超过0.1mm。我个人的习惯是永远只用Pin 1作为锚点。一个封装几十个引脚只要Pin 1定准了其他引脚跟模型的对应关系是STEP文件自己保证的不用管。4.3 把3D模型保存进库一次性收益很多人的做法是在PCB文件里直接加3D Body板子画完就扔在那。下次新项目要用同一个器件又得重新找模型、重新放置、重新对位效率低到没法看。正确姿势是进入PCB封装库编辑器*.PcbLib把3D Body放在封装里面保存。这样原理图里放这个封装时3D模型会跟着封装一起走新板子直接调封装3D自动就有了。如果你已经有一块画完的板子里面手动放过3D体可以选中那些元件在PCB面板里找到封装信息通过右键“Make Component”或者直接用菜单Design → Make PCB Library从当前PCB生成一个封装库这样板上的3D体也会被带过去。之后再遇到同类器件就能直接从库里拿。4.4 3D显示微调颜色、透明度和层3D Body放进去之后默认显示颜色可能跟实际元件差距很大。在封装编辑器里双击3D Body可以在属性里改颜色也可以给不同子的物体分别设颜色AD会用STEP文件自带的颜色来渲染如果没有颜色信息就用你设置的单一颜色代替。还有两个容易忽略的地方一个是3D Body放在哪个层。AD里3D体通常放在机械层默认放在Mechanical 1就可以不影响电气和制造另一个是“Stand On Height”属性它控制3D体底面距离PCB表面的抬升高度。大部分SMD器件引脚底面就是贴板面这个值保持0就行但有些通孔连接器如果模型包含了引脚伸到板子下面的部分可能需要根据实际结构调整。5. 精准定位的完整实操流程从嘉立创到AD一气呵成5.1 双基准对齐原理被我们折腾的半天的定位问题说白了就是两条基准线对齐PCB封装库里的焊盘参考点是一套基准STEP模型的坐标系原点是另一套基准。AD里的Body Center选Pin 1意思就是“让模型的原点去咬合焊盘的参考点”。所以FreeCAD里改原点和AD里选Pin 1其实是同一个逻辑的两半。FreeCAD负责把模型坐标系里的“Pin 1焊盘中心”改成原点AD负责在放置时把原点映射到真实的Pin 1焊盘中心。两半合上模型就分毫不差。这就是为什么不要在AD里手动填偏移量——你绕开了这套基准对齐机制等于又回到了“人肉对位”的老路。5.2 完整流程清单建议收藏下面这个流程我基本每周都要走一遍适用于任意封装全部检查通过后模型在3D视图里跟焊盘严丝合缝在嘉立创EDA里选中封装右键导出STEP文件命名带上封装名用FreeCAD打开STEP先确认底部单位是mm删除或隐藏多余对象必要时做布尔并集合并实体打开Python控制台查看整个模型的BoundBox定位Pin 1引脚中心在模型空间中的坐标记为(Px, Py, Pz)选中所有保留对象把Placement里的Position设为(-Px, -Py, -Pz)检查方向不对就通过Angle和Axis旋转修正导出STEP文件覆盖保存或另存新版打开AD的PCB封装库进入封装编辑器Place → 3D Body加载STEPBody Center选Pin 1点击画布上的Pin 1焊盘中心完成放置切到3D视图快捷键3旋转视角检查模型与封装的贴合度第5步最花心思因为不同模型的Pin 1中心并不都那么容易识别。我的办法是先在FreeCAD里隐藏除引脚外的其他实体用放大视图找到Pin 1的焊接面再通过测量或BoundBox取它的中心坐标。引脚多的时候也可以用过滤器选中某个实体后在属性里读取它的位置信息。5.3 导入后怎么验证“一丝不差”模型放进去之后不能光用肉眼判断。我的验证方法是两步。第一步在3D视图里把板子调成半透明看模型的引脚是否刚好落在焊盘上。AD里可以通过View Configuration面板把3D Bodies的透明度调高或者用CtrlD打开视图选项勾选相关显示项。如果引脚跟焊盘错开一点马上就能看出来。第二步回到2D视图用测量工具快捷键CtrlM分别点选焊盘中心和3D体上的对应点看距离是不是接近0。在封装编辑器里这个方法能直接测出模型与焊盘之间的偏差。偏差小于0.05mm基本可以认为是视觉误差超过0.1mm就要回头检查FreeCAD里那个P点取准了没有。5.4 批量整理攒一套自己的本地3D库单个模型调好之后接下来就是重复劳动。元器件多的时候比如一块板子上百种物料建议直接建立一个本地3D模型文件夹按类别建子目录电阻电容、连接器、电源芯片、被动元件等。命名规则统一用型号加封装例如“NR-0402-10kohm.step”。在AD的封装库里每个封装对应一个3D体。库里已经带3D Body的封装新PCB调用时自动带上模型不需要重复操作。你还可以给AD配置3D模型的搜索路径在Preferences里设置让系统自动从本地文件夹匹配step文件这样连手动放置都省了。我自己的库目前有三百多个常用封装基本覆盖了平时做类型板卡会用到的器件。每次从嘉立创导出新物料模型按上面流程过一遍直接丢进对应子目录用起来非常方便。6. 常见问题与排查技巧实录6.1 问题速查表现象常见原因解决办法模型整体放大25.4倍单位混用STEP按英寸解析或被AD按英寸导入FreeCAD里统一mmAD导入时确认单位模型放进来是歪的或倒扣模型坐标轴方向与AD不一致FreeCAD里用Placement的Angle/Axis旋转修正模型跟焊盘有固定偏移模型原点没对准Pin 1中心FreeCAD里用BoundBox定位P点平移模型模型太大/太小比例很奇怪导出的模型不是目标封装对应的实体回到嘉立创EDA确认选中的封装3D视图里看不到3D Body3D Bodies显示被关闭或层不可见View Configuration里打开3D Bodies显示导入AD时报invalid entity错误STEP文件里有坏几何或过量节点FreeCAD里Refine shape后再导出或换AP203颜色全一样看不出层次STEP里没有带颜色信息AD的3D Body属性里手动设定颜色多个实体无法统一移动模型未合并或没全选先做布尔并集再统一设置Placement6.2 深坑一尺寸放大25.4倍别怪模型25.4倍这个数字太有迷惑性了很多人在AD里看到模型大得离谱第一反应是模型坏了重新从嘉立创导出好几遍也没用。其实25.4就是英寸和毫米的换算系数问题不在模型在单位识别。STEP文件内部是有单位声明的但不同软件在“没有声明单位时默认按什么处理”上不统一。FreeCAD默认按mmAD在某些情况下可能按mil或者inch。万一真遇到了我的处理方式是先在FreeCAD里确认模型尺寸是不是真实值比如一个0603电阻X方向应该是1.6mm。如果FreeCAD里是对的那就在AD导入或放置时检查单位选项如果FreeCAD里就错了重新导入时手动指定公制单位。6.3 深坑二方向反了180度别只顾着转Z轴模型倒扣或者左右镜像处理方向时第一直觉是绕Z轴转180度。但有些时候问题不在Z轴而是模型在FreeCAD里看起来已经正了导出到AD里却反了。这往往是因为AD的3D视图从正面看元件和从背面看元件的视觉差异。我的经验是遇到方向问题先不要急着一通乱转。在FreeCAD里重新对照AD的3D坐标系AD的板子正面朝上Z轴向上把FreeCAD模型转到跟AD一致的方向后再导出。如果转完还是不对再检查是不是绕X轴或者Y轴差了180度而不是只盯着Z轴。6.4 深坑三3D体明明在却看不见还有一种情况模型导入成功属性对话框里能看到2D视图里也显示有3D Body对象但切到3D Layout模式就是什么都没有。这种问题的根源多数在显示配置要么是3D Bodies层被关了要么是整体3D视图里的“显示3D体”选项没勾上。AD新版本里可以通过View Configuration面板左下角的按钮调出3D视图设置确认“3D Bodies”前面的勾选是打开的。还有一种情况是模型被放在了某个隐藏的机械层检查3D Body的属性看Layer设置的是哪一层把该层调成可见。我自己还遇到过更隐蔽的情况3D体颜色被设成跟PCB基板一模一样远看就跟消失了一样。所以排查的时候也要顺手看看Body 3D Color是不是被改成了透明或者接近板子颜色的色值。最后分享一点我的个人习惯流程捋顺之后我现在处理一个新的器件模型从导出到在AD里对位一般五分钟左右。整套方法里最值钱的经验就是那句“先在FreeCAD里把原点挪到Pin 1上”理解并执行好这一步后面所有问题都迎刃而解。另外如果你手头器件特别多我建议花点时间去了解一下FreeCAD的Python宏。原点修正、单位检查、导出这几个动作完全可以录成一个宏批量跑原理跟前面手动操作一模一样只是把每个模型的BoundBox读取、Placement设置自动化了而已。熟练之后一周处理几十个模型也不会觉得累。做硬件设计这件事3D模型从来不是必需品但一旦项目要求结构验证、渲染出图或者跟机械工程师对碰有没有一套好用的3D封装库效率差别会非常明显。希望这篇东西能帮你少熬几个调模型的夜。
返回列表