[求助]插入块的问题
我做了一个LISP程序 插入大量图块,循环调用(command "insert" )命令感觉速度很慢,简直无法忍受 有没有其他函数可以代替insert命令,可以提高速度 entmake 本帖最后由 作者 于 2010-7-19 12:50:32 编辑 <br /><br /> <p>谢谢ZZXXQQ老兄,经过一晚上的研究用如下代码可以插入块</p><p><font face="Verdana"> (setq dir "d:/符号/")<br/> (setq ff (vl-directory-files dir "*.dwg" 0))<br/> (setq l (length ff))<br/> (setq pt (list 0 0 0))<br/> (setq n 0)<br/> (while (< n l)<br/> (setq wjm (nth n ff))<br/> (command "insert" wjm pt 0.5 0.5 0)<br/> (entmake (list (cons 0 "BLOCK")<br/> (cons 2 wjm)<br/> (cons 70 0)<br/> (cons 10 pt)<br/> )<br/> )<br/> (entmake (cdr (entget (entlast))))<br/> (setq km (entmake (list '(0 . "ENDBLK"))))<br/> (entmake (list (cons 0 "INSERT") (cons 2 km)(cons 10 pt)))<br/> (setq n (1+ n))<br/> )</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> 奇怪,你已经(command "insert" wjm pt 0.5 0.5 0)了,为什么还要entmake?重复插入???? <p>我要循环插入大量的同样的块作为符号,</p>
<p>问题解决了 是我变量设置的问题 改了下变量已经好了</p>
<p>而且经过测试用ENTMAKE效率比COMMAND好的多 大概速度快了一倍</p>
<p>那么现在又有一个问题</p>
<p>是不是用entmake 构造所有的图元都比COMMAND快呢?</p>
<p>例如 entmake 和(command "dtext")和vla-addtext 这几种方法哪个更好一些</p> 我也想批量插入块啊,一千多个图,都要插入同一个块,其实也就是图框里面的签名,当初画图时没有用外部参照,现在实在是头疼啊,有没有批量插入块的方法啊。所有图的坐标应该是一样的。
页:
[1]