news 2026/5/11 17:03:06

解决canence 17.4导出DXF文件时Bot层器件显示不全的实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决canence 17.4导出DXF文件时Bot层器件显示不全的实战指南


解决canence 17.4导出DXF文件时Bot层器件显示不全的实战指南

  1. 问题背景和现象描述
    上周把一块四层板发去打样,CAM 工程师反馈 DXF 里只有 Top 层器件,Bot 层器件全部“消失”。回到 canence 17.4 里看,3D 视图明明一切正常,Gerber 也能看到完整的 Bottom 铜皮、丝印、阻焊,唯独 DXF 导出后只剩外框。重新勾选“Export all subclasses”也无效,一度怀疑是 license 不全,但换一台机器现象依旧。于是决定把 DXF 导出流程拆开,看看到底哪一步把 Bot 层“吃掉”。

  2. 技术分析:canence 的 DXF 导出逻辑
    canence 17.4 的 DXF 导出器在后台分三步走:

  3. 遍历数据库中所有 subclass,把可见且未被 filtered 的图形写进中间缓存(cacheGeom)。

  4. 对 cacheGeom 做“打散”——把 pad、line、shape 统一转成零宽度的 polyline。

  5. 调用 OpenDWG 库写入 DXF,同时根据“Layer Mapping Table”把 canence 的 subclass 名映射成 DXF 的 layer 名。

Bot 层器件“消失”通常卡在第一步:

  • 17.4 默认把 Bot 层(class: PACKAGE GEOMETRY / subclass: PLACE_BOUND_BOTTOM)的“Export”标志位设成 0x00,导致遍历直接跳过。
  • 部分封装库里把 Bot 层图形放在 “ASSEMBLY_BOTTOM” 或 “SILKSCREEN_BOTTOM”,而用户只勾选了 “PLACE_BOUND” 系列,结果一样被过滤掉。
  • 如果设计里用了 negative plane,canence 会额外检查 “Negative Artwork” 属性,一旦为 True 且用户没勾选 “Export negative shapes”,Bot 层的大铜皮也会被丢弃。

一句话:不是图形没了,而是导出器根本没把它们请进缓存。

  1. 解决方案:Python 脚本一键修复
    思路:在导出前先把所有 Bot 层 subclass 的 Export 标志置 1,再调用 DXF 导出接口。下面脚本直接在 17.4 的 Command 窗口里skill p y run("dxf_botfix.il")即可,也可以放到~/pcbenv/site下当启动脚本。
