请教一下autolisp中DXF组码330所提供的信息如何运用
<p>大家好,</p><p>我在编程的时候遇到一个问题,请看下面一段图元表。</p><p>((-1 . <图元名: 7ef034a8>) (0 . "HATCH") <font color="#ff0000">(330 . <图元名: 7ef01cf8>)</font> (5 . "20D") (100 <br/>. "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbHatch") (10 0.0 <br/>0.0 0.0) (210 0.0 0.0 1.0) (2 . "SOLID") (70 . 1) (71 . 1) (91 . 1) (92 . 7) <br/>(72 . 0) (73 . 1) (93 . 4) (10 210.0 105.0 0.0) (10 10.0 105.0 0.0) (10 10.0 <br/>5.0 0.0) (10 210.0 5.0 0.0) (97 . 4) (<font color="#ff0000">330 . <图元名: 7ef03470>) (330 . <图元名: <br/>7ef03468>) (330 . <图元名: 7ef03480>) (330 . <图元名: 7ef03478>) (</font>75 . 0) (76 . 1) <br/>(47 . 0.408141) (98 . 1) (10 121.19 46.0911 0.0) (450 . 0) (451 . 0) (460 . <br/>0.0) (461 . 0.0) (452 . 1) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5) (421 . <br/>255) (463 . 1.0) (63 . 7) (421 . 16777215) (470 . "LINEAR"))</p><p></p><p>标红的地方是都是组码330开头,我查了一下这个表示 软指针句柄 。我不太懂这个是什么意思。</p><p>但是后面4个图元名是我需要操作的 图元的 图元名称。</p><p>比如我想对这4个图元进行旋转,那么我该如何从这个图元表中,提取出这4个图元的信息呢?</p><p>如果我用(cdr (assoc 330 elist)),只能提取到 <图元名: 7ef01cf8>,但是这并不是我需要的。</p><p>谢谢各位啦。</p> <p>(cdr(vl-remove-if-not ....))</p> 狂刀无痕发表于2009-7-21 11:58:00static/image/common/back.gif(cdr(vl-remove-if-not ....))<p>非常感谢你的回答,但是我现在对visual lisp 的拓展函数还不是 很熟,能不能稍微说详细点。。谢谢啦</p> 第一个先删除再取 <p>将上述图元表赋值给变量a,如下写</p><p>(setq b '())</p><p>(foreach x a </p><p> (if (= (car x) 330) </p><p> (setq b (append (list x) b) ) </p><p> )</p><p>)</p><p>(setq c (cdr b))</p><p>以上语句返回c表,即为所需要的数据。</p> ljttjl发表于2009-8-4 20:34:00static/image/common/back.gif将上述图元表赋值给变量a,如下写(setq b '())(foreach x a (if (= (car x) 330) (setq b (append (list x) b) ) ))(setq c (cdr b))以上语句返回c表,
<p>非常感谢你</p> liminnet发表于2009-8-5 16:03:00static/image/common/back.gif(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 330)) (entget (car (entsel)))))
<p>两次遍历不妥,估计还是while+member快</p> liminnet发表于2009-8-5 16:03:00static/image/common/back.gif(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 330)) (entget (car (entsel)))))
<p>谢谢你的指点。终于明白了。。。呵呵。</p>
页:
[1]