Tharwat 发表于 2022-7-5 16:06:45

没问题。

samifox 发表于 2022-7-5 16:11:17

你好
 
为什么这个不提取点?
 

(setq plst (mapcar '(lambda (x) (assoc 10 lst)) lst))

Tharwat 发表于 2022-7-5 16:13:04

 
 
分配给变量“lst”的值是多少?

samifox 发表于 2022-7-5 16:17:14

我不是acad的前面,而是我记得的积分列表

Tharwat 发表于 2022-7-5 16:18:43

 
你的答案不够清楚,那么你想用之前的代码做什么?

samifox 发表于 2022-7-5 16:23:44

对不起,当我回家的时候,我会给你完整的密码

David Bethel 发表于 2022-7-5 16:25:35

我首先推荐您学习基本的autolisp。
 
重多段线的gotcha是标题组70和顶点组70代码:
 
->参数->多段线名称

(defun plpts (en / ed mf vn vd vf)

(setq ed (entget en)
       mf (cdr (assoc 70 ed)))

(and (= mf 0)
      (princ "I'm a open 2D Polyline\n"))
(and (= (logand mf 1) 1)
      (princ "I'm a closed Polyline in theM direction\n"))
(and (= (logand mf 2) 2)
      (princ "I'm a curved fit Polyline\n"))
(and (= (logand mf 2) 4)
      (princ "I'm a spline-fit Polyline\n"))
(and (= (logand mf 8) 8)
      (princ "I'm a 3D Polyline\n"))
(and (= (logand mf 16) 16)
      (princ "I'm a 3D Polyline Mesh\n"))
(and (= (logand mf 32) 32)
      (princ "I'm a closed Polyline Mesh in the N direction\n"))
(and (= (logand mf 64) 64)
      (princ "I'm a PFACE Polyline Mesh\n"))

(terpri)

(setq vn (entnext en)
       vd (entget vn))

(while (= "VERTEX" (cdr (assoc 0 vd)))
      (setq vp (cdr (assoc 10 vd))
            vf (cdr (assoc 70 vd)))

;;;Here's where the fun begins!

      (cond ((and (= mf 0)
                  (= vf 0)
                  (= (cdr (assoc 42 vd)) 0))
               (prin1 vp)
               (princ " - I'm a 2D Vertex point\n"))
            ((and (= mf 0)
                  (= vf 0)
                  (/= (cdr (assoc 42 vd)) 0))
               (prin1 vp)
               (princ " - I'm a 2D Bulge Ceneter point\n"))
            ((and (= (logand mf 2) 2)
                  (= (logand vf 1) 1))
               (prin1 vp)
               (princ " - I'm UCS curved fit tangent point\n"))
            ((and (= (logand mf 8) 8)
                   (= (logand vf 1) 32))
               (prin1 vp)
               (princ " - I'm a WCS Vertex point\n"))
            ((and (= (logand mf 16) 16)
                  (= (logand vf 64) 64))
               (prin1 vp)
               (princ " - I'm a WCS Mesh point\n"))
            ((and (= (logand mf 64) 64)
                  (= (logand vf 128) 128))
               (prin1 vp)
               (princ " - I'm a WCS PFACE point\n"))
          );cond

      (setq vn (entnext vn)
            vd (entget vn)))
(prin1))


 
 
基于实体构造,有许多标志组合需要测试。
 
玩得开心-大卫

samifox 发表于 2022-7-5 16:30:01

你好
 
您将如何使用mapcar检索顶点?

hanhphuc 发表于 2022-7-5 16:31:20

如果检索顶点坐标,

(mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget(car(entsel)))))

;or

(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget(car(entsel)))))


*注意:但是,只有不带凸起的LW多段线

samifox 发表于 2022-7-5 16:36:04

可以同时混合autolisp和vlisp吗?
页: 1 [2]
查看完整版本: 从中检索顶点列表