关于entmod
我发现entmod用lisp来更改点Z坐标,但我也想更改颜色编号。我尝试了以下代码:(defun c:ELEVAZIONE (/ ss i sn pts txt d di e ent)
;;; ==-- Author : Tharwat Al Shoufi --== ;;;
;;; Entmod the Z value of Points according ;;;
;;; to the nearest text's value ;;;
(if (setq ss (ssget '((0 . "POINT,*TEXT"))))
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(if (eq (cdr (assoc 0 (entget sn))) "POINT")
(setq pts (cons (list (cdr (assoc 10 (entget sn))) sn) pts))
(setq txt (cons (list (cdr (assoc 10 (entget sn))) sn) txt))
)
)
)
(foreach p pts
(foreach x txt
(if (not d)
(setq d (distance (car p) (car x))
e (cadr x)
)
(if (< (setq di (distance (car p) (car x))) d)
(setq d di
e (cadr x)
)
)
)
)
(setq d nil)
(if (numberp (read (cdr (assoc 1 (entget e)))))
(progn
(entmod
(subst
(cons 10
(list (car (cdr (assoc 10 (setq ent (entget (cadr p))))))
(cadr (cdr (assoc 10 ent)))
(read (cdr (assoc 1 (entget e))))
)
)
(assoc 10 ent)
ent
)
)
(entmod (subst (cons 62 1) (assoc 62 ent) ent)) ; this is my code
))
)
(princ "\n Written by Tharwat Al Shoufi")
(princ)
)
但不起作用。有人能帮我吗? 我以这种方式更新了代码,它似乎有效:
(defun c:ELEVAZIONE (/ ss i sn pts txt d di e ent)
;;; ==-- Author : Tharwat Al Shoufi --== ;;;
;;; Entmod the Z value of Points according ;;;
;;; to the nearest text's value ;;;
(if (setq ss (ssget '((0 . "POINT,*TEXT"))))
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(if (eq (cdr (assoc 0 (entget sn))) "POINT")
(setq pts (cons (list (cdr (assoc 10 (entget sn))) sn) pts))
(setq txt (cons (list (cdr (assoc 10 (entget sn))) sn) txt))
)
)
)
(foreach p pts
(foreach x txt
(if (not d)
(setq d (distance (car p) (car x))
e (cadr x)
)
(if (< (setq di (distance (car p) (car x))) d)
(setq d di
e (cadr x)
)
)
)
)
(setq d nil)
(if (numberp (read (cdr (assoc 1 (entget e)))))
(progn
(setq elist
(subst
(cons 10
(list (car (cdr (assoc 10 (setq ent (entget (cadr p))))))
(cadr (cdr (assoc 10 ent)))
(read (cdr (assoc 1 (entget e))))
)
)
(assoc 10 ent)
ent
))
(setq elist (subst (cons 62 1) (assoc 62 elist) elist))
(entmod elist)
))
)
(princ "\n Fatto!")
(princ)
) 您还需要处理具有颜色BYLAYER的实体
(setq elist (if (assoc 62 elist)
(subst (cons 62 1) (assoc 62 elist) elist)
(append elist (list (cons 62 1)))))
-大卫 好的,谢谢,太好了
页:
[1]