明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2750|回复: 8

请教一下autolisp中DXF组码330所提供的信息如何运用

[复制链接]
发表于 2009-7-21 11:46:00 | 显示全部楼层 |阅读模式

大家好,

我在编程的时候遇到一个问题,请看下面一段图元表。

((-1 . <图元名: 7ef034a8>) (0 . "HATCH") (330 . <图元名: 7ef01cf8>) (5 . "20D") (100
. "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbHatch") (10 0.0
0.0 0.0) (210 0.0 0.0 1.0) (2 . "SOLID") (70 . 1) (71 . 1) (91 . 1) (92 . 7)
(72 . 0) (73 . 1) (93 . 4) (10 210.0 105.0 0.0) (10 10.0 105.0 0.0) (10 10.0
5.0 0.0) (10 210.0 5.0 0.0) (97 . 4) (330 . <图元名: 7ef03470>) (330 . <图元名:
7ef03468>) (330 . <图元名: 7ef03480>) (330 . <图元名: 7ef03478>) (
75 . 0) (76 . 1)
(47 . 0.408141) (98 . 1) (10 121.19 46.0911 0.0) (450 . 0) (451 . 0) (460 .
0.0) (461 . 0.0) (452 . 1) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5) (421 .
255) (463 . 1.0) (63 . 7) (421 . 16777215) (470 . "LINEAR"))

标红的地方是都是组码330开头,我查了一下这个表示 软指针句柄 。我不太懂这个是什么意思。

但是后面4个图元名是我需要操作的 图元的 图元名称。

比如我想对这4个图元进行旋转,那么我该如何从这个图元表中,提取出这4个图元的信息呢?

如果我用(cdr (assoc 330 elist)),只能提取到 <图元名: 7ef01cf8>,但是这并不是我需要的。

谢谢各位啦。

发表于 2009-7-21 11:58:00 | 显示全部楼层

(cdr(vl-remove-if-not ....))

 楼主| 发表于 2009-7-21 12:10:00 | 显示全部楼层
狂刀无痕发表于2009-7-21 11:58:00(cdr(vl-remove-if-not ....))

非常感谢你的回答,但是我现在对visual lisp 的拓展函数还不是 很熟,能不能稍微说详细点。。谢谢啦

发表于 2009-8-2 11:22:00 | 显示全部楼层
第一个先删除再取
发表于 2009-8-4 20:34:00 | 显示全部楼层

将上述图元表赋值给变量a,如下写

(setq b '())

(foreach x a

  (if (= (car x) 330)

    (setq b (append (list x) b) ) 

  )

)

(setq c (cdr b))

以上语句返回c表,即为所需要的数据。

 楼主| 发表于 2009-8-5 15:33:00 | 显示全部楼层
ljttjl发表于2009-8-4 20:34:00将上述图元表赋值给变量a,如下写(setq b '())(foreach x a   (if (= (car x) 330)     (setq b (append (list x) b) )    ))(setq c (cdr b))以上语句返回c表,

非常感谢你

发表于 2009-8-5 16:03:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-8-5 16:18:00 | 显示全部楼层
liminnet发表于2009-8-5 16:03:00(mapcar 'cdr  (vl-remove-if-not  '(lambda (x) (=  (car x) 330)) (entget (car (entsel)))))

两次遍历不妥,估计还是while+member快

 楼主| 发表于 2009-8-5 16:35:00 | 显示全部楼层
liminnet发表于2009-8-5 16:03:00(mapcar 'cdr  (vl-remove-if-not  '(lambda (x) (=  (car x) 330)) (entget (car (entsel)))))

谢谢你的指点。终于明白了。。。呵呵。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 09:40 , Processed in 0.165523 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表