EDA365电子论坛网

标题: 【求助】自己写的程序导入dxf文件失败 [打印本页]

作者: 小烟雨的人家    时间: 2022-6-13 16:06
标题: 【求助】自己写的程序导入dxf文件失败
请教一下大佬们,自己写了一个导入dxf文件的程序,用的dxf2a批处理命令,日志都显示跟手工导入一样,没有别的报错信息,为啥就是导入不成功呢

导入部分程序如下:
cmdImport = strcat("dxf2a.exe -u MILS -v MM"  " -a 2 -g " " test.cnv " " xx200.dxf " "M_XXX00009VB.brd")
ipcBatchProcess(cmdImport "" "importDrc.log")


日志如下,跟手工导入dxf产生的日志对比了,没差别:
Reading Layer Conversion File
Reading DXF file...
NOTE: Replacing illegal character * with X in *Model_Space.
NOTE: Replacing illegal character * with X in *Paper_Space.

...

Layer conversion file: test.cnv
DXF file: vs200g-x540.dxf
BRD file: M_ETH00009VB.brd
Update existing design?: YES
Use default text?: NO
DXF units: MILLIMETERS
Design units: MILS
Design precision: 2
dxf2a complete.

dxf-log.png (23.6 KB, 下载次数: 3)

dxf-log.png

作者: db-_-    时间: 2022-6-13 16:25
我用过这个函数,但是建议你比对一下手动导入和SKIL导入的cnv文件。
作者: 小烟雨的人家    时间: 2022-6-13 17:32
db-_- 发表于 2022-6-13 16:25
我用过这个函数,但是建议你比对一下手动导入和SKIL导入的cnv文件。

参数用的就是手动导入dxf文件时生成的那份cnv文件,保证内容一致,应该是别的原因,还没发现

作者: db-_-    时间: 2022-6-13 18:04
小烟雨的人家 发表于 2022-6-13 17:32
参数用的就是手动导入dxf文件时生成的那份cnv文件,保证内容一致,应该是别的原因,还没发现

想不到别的了,貌似只有cnv你没传上来了。命令看着没问题。

作者: 小烟雨的人家    时间: 2022-6-14 09:23
db-_- 发表于 2022-6-13 18:04
想不到别的了,貌似只有cnv你没传上来了。命令看着没问题。

cnv文件,中间太多省略了。用这个cnv文件手工导入dxf可以成功,代码就是不行,也没有报错,执行完事了看上去啥也没发生:

#This is the Layer Conversion File used for
#importing DXF data into Allegro/APD.

#CLASS!            SUBCLASS!                 DXF_LAYER!

BOARD GEOMETRY!
                   2022-6-11-dxf!            0!
                   2022-6-11-dxf!            DEFAULT_1!
                   2022-6-11-dxf!            DEFAULT_2!
                   2022-6-11-dxf!            DEFAULT_3!
                   2022-6-11-dxf!            00_COMPONENTS!
                   2022-6-11-dxf!            01_ALL_DTM_PLN!
                   2022-6-11-dxf!            01__ASM_ALL_DTM_PLN!
                                       
                                   ...

#END

作者: 小烟雨的人家    时间: 2022-6-14 13:30
zs_king 发表于 2022-6-14 11:51
是不是因为,你要导入的层,还没进行创建。 所以,没有啊?  手动操作的话,貌似可以选择新建层。

应该不是这个原因,程序创建层还没写,但是我先手动创建好了的层用于测试导入能不能成功的,实在想不出还有什么别的原因了

作者: 小烟雨的人家    时间: 2022-6-14 13:42
zs_king 发表于 2022-6-14 11:51
是不是因为,你要导入的层,还没进行创建。 所以,没有啊?  手动操作的话,貌似可以选择新建层。

大神,我参考了你用a2dxf命令导出dxf文件,感觉导入dxf理论上用dxf2a肯定可以成功的哇,而且对照help文档参数应该都正确了,转换文件cnv应该也没有问题,层我也手动创建好了,想不通为啥不能成功

作者: db-_-    时间: 2022-6-14 14:40
cmdImport = strcat("dxf2a.exe -u MILS -v MM"  " -a 2 -g " " test.cnv " " xx200.dxf " "M_XXX00009VB.brd")
ipcBatchProcess(cmdImport "" "importDrc.log")

改成下面这个试试。

cmdImport = strcat("dxf2a.exe -u MILS -v MM"  " -a 2 -g " " test.cnv " " xx200.dxf " "%%s")
axlRunBatchDBProgram("dxf2a" cmdImport ?noUnload nil  ?logfile "importDrc.log" ?warnProgram t ?noExitMsgs t ?noLogview t ?silent nil)
作者: 小烟雨的人家    时间: 2022-6-14 15:13
zs_king 发表于 2022-6-14 14:42
大神,我参考了你用a2dxf命令导出dxf文件,感觉导入dxf理论上用dxf2a肯定可以成功的哇,而且对照help文档 ...

牛批哇,大佬,重新打开确实就看到了,是不是程序结束增加一个刷新设计的函数就可以了;
至于你跟楼上的大佬说的axlRunBatchDBProgram函数,我试了一下没跑成功,进度条一直结束不了,不知道啥原因,我再仔细研究看看,非常感谢

作者: 小烟雨的人家    时间: 2022-6-14 15:16
db-_- 发表于 2022-6-14 14:40
cmdImport = strcat("dxf2a.exe -u MILS -v MM"  " -a 2 -g " " test.cnv " " xx200.dxf " "M_XXX00009VB.b ...

大佬我重新打开设计就看到dxf文件导入进去了,回头程序增加一个刷新函数应该就可以了;
这个axlRunBatchDBProgram用了一直进度条结束不了,不知道啥情况,我再研究一下,非常感谢

作者: db-_-    时间: 2022-6-16 09:53
小烟雨的人家 发表于 2022-6-14 15:13
牛批哇,大佬,重新打开确实就看到了,是不是程序结束增加一个刷新设计的函数就可以了;
至于你跟楼上的 ...

抱歉,还要修改一下。

改成cmdImport = strcat("dxf2a.exe -u MILS -v MM"  " -a 2 -g " " test.cnv " " xx200.dxf " "M_XXX00009VB.brd")
axlRunBatchDBProgram("dxf2a" cmdImport ?noUnload nil  ?logfile "dxf2a.log")


然后 reopen



作者: 小烟雨的人家    时间: 2022-6-17 09:08
db-_- 发表于 2022-6-16 09:53
抱歉,还要修改一下。

改成cmdImport = strcat("dxf2a.exe -u MILS -v MM"  " -a 2 -g " " test.cnv " ...

好的感谢大佬,已经搞定了,确实可行的




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