为何通过lsp在autocad中打开dwg图不成功?
想通过lsp文件在autocad中打开用户自选的文件,但是执行(command "open")没有任何反应,没有预想的在autocad中弹出对话框选择文件
请问要如何才能做到这个效果?
本帖最后由 张大锤 于 2018-6-27 11:27 编辑
我有办法 打开同文件夹里的 文件 是你要的吗?
(setq p1 (list -287084 -239660))
(setq path (getvar "dwgprefix"))
(setq filedxf (vl-directory-files path "*.dxf"))
(setq intx (LENGTH filedxf))
(setq n 0)
(setvar "osmode" 0)
(repeat intx
(setq filename (nth n filedxf))
(setq 1fp (wcmatch filename "***.dxf"))
(if (/= 1fp nil)
(command "-insert" filename p1 "1" "1" "0")
)
(setq n (1+ n))
)
这个不是我写的 但是可以 导入同文件夹的文件
本帖最后由 llsheng_73 于 2018-6-29 13:24 编辑
;;调用open命令
(vla-SendCommand(vla-get-ActiveDocument(vlax-get-acad-object))(strcat"open"(chr 13)))
;;以后台方式打开指定文件
(vla-open(vla-get-Documents(vlax-get-acad-object))"C:\\Users\\Administrator\\Documents\\Tencent Files\\275988734\\FileRecv\\test.dwg")
张大锤 发表于 2018-6-27 11:20
我有办法 打开同文件夹里的 文件 是你要的吗?
(setq p1 (list -287084 -239660))
(setq path (getvar "d ...
感谢你的回复 并不是全部命令都能用command方式,command介绍已经说得很清楚,支持绝大部分的cad命令,并非全部。
1、可以采用vla-SendCommand;
2、不建议lisp用这种方式打开文件,打开文件后,lisp处理选中的文件比较难控制。 我是看到有一个插件运行后在cad2008运行后相当于在cad里面输入了open命令,等你选择了打开的dwg文件后,然后他另存R14跟dxf文件的功能,因为是fas文件,想自己用lsp也写一个,但是摸索不到方式。 getfiled,通过对话窗方式获得文件名。
再用(command "saveas")保存文件
人家关键的运行步骤在于1程序加载 2执行cad的open命令让操作者打开需要的文件,3自动进行存盘转存。先打开文件再存盘确实可以通过getfiled得到文件名,但不是那个插件需要的步骤。
其实为何lsp不能执行在cad里面打开文件的操作呢? 本帖最后由 819534890 于 2014-8-6 18:54 编辑
cad的lisp本来就是针对当前对象(也可以在当前对象中操作其他对象),一旦打开了其他文件,该文件就变成了当前,lisp程序就会暂停执行,直到切换回之前的对象。
你提到的操作,很可能是通过脚本执行的。
其实不用执着用open命令,可以用vla-open,把文件打开在后台,然后对该文件进行保持操作即可。 没一句有用的话 下面这个是别人的,我用来打开文件。你改下路径和命令名就好了。很好用。
页:
[1]
2