当前位置: 首页 > news >正文

解决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() 返回值用语音告诉产线同事,省得他们一遍遍开文件确认。小白也能顺利跑通,我已经提前踩过坑了,放心跟着做就行。


http://www.jsqmd.com/news/323517/

相关文章:

  • 游戏手柄映射完全指南:7个秘诀让键盘游戏秒变手柄操控
  • Sunshine游戏串流服务器配置与优化指南
  • 从决策边界到集成智慧:随机森林与SVM的几何哲学对比
  • HG-ha/MTools离线能力评测:无互联网连接下的功能完整性
  • 如何打造零延迟家庭云游戏系统:Sunshine串流工具深度配置指南
  • 手把手教你用verl搭建大模型强化学习系统
  • 5款视频下载工具横评:零基础也能快速掌握的实用指南
  • [特殊字符] Nano-Banana实战指南:将产品BOM表CSV自动转为带部件编号的Knolling图
  • Qwen3-VL-4B Pro实战:电商商品图自动描述生成全流程
  • gpt-oss-20b-WEBUI + vLLM = 高速推理新组合
  • translategemma-4b-it代码实例:Python requests调用Ollama图文翻译API
  • Z-Image-ComfyUI结构化提示词编写模板
  • DASD-4B-Thinking部署案例:单卡3090部署4B思考模型并支持并发5用户问答
  • 高效解决3D模型跨软件转换问题的4个核心方法
  • 参考FaceFusion思路,GPEN镜像也可版本回滚
  • 零延迟多设备串流指南:用Sunshine打造家庭共享云游戏平台
  • 移相波形输出的艺术:当电子工程遇见音乐合成
  • [特殊字符] Meixiong Niannian画图引擎移动端适配:PWA渐进式Web应用封装实践
  • XXMI启动器:跨游戏模组管理工具的技术解析与实践指南
  • 高效获取微博高清图片:批量下载工具的全方位应用指南
  • ms-swift强化学习初探:GRPO算法实战应用详解
  • EcomGPT-7B实战案例:中小电商如何用开源模型自动生成Amazon标题与卖点
  • Qwen3-4B实战:用Streamlit打造流畅的代码生成工具
  • Qwen3-32B模型量化:C语言底层优化实战
  • AnimateDiff轻量级T2V工具:比SVD小60%模型体积,启动快3倍
  • JX3Toy:让剑网3操作自动化的实用指南
  • VibeThinker-1.5B-WEBUI适合哪些题型?一文说清
  • 阿里达摩院SiameseUIE实战:一键抽取合同关键信息
  • 突破网页资源壁垒:猫抓插件的智能资源嗅探解决方案
  • SenseVoice Small修复版体验:支持中英日韩粤语自动识别