EDA365电子论坛网

标题: [SKILL分享]:导出dxf(源码) [打印本页]

作者: db-_-    时间: 2022-2-11 10:07
标题: [SKILL分享]:导出dxf(源码)
本帖最后由 db-_- 于 2022-2-11 10:38 编辑

使用方法:附件解压到任意skill目录中。在allegro.ilinit中输入load("export_dxf.il")
控制台中输入命令dbdxf

如果想修改layer convertion文件,请在_dbCreatDxfFile中自行修改。
如果想修改精度等参数,请参考HELP中的a2dxf函数自行修改。

有问题请反馈,好用也可以回个帖支持下~~





export_dxf.rar (1000 Bytes, 下载次数: 63)


作者: weigz    时间: 2022-2-11 10:11
谢谢楼主分享。
作者: weigz    时间: 2022-2-11 10:22
楼主添加钻孔输出及异型孔输出就更完美了
作者: db-_-    时间: 2022-2-11 10:28
weigz 发表于 2022-2-11 10:22
楼主添加钻孔输出及异型孔输出就更完美了

每个人要求的层不一样,源码都给出了。你可以自己加上。
复制PIN那行和下面一行,把PIN改成VIA CLASS就行。





作者: weigz    时间: 2022-2-11 10:32
本帖最后由 weigz 于 2022-2-11 10:40 编辑
db-_- 发表于 2022-2-11 10:28
每个人要求的层不一样,源码都给出了。你可以自己加上。
复制PIN那行和下面一行,把PIN改成VIA CLASS就 ...

我的意思是红色钻孔

无标题.jpg (9.38 KB, 下载次数: 6)

无标题.jpg

作者: db-_-    时间: 2022-2-11 10:36
weigz 发表于 2022-2-11 10:32
我的意思是红色钻孔

请教一下,红色钻孔是哪种,没画过pcb,不太懂。
理解了之后我可以加上。

作者: weigz    时间: 2022-2-11 10:38
db-_- 发表于 2022-2-11 10:36
请教一下,红色钻孔是哪种,没画过pcb,不太懂。
理解了之后我可以加上。

您现在导出的只是螺丝孔的焊盘,但是螺丝孔的实际钻孔是没有导出的

作者: db-_-    时间: 2022-2-11 10:57
weigz 发表于 2022-2-11 10:38
您现在导出的只是螺丝孔的焊盘,但是螺丝孔的实际钻孔是没有导出的

您是指需要导出所有钻孔(包括via,through pin)的内径吗。我没找到有哪一层能显示孔径这个圈的。

非要实现,只能生成一个user layer,把所有孔径的圆都画出来,再导出来了吧。

作者: weigz    时间: 2022-2-11 11:38
db-_- 发表于 2022-2-11 10:57
您是指需要导出所有钻孔(包括via,through pin)的内径吗。我没找到有哪一层能显示孔径这个圈的。

非 ...

在BOARD GEOMETRY  DRILL_HOLE层生成钻孔的Shape,也在您的SKILL那里面加了一句fprintf(file "                   DRILL_HOLE!                            BG_DRILL_HOLE!\n\n")但是就是无法导出钻孔。

