明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: wangfq332

[求助]LISP调用打开(OPEN)命令的问题(已解决)

  [复制链接]
发表于 2009-5-25 06:27:00 | 显示全部楼层

(setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) "d:\\temp\\t1.dwg"))

(setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) "d:\\temp\\t2.dwg"))

(setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) "d:\\temp\\t3.dwg"))

在Acad2004,Acad2010下测试都正常。

发表于 2009-5-25 09:23:00 | 显示全部楼层
是可以,原来是因为我安装了别的外挂软件的原因,卸载后就好了
 楼主| 发表于 2009-5-25 11:55:00 | 显示全部楼层
英雄无敌发表于2009-5-24 8:48:00由于LISP不能跨文档运行,所以只能在单文档模式下打开文件,也就是能在当前的文档下打开了,如果要运行多文档打开,可能还得用VBA,我试了试在VL下用VL-OPEN,虽然可以打开,但打开后CAD就死了

谢谢无敌兄的解答!现在刚学习,既然这么难实现,那就只好先学好LISP再研究了。再次谢谢各位!

发表于 2009-5-25 16:45:00 | 显示全部楼层

你的功能可以这样写,因为一开始因为CAD软件的问题,没有调试通过,所以没有放上来。

(defun c:fa ()
  (if (null oldfil);如果要在每个图形中都能记住,则要在注册表中保存
    (setq oldfil (vl-filename-directory (findfile "acad.exe")))
  )
  (if (/= (substr oldfil (strlen oldfil)) "\\")
    (setq oldfil (strcat oldfil "\\"))
  )

  (setq fil (getfiled "打开图形" oldfil "dwg;dxf" 0))
  (if (/= nil fil)
    (progn
      (setq oldfil (vl-filename-directory fil))
      (vla-open (setq docs (vla-get-documents
        (setq cadobj (vlax-get-acad-object))
      )
  )
  fil
      )

      (vla-activate (vla-item docs (1- (vla-get-count docs))));这句话是激活最后打开的文件,可以根据需要去掉

    )
  )

)

发表于 2009-5-26 08:32:00 | 显示全部楼层

此句 (setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) "e:\\aa.dwg")) 我在2004下试验也没问题,估计是CAD的安装问题。

 楼主| 发表于 2009-5-26 08:54:00 | 显示全部楼层

无敌兄,你的代码在CAD2010下测试通过!谢谢了。

看来LISP可以实现我们需要的大多数功能!虽然我是新手,还不能理解你的代码的意思。但我会好好研究的!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 18:32 , Processed in 0.142045 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表