[求助]如何将两个DWG文件的内容根据一定规律放在一个DWG文件中?
<p>因为工作需要,得将两个DWG文件的内容根据一定规律放在一个DWG文件中,每次都是手工操作,就两张图还好办,如果有20张图呢?200张图呢?所以想让程序来执行了。</p><p>每张图宽度都是297,长度未知。</p><p>思路已经有了,就是不知道怎么去写。请前辈们帮帮忙。</p><p>首先将需要贴在一起图放在同一文件夹下,打开第一张图,全部复制,关闭第一张图。打开第二张图,全部MOVE,EXTMIN→(0 0 0),粘贴,(0 360 0),另存为文件名AA1,关闭,打开下一张图,全部复制……如此循环下去</p><p>现在第一难点是如何获取该文件夹下所有的文件列表,第二疑问是这个思路会不会导致程序执行速度非常慢?</p> <p>您用的 CAD 是那一个版次呀</p><p>获取该文件夹下所有的文件列表<br/>vl-directory-files</p> <p>谢谢2楼,但我用(command "open" "filename")怎么打不开文件呢?</p><p>或者问怎样用LISP打开CAD文件(已经文件名和路径)?</p> <a href="http://www.autolisp.org/lisps-by-brian.lsp">http://www.autolisp.org/lisps-by-brian.lsp</a><br/>===><br/>(defun cmdOpen (name) ....) 用DOSLib,会更方便些 所有操作命令要用vla- <p>感谢5楼,这段程序我将借用,虽然还看不明白是什么意思。</p><p>Doslib听说过,但现在所学甚浅,还不敢去试用它。</p><p>vla-s也不怎么懂</p><p>需要更深入的学习啊!</p> 打开第一张图时就死在那里了,请前辈位再指点迷津!!(defun c:gt (/ ACADLSP EXTMIN LST N NEWNAME PATH)
(setvar "SDI" 0)
(setq acadlsp (getvar "acadlspasdoc"))
(setvar "acadlspasdoc" 0)
(setq lst (vl-directory-files
(setq path (getvar "dwgprefix"))
"*.dwg"
) ;_ End vl-directory-files
) ;_ End setq
(setq n -1)
(repeat (fix (/ (length lst) 2.0))
(cmdopen (strcat path (nth (setq n (1+ n)) lst)))
(command "copyclip" "all" "")
(command "close" "n")
(cmdopen (strcat path (nth (setq n (1+ n)) lst)))
(command "zoom" "e")
(setq extmin (getvar "extmin"))
(command "move" "all" "" extmin (list 0 0 0))
(command "PASTECLIP" (list 0 360 0))
(if (findfile (setq newname (strcat "Print" (itoa (/ n 2)) ".dwg")))
(command "wblock" newname "Y" "*")
(command "wblock" newname "*")
) ;_ End if
(command "close" "n")
) ;_ End repeat
(setvar "acadlspasdoc" acadlsp)
(princ)
) ;_ End defun
(defun cmdopen (name) ; by others
(vl-load-com)
(if (= 0 (getvar "SDI"))
(vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) name))
(vla-sendcommand
(vla-get-activedocument (vlax-get-acad-object))
(strcat "(command \"_.OPEN\")\n" name "\n")
) ; vla-activate
) ; if sdi
) ; defun cmdopen
为什么要复制?直接在指定位置插入该文件为块,然后炸开,,,,何必打开然后再复制????
页:
[1]
2