明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1501|回复: 6

[LISP]飞哥,调用你原来一个程序出现的错误

[复制链接]
发表于 2005-9-20 18:01 | 显示全部楼层 |阅读模式

飞哥,这是你曾经的一个程序

(defun c:test( / fjm0 fjm1 newdoc )
  (setq fjm0 "***.dwg")
  (setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) fjm0));打开并获得新文档
 
  ;**********以下部分是对新文档进行操作,必须使用ActiveX方法**********************
  (vla-addCircle (vla-get-ModelSpace newdoc) (vlax-3d-point '(3.0 3.0 0.0)) 200.0)
  ;**********操作部分结束,这里的例子是在打开的图中画了一个圆*********************
 
  (setq fjm1 "***.dwg")
  (vla-saveas newdoc fjm1 acr15_DWG);另存打开的文档
  ;或将acr15_dwg改为ac2004_dwg存为2004格式,要在2004及以上版本才可以
  (vla-close newdoc);关闭另存的文档
  (princ)
)

我把其中的文件名字改了,然后执行后出现错误

CAD提示:命令: test
; 错误: Automation 错误。这是怎么回事,谢谢!

发表于 2005-9-20 19:16 | 显示全部楼层

我这里没问题,但是你要注意:

1。程序名不要用TEst

2。文件一定存在,并能打开。

3。文件路径中的 "\" 要用 "/" 或 "\\"

(defun c:tt( / fjm0 fjm1 newdoc )
  (setq fjm0 "d:/1.dwg")
  (setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) fjm0));打开并获得新文档
 
  ;**********以下部分是对新文档进行操作,必须使用ActiveX方法**********************
  (vla-addCircle (vla-get-ModelSpace newdoc) (vlax-3d-point '(3.0 3.0 0.0)) 200.0)
  ;**********操作部分结束,这里的例子是在打开的图中画了一个圆*********************
 
  (setq fjm1 "d:/2.dwg")
  (vla-saveas newdoc fjm1 acr15_DWG);另存打开的文档
  ;或将acr15_dwg改为ac2004_dwg存为2004格式,要在2004及以上版本才可以
  (vla-close newdoc);关闭另存的文档
  (princ)
)

 楼主| 发表于 2005-9-21 08:29 | 显示全部楼层

中间过程我知道,谢谢,应该没有错的

我现在有一个问题,各位看看能不能使用vlisp解决

我想编写一个能够自动测试图纸打开时间的程序,就是说打开一个图纸看他从开始到图纸完全打开,可以响应操作的具体时间,一般针对较大的图纸,大家看能解决么

我已开始想得太简单了,以为使用(getvar "cdate")就可以了,结果不是这么简单,看来要使用activeX的方法了,我不大精通,请各位指教!

发表于 2005-9-21 11:00 | 显示全部楼层

(getvar "cdate")应该是可以的吧,Lisp是一句一句的执行的。

 楼主| 发表于 2005-9-21 12:56 | 显示全部楼层

不是的,打开一幅新图后,那第二个cdate应该是新图里的了,反正挺麻烦的我觉得,这又涉及到在新图纸上操作的问题了,大家帮忙吧

发表于 2005-9-21 13:12 | 显示全部楼层
cad里有个系统变量是保存图形打开的当前时间的,具体我忘了,不知道有没用
发表于 2005-9-21 16:41 | 显示全部楼层

(defun c:test( / fjm0 fjm1 newdoc )
  (setq fjm0 "1.dwg")
  (setq time (getvar "cdate"))
  (setq newdoc (vla-open (vla-get-documents (vlax-get-acad-object)) fjm0));打开并获得新文档
  (princ (strcat "耗时" (rtos (* 1000000 (- (getvar "cdate") time)) 2 14) "秒"))
  (princ)
)

计算时间这样就可以了...如果超过60秒,自己折腾一下60秒升一分的进制问题...

不过我觉得,如果这么长时间,自己拿个秒表记一下也可以了,

 

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

本版积分规则

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

GMT+8, 2024-5-5 08:43 , Processed in 0.489934 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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