sxh_why 发表于 2010-5-26 22:01:00

求批量插入图纸的程序

<p>1.谁有批量插入图纸的程序,只要能把一个目录下的多张图纸,作为图块依次插入新图中,图块名用原文件名。</p><p>2.我不需要佷好的排版,不需要旋转,各个块能铺开不要叠成一堆就行。</p><p>3.另外我还需要反向操作的程序,即把一张图的各个图块依次输出,图块名做文件名。</p><p></p><p>以上这个东西的用途是,解密。</p>

masterlong 发表于 2010-5-27 00:00:00

<p>不明白的是这样一个程序和解密有什么关联<br/><br/><br/><br/><br/></p><p>归档文件合并.lsp</p><p>1。需要doslib函数库支持</p><p>2。需要手动建立c:\QGY_temp文件夹</p><p>(defun c:insdwgs()<br/>&nbsp;(princ "\n 归档文件合并&nbsp;&nbsp; edit by yuuboo \n")<br/>&nbsp;(setvar "cmdecho" 0)<br/>&nbsp;(setq dwgpath (dos_getdir "选择要操作的文件夹:" (if dwgpath dwgpath "F:\\work归档") "归档文件后处理"))<br/>&nbsp;(if dwgpath<br/>&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;(setq fff (dos_dir (strcat dwgpath "*.dwg") 1))<br/>&nbsp;&nbsp;&nbsp;(setq ini (open "c:\\QGY_temp\\目录列表.ini" "w"))<br/>&nbsp;&nbsp;&nbsp;(foreach x fff<br/>&nbsp;&nbsp;&nbsp;&nbsp;(write-line (strcat dwgpath x) ini)<br/>&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;(setq ini (open "c:\\QGY_temp\\目录列表.ini" "r"))<br/>&nbsp;&nbsp;&nbsp;(insdwgs_main)<br/>&nbsp;&nbsp;)<br/>&nbsp;)<br/>(princ)<br/>)</p><p>(defun ax:2DPoint (pt)<br/>&nbsp;(vl-load-com)<br/>&nbsp;(vlax-make-variant<br/>&nbsp;&nbsp;(vlax-safearray-fill<br/>&nbsp;&nbsp;&nbsp;(vlax-make-safearray vlax-vbdouble '(0 . 1))<br/>&nbsp;&nbsp;&nbsp;(list (car pt) (cadr pt))<br/>&nbsp;&nbsp;)<br/>&nbsp;)<br/>)</p><p>(defun ax:GetBoundingBox (ent / ll ur)<br/>&nbsp;(vl-load-com)<br/>&nbsp;(vla-getboundingbox (vlax-ename-&gt;vla-object ent) 'll 'ur)<br/>&nbsp;(mapcar 'vlax-safearray-&gt;list (list ll ur))<br/>)</p><p>(defun insdwgs_main()<br/>&nbsp;(setq ss-ss '())<br/>&nbsp;(while (and (setq newdwg (read-line ini)) (/= newdwg ""))<br/>&nbsp;&nbsp;(command "insert" newdwg "non" "0,0" 1 1 0)<br/>&nbsp;&nbsp;(setq dwg_block (entlast))<br/>&nbsp;&nbsp;(setq ss (ssadd))<br/>&nbsp;&nbsp;(setq ss (ssadd (entlast) ss))<br/>&nbsp;&nbsp;(setq box (ax:getboundingbox dwg_block))<br/>&nbsp;&nbsp;(setq p1 (car box))<br/>&nbsp;&nbsp;(setq p2 (cadr box))<br/>&nbsp;&nbsp;(setq pp (polar (list (car p2)(cadr p1)) (* pi 0.25) 20000))<br/>&nbsp;;;&nbsp;(command "text" "non" pp 20000 0 (substr (nth 2 (dos_strtokens (nth 2 (dos_splitpath newdwg)) "-")) 3))<br/>&nbsp;(command "text" "non" pp 20000 0 newdwg);;我的程序是针对工程图纸合并所写,所以20000的字高对一般的应用可能大了,自己改吧<br/>&nbsp;&nbsp;(setq ss (ssadd (entlast) ss))<br/>&nbsp;&nbsp;(setq diss (- (cadr p2)(cadr p1) -10000))<br/>&nbsp;&nbsp;(setq ss-ss (cons (list (list (car p1)(cadr p2)) diss ss) ss-ss))</p><p>&nbsp;)<br/>&nbsp;(setq po '(0 0))<br/>&nbsp;(setq ss-ss (reverse ss-ss))<br/>&nbsp;(foreach x ss-ss<br/>&nbsp;&nbsp;(setq aa (nth 0 x))<br/>&nbsp;&nbsp;(setq bb (nth 1 x))<br/>&nbsp;&nbsp;(setq cc (nth 2 x))<br/>&nbsp;&nbsp;(command "move" cc "" "non" aa "non" po)<br/>&nbsp;&nbsp;(setq po (polar po (* pi -0.5) bb))<br/>&nbsp;)<br/>&nbsp;(command "zoom" "e")<br/>&nbsp;(close ini)<br/>&nbsp;<br/>&nbsp;(setq filename (getfiled "保存文件" dwgpath "dwg" 1))<br/>&nbsp;(if (findfile filename)<br/>&nbsp;&nbsp;(command "save" filename "y")<br/>&nbsp;&nbsp;(command "save" filename)<br/>&nbsp;)<br/>&nbsp;(setvar "filedia" 1)</p><p>(princ)<br/>)</p>

masterlong 发表于 2010-5-27 00:04:00

<p>输出所有块</p><p>(defun c:wab()<br/>&nbsp;(setq bk_list '())<br/>&nbsp;(setq aa (tblnext "block" T))<br/>&nbsp;(if aa (setq aa (cdr (assoc 2 aa))))<br/>&nbsp;(if aa (setq bk_list (cons aa bk_list)))<br/>&nbsp;(while (setq aa (tblnext "block"))<br/>&nbsp;&nbsp;(setq aa (cdr (assoc 2 aa)))<br/>&nbsp;&nbsp;(setq bk_list (cons aa bk_list))<br/>&nbsp;)<br/>&nbsp;(prin1 bk_list)<br/>&nbsp;(foreach x bk_list<br/>&nbsp;&nbsp;(if (findfile (strcat "d:\\eeeeeeeeee\\" x ".dwg"))<br/>&nbsp;&nbsp;&nbsp;(command "wblock" (strcat "d:\\eeeeeeeeee\\" x) "y" "=")<br/>&nbsp;&nbsp;&nbsp;(command "wblock" (strcat "d:\\eeeeeeeeee\\" x) "=")<br/>&nbsp;&nbsp;)<br/>&nbsp;)<br/>&nbsp;(princ "\n+++")<br/>(princ)<br/>)</p><p></p>

sxh_why 发表于 2010-5-28 20:04:00

<p>谢谢了,</p>
<p>&nbsp;</p>
<p>和解密的关系有:</p>
<p>1.假如需要偷偷解密,当然要合并一下再搞。</p>
<p>2.有些加密的cad可以通过word的导入导出解密,当然没人想一次只搞一张。</p>

pengfei2010 发表于 2013-6-7 12:57:35

学习了,不过不知道doslib函数库是什么呀?

guojianrui 发表于 2018-1-16 16:37:58

这就是个批量插入块的程序,其实最好按照坐标值依次递增的顺序插入,这样就不会乱。上某宝搜搜就行了。
页: [1]
查看完整版本: 求批量插入图纸的程序