dinosaurhxe 发表于 2008-6-16 14:05:00

[求助]如何将两个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>

Andyhon 发表于 2008-6-16 16:22:00

<p>您用的 CAD 是那一个版次呀</p><p>获取该文件夹下所有的文件列表<br/>vl-directory-files</p>

liminnet 发表于 2008-6-16 17:34:00

dinosaurhxe 发表于 2008-6-17 08:12:00

<p>谢谢2楼,但我用(command "open" "filename")怎么打不开文件呢?</p><p>或者问怎样用LISP打开CAD文件(已经文件名和路径)?</p>

Andyhon 发表于 2008-6-17 08:41:00

<a href="http://www.autolisp.org/lisps-by-brian.lsp">http://www.autolisp.org/lisps-by-brian.lsp</a><br/>===&gt;<br/>(defun cmdOpen (name) ....)

lionyoyo 发表于 2008-6-17 10:35:00

用DOSLib,会更方便些

byghbcx 发表于 2008-6-17 10:48:00

所有操作命令要用vla-

dinosaurhxe 发表于 2008-6-17 12:36:00

<p>感谢5楼,这段程序我将借用,虽然还看不明白是什么意思。</p><p>Doslib听说过,但现在所学甚浅,还不敢去试用它。</p><p>vla-s也不怎么懂</p><p>需要更深入的学习啊!</p>

dinosaurhxe 发表于 2008-6-17 13:37:00

打开第一张图时就死在那里了,请前辈位再指点迷津!!
(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

xxsheng 发表于 2008-6-17 17:14:00

为什么要复制?直接在指定位置插入该文件为块,然后炸开,,,,何必打开然后再复制????
页: [1] 2
查看完整版本: [求助]如何将两个DWG文件的内容根据一定规律放在一个DWG文件中?