我发现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)
- )
但不起作用。有人能帮我吗? |