piao1887 发表于 2010-7-18 22:29:00

[求助]插入块的问题

我做了一个LISP程序 插入大量图块,循环调用(command "insert" )命令感觉速度很慢,简直无法忍受 有没有其他函数可以代替insert命令,可以提高速度

ZZXXQQ 发表于 2010-7-18 23:10:00

entmake

piao1887 发表于 2010-7-19 11:31:00

本帖最后由 作者 于 2010-7-19 12:50:32 编辑 <br /><br /> <p>谢谢ZZXXQQ老兄,经过一晚上的研究用如下代码可以插入块</p>
<p><font face="Verdana">&nbsp; (setq dir "d:/符号/")<br/>&nbsp; (setq ff (vl-directory-files dir "*.dwg" 0))<br/>&nbsp; (setq l (length ff))<br/>&nbsp; (setq pt (list 0 0 0))<br/>&nbsp; (setq n 0)<br/>&nbsp; (while (&lt; n l)<br/>&nbsp;&nbsp;&nbsp; (setq wjm (nth n ff))<br/>&nbsp;&nbsp;&nbsp; (command "insert" wjm pt 0.5 0.5 0)<br/>&nbsp;&nbsp;&nbsp; (entmake (list (cons 0 "BLOCK")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (cons 2 wjm)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (cons 70 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (cons 10 pt)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (entmake (cdr (entget (entlast))))<br/>&nbsp;&nbsp;&nbsp; (setq km (entmake (list '(0 . "ENDBLK"))))<br/>&nbsp;&nbsp;&nbsp; (entmake (list (cons 0 "INSERT") (cons 2 km)(cons 10 pt)))<br/>&nbsp;&nbsp;&nbsp; (setq n (1+ n))<br/>&nbsp; )</font></p>
<p>但是问题又出来了 这样插入块之后 再用entmake的话得到的块角度都是错的 我需要设置每个插入的块的i角度 我试着用(command "rotate"改块角度 但是会出错,请问用ENTMAKE的时候怎么设置块角度</p>
<p>我用(entmake (list (cons 0 "INSERT") (cons 2 km)(cons 10 pt)(cons 50 jd)))这样插入块为什么会出错呢 “<font face="Verdana">错误: 出现异常: 0xC0000005 (访问冲突)"</font><br/></p>

danxingpen 发表于 2010-7-19 13:03:00

奇怪,你已经(command "insert" wjm pt 0.5 0.5 0)了,为什么还要entmake?重复插入????

piao1887 发表于 2010-7-19 13:52:00

<p>我要循环插入大量的同样的块作为符号,</p>
<p>问题解决了 是我变量设置的问题 改了下变量已经好了</p>
<p>而且经过测试用ENTMAKE效率比COMMAND好的多 大概速度快了一倍</p>
<p>那么现在又有一个问题</p>
<p>是不是用entmake 构造所有的图元都比COMMAND快呢?</p>
<p>例如 entmake 和(command "dtext")和vla-addtext 这几种方法哪个更好一些</p>

shalei021647 发表于 2011-11-13 11:29:12

我也想批量插入块啊,一千多个图,都要插入同一个块,其实也就是图框里面的签名,当初画图时没有用外部参照,现在实在是头疼啊,有没有批量插入块的方法啊。所有图的坐标应该是一样的。
页: [1]
查看完整版本: [求助]插入块的问题