zhangxin0298 发表于 2016-10-23 09:34:47

请各位大侠同行帮忙看下,为什么运行有问题,怎么改

(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)
)

xyp1964 发表于 2016-10-23 11:38:08

;; 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)
)

zhangxin0298 发表于 2016-10-23 15:14:39

非常感谢您

llsheng_73 发表于 2016-10-28 09:23:32

本帖最后由 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]
查看完整版本: 请各位大侠同行帮忙看下,为什么运行有问题,怎么改