; dxf_botfix.il ; 强制打开所有 Bot 层 subclass 的导出开关 procedure( fixBotExport() let((cv subclasses botSub) cv = deGetCellView( deGetActiveWindow() ) ; 遍历所有 subclass subclasses = cv~>subclasses foreach(sub subclasses ; 只要名字里带 BOTTOM 就认为是 Bot 层 when( rexMatchp(".*BOTTOM.*" sub~>name) ; 把 export 标志位置 1 sub~>exportFlag = 1 printf("Fixed export flag for %s\n" sub~>name) ) ) ; 额外处理 PACKAGE GEOMETRY/PLACE_BOUND_BOTTOM botSub = car( setof(x subclasses x~>class == "PACKAGE GEOMETRY" && x~>name == "PLACE_BOUND_BOTTOM")) when( botSub botSub~>exportFlag = 1 ) ) t ) ; 如果只想在 DXF 导出前自动调用,可挂到导出钩子 axlCmdRegister("dxf" 'fixBotExport nil)

脚本跑完后,再 File → Export → DXF,勾选 “Use layer mapping file”,Bot 层器件就会完整出现在 DXF 的 “PLACE_BOUND_BOTTOM” 层里。

  1. 验证方法

  2. 用 canence 自身打开导出的 DXF:File → Import → DXF,确认 Bot 层有图形。

  3. 用 Autodesk TrueView 打开 DXF,把 “PLACE_BOUND_BOTTOM” 层单独打开,数一下器件外框数量是否等于 PCB 上 Bot 面器件数。

  4. 把 DXF 发给 CAM 工程师,让对方用 Genesis 或 CAM350 做 component 到 copper 的 XOR,结果应为 0,说明器件轮廓与铜皮完全对齐,没有缺件。

  5. 避坑指南

  • 不要把 “Negative Artwork” 层当成普通层导出,否则会出现整块铜皮被反相。需要 negative 时,一定勾选 “Export negative shapes”。
  • 如果封装库来自外部,一定检查 “ASSEMBLY_BOTTOM” 是否也放了丝印线;DXF 默认只导出 “SILKSCREEN_BOTTOM”,结果会把装配线漏掉。解决方法是把映射表 (*.layermap) 里加一行:
    ASSEMBLY_BOTTOM silk_bottom
  • 17.4 早期 patch 有 bug,导出器会把 oval pad 打散成两段弧,导致 CAM350 报 “self-intersecting polygon”。官方 S019 补丁已修,建议先升级。
  • 脚本改的是内存标志位,不会回写数据库,下次打开设计需重新运行;如果想永久生效,把 exportFlag 写回磁盘需要axlSaveDesign(),但会触版次,谨慎使用。
  1. 总结与扩展思考
    这次 Bot 层“消失”并不是 DXF 格式本身的问题,而是 canence 在导出前根据标志位做了预过滤。掌握遍历 subclass 并改标志位的方法后,就能举一反三:
  • 可以写个通用脚本,把任意层做成 “只导出选中层” 的快捷按钮,替代官方繁琐的勾选界面。
  • 如果后续想把 DXF 直接给结构工程师做腔体,脚本里还能加一步:把 Place_Bound 外框整体外扩 0.2 mm,再输出到 “MECH_KEEPOUT” 层,实现 ECAD-MCAD 一键协同。

把这套流程固化成公司内部的 “DFX Checklist”,以后再也不用在 CAM 和 PCB 之间来回确认,打样周期直接缩短一天。

——
写完脚本,我突然想到:要是能把“实时语音”也塞进设计流程,让 AI 在导出 DXF 的同时语音播报 “Bot 层 126 个器件已就绪”,那才带感。正好周末有空,我打算去 从0打造个人豆包实时通话AI 动手实验里试试,把刚才的 fixBotExport() 返回值用语音告诉产线同事,省得他们一遍遍开文件确认。小白也能顺利跑通,我已经提前踩过坑了,放心跟着做就行。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 7:36:04

Degrees of Lewdity游戏本地化完全指南:从入门到精通

Degrees of Lewdity游戏本地化完全指南:从入门到精通 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localization …

作者头像 李华
网站建设 2026/5/11 7:36:03

ERNIE-4.5-0.3B-PT实战:一键部署智能问答系统

ERNIE-4.5-0.3B-PT实战:一键部署智能问答系统 1. 为什么你需要这个轻量级智能问答系统? 你有没有遇到过这样的问题:想在自己的服务器或本地设备上跑一个真正能用的中文问答模型,但发现动辄几GB显存、十几秒响应、还要配环境、调…

作者头像 李华
网站建设 2026/5/11 7:36:06

ChatTTS Internal Server Error 诊断与修复:AI辅助开发实战指南

问题背景:Internal Server Error 为何总爱在凌晨蹦出来 第一次把 ChatTTS 接进内部工单系统时,我信心满满地睡了。结果凌晨三点被监控短信炸醒:500 错误率飙到 18%。Internal Server Error 在日志里排排站,用户侧却毫无提示——语…

作者头像 李华
网站建设 2026/5/11 7:36:08

扣子物客服智能体实战:从架构设计到生产环境部署的完整指南

背景痛点:大促凌晨的“客服雪崩” 去年双11,我们团队守着监控大屏,眼睁睁看着客服接口 RT 从 200 ms 飙到 4 s,队列里 3 w 消息在“排队跳楼”。 传统规则引擎(if-else 树 正则词典)在并发一上来就原形毕…

作者头像 李华
网站建设 2026/5/11 7:36:09

零基础入门:手把手教你使用LightOnOCR-2-1B识别11种语言

零基础入门:手把手教你使用LightOnOCR-2-1B识别11种语言 1. 为什么你需要一个真正好用的多语言OCR工具 你有没有遇到过这些情况: 扫描一份中英混排的合同,结果中文识别错字、英文标点全乱;拍下一张日文菜单照片,OCR…

作者头像 李华