作者: db-_-    时间: 2022-2-11 12:05
weigz 发表于 2022-2-11 11:38
在BOARD GEOMETRY  DRILL_HOLE层生成钻孔的Shape,也在您的SKILL那里面加了一句fprintf(file "            ...

有几个地方要确认下:
1、这一行是加在OUTLINE!这一行下面吗。行错了会找错CLASS。
2、drill_hole层的shape是真的shape,不是图形吧。
3、有没有重新加载il或者重启brd。

我刚测试了一下,随便新建了一个user layer,随便画了一个shape,然后把这个layer加进去,这个shape是可以生成到DXF里面去的。

作者: weigz    时间: 2022-2-11 13:13
db-_- 发表于 2022-2-11 12:05
有几个地方要确认下:
1、这一行是加在OUTLINE!这一行下面吗。行错了会找错CLASS。
2、drill_hole层的s ...

感谢,找到原因了,生成SHAPE后,BRD必须存盘才可以。

作者: db-_-    时间: 2022-2-11 13:36
weigz 发表于 2022-2-11 13:13
感谢,找到原因了,生成SHAPE后,BRD必须存盘才可以。

SOGA 貌似是这样。可以再加上这些。

  1. res = axlUIYesNo("输出DXF文件需要保存文件,点击YES保存,点击NO取消。" "Save Design" 'yes) ;;同意是否保存
  2.         when(res
  3.                 res = axlSaveDesign(?design nil)        ;保存BRD
  4.                 when(res
  5.                         ;;创建临时文件
  6.                         addr1 = "./top_layer.cnv"
  7.                         addr2 = "./bottom_layer.cnv"
  8.                         _dbCreatDxfFile(addr1 "TOP")
  9.                         _dbCreatDxfFile(addr2 "BOTTOM")
  10.                         ......
  11.                 )
  12.         )
复制代码




作者: leilei4908    时间: 2022-2-11 16:43
打开当前文件夹   axlHttp(getWorkingDir())   效率更高
作者: db-_-    时间: 2022-2-11 16:47
leilei4908 发表于 2022-2-11 16:43
打开当前文件夹   axlHttp(getWorkingDir())   效率更高

测试了下 确实噢。谢谢指导~~

作者: leilei4908    时间: 2022-2-11 16:49
res = strcat("a2dxf -u MM -a 4 -c l " addr1 " top " axlCurrentDesign())
这里的  -u  -a  -c l 能帮忙解释下么?哪里可以看到官方的 .exe使用说明书呢?

作者: leilei4908    时间: 2022-2-11 16:53
我是录制好 .scr 文件,然后 axlShell("replay dxf.scr") 重播
这样的话,不用在导出前存档了
作者: db-_-    时间: 2022-2-11 16:55
leilei4908 发表于 2022-2-11 16:49
res = strcat("a2dxf -u MM -a 4 -c l " addr1 " top " axlCurrentDesign())
这里的  -u  -a  -c l 能帮忙 ...


在Help里面就有说明。我也有点忘记了,但是是和Export ——DXF 里面的菜单都能对上。你看看HELP就都知道了。





作者: db-_-    时间: 2022-2-11 16:56
leilei4908 发表于 2022-2-11 16:53
我是录制好 .scr 文件,然后 axlShell("replay dxf.scr") 重播
这样的话,不用在导出前存档了

最好还是存下档,因为存档后的修改都不会在DXF中体现。

作者: leilei4908    时间: 2022-2-11 17:09
会报错
ERROR: CNV_PATH environment variable not found.
ERROR: Not able to open dxf file.
Terminating program.
但是dxf是正常生成了
作者: db-_-    时间: 2022-2-11 19:16
leilei4908 发表于 2022-2-11 17:09
会报错
ERROR: CNV_PATH environment variable not found.
ERROR: Not able to open dxf file.

不科学啊,,没见过这样的错。你更换过目录没?然后你用自带的Export——dxf... 试试,看看会不会报错。
作者: bingshuihuo    时间: 2022-2-13 09:26
点赞
作者: db-_-    时间: 2022-2-14 10:32
weigz 发表于 2022-2-11 10:38
您现在导出的只是螺丝孔的焊盘,但是螺丝孔的实际钻孔是没有导出的

我看论坛里有生成钻孔shape的il了,你那应该也有吧。以后我考虑自己也写一个,开源分享出来

作者: weigz    时间: 2022-2-14 11:55
db-_- 发表于 2022-2-14 10:32
我看论坛里有生成钻孔shape的il了,你那应该也有吧。以后我考虑自己也写一个,开源分享出来



作者: db-_-    时间: 2022-2-23 16:14
这有大佬写了生成钻孔shape的skill了。
先运行这个,再把这一层BOARD GEOMETRY/Drillhole加进去生成即可。我还是懒得写了。
或者直接在dxf的函数里,加上drill_hole_by(),这样运行一次就够了。

https://www.eda365.com/thread-134053-1-1.html
作者: hh3020    时间: 2022-5-5 16:54
用不了啊,能给qq号私聊一下吗
作者: db-_-    时间: 2022-5-5 17:46
hh3020 发表于 2022-5-5 16:54
用不了啊,能给qq号私聊一下吗

报什么错,可以描述一下。

作者: 小烟雨的人家    时间: 2022-5-31 15:05
leilei4908 发表于 2022-2-11 16:49
res = strcat("a2dxf -u MM -a 4 -c l " addr1 " top " axlCurrentDesign())
这里的  -u  -a  -c l 能帮忙 ...

a2dxf这个在skill接口文档中没找到哇,请教一下这是可以直接调用的接口吗

作者: db-_-    时间: 2022-5-31 18:18
小烟雨的人家 发表于 2022-5-31 15:05
a2dxf这个在skill接口文档中没找到哇,请教一下这是可以直接调用的接口吗

16.6以后都一直可以使用吧。16.6是可以的,再古老的版本我没测试。HELP文档里有。可以参考一下。
如果不能用,可以试试增加安装目录的bin文件夹到PATH环境变量再试试。

作者: pcblayout_bl    时间: 2022-6-14 00:07
威望不足,下载不了
作者: qingjuanliu    时间: 2023-9-13 13:57
谢谢分享!!!
作者: yinhaolin123456    时间: 2023-9-13 15:07
666
作者: Trunktren    时间: 2024-11-29 17:40
请教大哥两个问题:1. 函数是不是只有包含【Syntax】,才可以使用axlRunBatchDBProgram()
2.axlShell()可以唤醒吗?

作者: db-_-    时间: 2024-11-29 19:30
Trunktren 发表于 2024-11-29 17:40
请教大哥两个问题:1. 函数是不是只有包含【Syntax】,才可以使用axlRunBatchDBProgram()
2.axlShell( ...

差不多吧。

axlRunBatchDBProgram只能执行批处理命令,也就是cmd里面能执行的都能执行。
axlShell只能执行控制台命令,也就是allegro的控制台里面能输入的指令都能执行。

比如记事本这种系统自带的,写了Syntax的都是批处理命令。
比如能记录下来的宏、常用指令move这些,都是控制台命令。

作者: Trunktren    时间: 2024-12-2 13:49
db-_- 发表于 2024-11-29 19:30
差不多吧。

axlRunBatchDBProgram只能执行批处理命令,也就是cmd里面能执行的都能执行。

OK,感谢大哥!

作者: 万里羊    时间: 2025-1-14 11:33
苦苦寻找
作者: 亦久忆旧    时间: 2025-6-8 16:14
大佬,整合到一起,发生了错误,方便帮忙整合一下,给出完整的代码嘛?





欢迎光临 EDA365电子论坛网 (https://www.eda365.com/) Powered by Discuz! X3.2