简单程序挂起
我以为这个简单的程序可以运行,但看起来我要求它做一些代码挂起的事情,我必须终止这个进程。伪代码为:
[列表=1]
[*]选择所有图形
[*]Copybase 0,0
[*]对新图形执行“qnew”
[*]将剪辑0,0粘贴到新图形中
[/列表]
哪个部分不正确?
格雷格 猜测您想将所选内容粘贴到新模板文件中,但无法使用另存为。。。vla sendcommand有什么用???
但是为了回答你的问题,我认为只要你开始一个新的绘图,你的lisp例程就会停止,因为lisp在它自己的名称空间中运行。你需要的是一个脚本文件。。。
gr.Rlx 好的,这个效果更好,因为它会创建一个新的图形,并且不会挂起。但它不粘贴信息,它想创建两个图形。
(defun c:test ( / s )
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "select all \r\r"))
(if (setq s (ssget)) (command "_.copybase" "_non" '(0 0) s ""))
(princ)
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "qnew \r"))
(command "_.pasteclip" "_non" '(0 0))
(princ)
)
(vl-load-com)Greg
嗯。既然你提到了,那就有道理了。那么VBA例程可以工作了?
格雷格 您也可以尝试制作一个脚本文件,例如“change\u template”。scr’并将其保存在您的支持路径中,但可以说是c:/temp/
脚本文件可能类似于:
如果autocad模板是预设的,则第7行上可能不需要空行。
然后,您只需调用脚本:
剩下的就是用您选择的名称保存图形
oopsie有一个0,0太多,更新了上面的代码
是的,VBA应该可以工作,因为VBA在autocad上作为一个对象进行操作,而lisp只存在于绘图任务中。
谢谢rlx!我试试看。
格雷格
谢谢现在,这是我的新计划B。
格雷格 计划见
很好的捕捉Grrr,可能使用起来更复杂一些,但也更有趣:-)
页:
[1]
2