请各位大侠同行帮忙看下,为什么运行有问题,怎么改
(defun c:ggcd ()(princ "\n 选取要修改的高程点:")
(setq ss (ssget))
(setq zz (getreal "\n 输入增(+)减(-)高程值:"))
(setq n 0)
(repeat (sslength ss)
(setq ssn (ssname ss n))
(setq ssdata (entget ssn))
(setq mms (assoc 2 ssdata))
(setq mmm (cdr mms))
(if (= mmm "GC200")
(progn
(setq en1 (assoc 10 ssdata))
(setq old_zz (cdr en1))
(setq X (car old_zz))
(setq Y (cadr old_zz))
(setq Z (caddr old_zz))
(setq m (+ Z zz))
(setq new_zz (cons 10 endata))
(setq ssdata (subst new_zz en1 ssdata))
(entmod ssdata)
)
)
(setq n (1+ n))
)
(prin1)
)
;; tt(修改高程图块的Z值)
(defun c:tt ()
(setq dz (getreal "\n输入增(+)减(-)高程值: "))
(princ "\n选取要修改的高程点: ")
(if (setq ss (ssget '((0 . "insert") (2 . "GC200"))))
(progn
(setq n 0)
(repeat (sslength ss)
(setq date (entget (ssname ss n))
en (assoc 10 date)
p0 (cdr en)
X (car p0)
Y (cadr p0)
z (+ (caddr p0) dz)
date (subst (cons 10 (list x y z)) en date)
)
(entmod date)
(setq n (1+ n))
)
)
)
(princ)
)
非常感谢您 本帖最后由 llsheng_73 于 2016-10-28 10:24 编辑
难道高程点只需要改它的Z坐标,它的注记不需要修改?
(defun c:tt(/ dz n ss e1 en)
(if(and(setq dz(getreal "\n输入增(+)减(-)高程值: ")
dz(list 0 0 dz))
(princ "\n选取要修改的高程点: ")
(setq n 0
ss(ssget '((0 . "insert")(2 . "GC200")))))
(progn
(command"move"ss""'(0 0 0)dz)
(repeat(sslength ss)
(if(/="SEQEND"(cdr(assoc 0(setq e1(entnext(ssname ss n))
n(1+ n)
en(entget e1)))));;高程点未被打散
(entmod(mapcar'cons'(-1 1)(list e1(rtos(last(assoc 10 en))2 2))))))
(command"regen")
))
(princ)
)
页:
[1]