相同群码值怎么获得元素
本帖最后由 a4587332 于 2014-9-17 19:40 编辑这个是 leader (引线标注)
使用assoc函数 只能 获得第 一个 关于10的群码的元素~
请问 怎么样 获得其他的元素~
http://bbs.mjtd.com/data/attachment/album/201409/17/190105c4nix2u448fx4ate.jpg 自己顶一下~~~~ 忘记是哪位大侠的源码了?
(defun get-pl-ptlst (plent / ptlst);;;取得多段线顶点的最短代码
(vl-load-com)
(setq ptlst (vl-remove-if
'(lambda (x)
(/= 10 (car x))
)
(entget plent)
)
)
(mapcar 'cdr ptlst)
) vlisp2012 发表于 2014-9-17 19:58 static/image/common/back.gif
忘记是哪位大侠的源码了?
(defun get-pl-ptlst (plent / ptlst);;;取得多段线顶点的最短代码
(vl-loa ...
这个好晦涩难懂阿 a4587332 发表于 2014-9-17 21:16 static/image/common/back.gif
这个好晦涩难懂阿
先练基本功,打好基础! Gu_xl 发表于 2014-9-17 21:27 static/image/common/back.gif
先练基本功,打好基础!
哈哈~~ 目前还在lisp 没接触vlisp的层面
谢谢
但是一定会看懂它的 本帖最后由 llsheng_73 于 2014-9-17 23:04 编辑
(defun lwplxy(e)(vl-remove'nil(mapcar'(lambda(x)(if(=(car x)10)(cdr x)))(entget e))))
(defun lwplxy(e)(mapcar'cdr(vl-remove-if'(lambda(x)(/=(car x)10))(entget e))))
两个办法没本质区别,也没测试过哪一种会更快或者没多大出入
((defun Plinexy(e / p a b n ob q et d d1 en et) ;;多线段节点坐标(滤掉了多余点,未处理假闭合)
(setq a(entget e)ob(vlax-ename->vla-object e)et(cdr(assoc 0 a))n 0 p nil d nil)
(cond((="LWPOLYLINE"et)
(repeat(length a)(setq b (nth n a) n (+ n 1))
(if (= 10 (car b))(progn
(setq q(list (cadr b) (caddr b))d1(vlax-curve-getDistAtPoint ob q))
(if p (if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))
(setq p (list q))))
)))
((="POLYLINE"et)
(SETQ EN (ENTGET (SETQ E (ENTNEXT E))))
(WHILE (/= (CDR (ASSOC 0 EN)) "SEQEND")
(SETQ q (CDR (ASSOC 10 EN))d1(vlax-curve-getDistAtPoint ob q)q(reverse(cdr(reverse q))))
(if p(if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))
(setq p (list q)))
(SETQ EN (ENTGET (SETQ E (ENTNEXT E)))))
(setq p(reverse p))))
P)
如果不考虑去除相邻点完全重合的话简单很多
(defun Plinexy(e / p a ltype )
(setq a(entget e)ltype(cdr(assoc 0 a)))
(if(assoc 90 a)(vl-remove'nil(mapcar'(lambda(x)(if(=(car x)10)(cdr x)))(entget e)))
(progn(while(/=(cdr(assoc 0(setq p(cons(cdr(assoc 10 a))p)e(entnext e)a(entget e))))"SEQEND"))
(cdr(reverse p))))) llsheng_73 发表于 2014-9-17 22:25 static/image/common/back.gif
两个办法没本质区别,也没测试过哪一种会更快或者没多大出入
努力查书在~估计看懂还需要点时间
不过谢谢热心解答 a4587332 发表于 2014-9-17 22:42 static/image/common/back.gif
努力查书在~估计看懂还需要点时间
不过谢谢热心解答
谢谢你的学习方法~~~ 另一种方式:
;...
(setq ent (entget e))
(setq plst (list))
(foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
(setq plst (reverse plst))
;...
页:
[1]
2