hihand2000 发表于 2014-8-5 19:44:36

为何通过lsp在autocad中打开dwg图不成功?

想通过lsp文件在autocad中打开用户自选的文件,但是执行
(command "open")没有任何反应,没有预想的在autocad中弹出对话框选择文件
请问要如何才能做到这个效果?



张大锤 发表于 2018-6-27 11:20:49

本帖最后由 张大锤 于 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:21:43

本帖最后由 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")

hihand2000 发表于 2018-6-29 10:42:15

张大锤 发表于 2018-6-27 11:20
我有办法 打开同文件夹里的 文件 是你要的吗?
(setq p1 (list -287084 -239660))
(setq path (getvar "d ...

感谢你的回复

819534890 发表于 2014-8-6 09:47:29

并不是全部命令都能用command方式,command介绍已经说得很清楚,支持绝大部分的cad命令,并非全部。
1、可以采用vla-SendCommand;
2、不建议lisp用这种方式打开文件,打开文件后,lisp处理选中的文件比较难控制。

hihand2000 发表于 2014-8-6 11:08:59

我是看到有一个插件运行后在cad2008运行后相当于在cad里面输入了open命令,等你选择了打开的dwg文件后,然后他另存R14跟dxf文件的功能,因为是fas文件,想自己用lsp也写一个,但是摸索不到方式。

819534890 发表于 2014-8-6 15:11:37

getfiled,通过对话窗方式获得文件名。
再用(command "saveas")保存文件

hihand2000 发表于 2014-8-6 17:21:01

人家关键的运行步骤在于1程序加载 2执行cad的open命令让操作者打开需要的文件,3自动进行存盘转存。先打开文件再存盘确实可以通过getfiled得到文件名,但不是那个插件需要的步骤。
其实为何lsp不能执行在cad里面打开文件的操作呢?

819534890 发表于 2014-8-6 17:54:16

本帖最后由 819534890 于 2014-8-6 18:54 编辑

cad的lisp本来就是针对当前对象(也可以在当前对象中操作其他对象),一旦打开了其他文件,该文件就变成了当前,lisp程序就会暂停执行,直到切换回之前的对象。
你提到的操作,很可能是通过脚本执行的。
其实不用执着用open命令,可以用vla-open,把文件打开在后台,然后对该文件进行保持操作即可。

流动的清泉 发表于 2018-6-26 17:40:45

没一句有用的话

panliang9 发表于 2018-6-27 12:31:09

下面这个是别人的,我用来打开文件。你改下路径和命令名就好了。很好用。



页: [1] 2
查看完整版本: 为何通过lsp在autocad中打开dwg图不成功?