求助:高程点批量加负号,有的对有的错?已解决,谢谢ZZXXQQ
本帖最后由 gzxl 于 2010-12-4 22:07 编辑(defun c:-gcd ()
(setvar "cmdecho" 0)
(princ "本程序用于高程点前面加上负号,请选择目标:")
(vl-load-com)
(setq s
(ssget "x" '((0 . "INSERT") (8 . "GCD-SS")))
)
(setq s1 (sslength s))
(setq i 0)
(while (< i s1)
(setq s2 (ssname s i))
(setq s3 (entget s2))
(setq s4 (assoc 10 s3))
(setq s5 (cdr s4))
(setq sj (- 0 (caddr s5)))
(setq s6 (list 10 (car s5) (cadr s5) sj))
(entmod (subst s6 s4 s3))
(setq t1 (vlax-ename->vla-object s2))
(setq t2 (vla-GetAttributes t1))
(setq t3 (vlax-variant-value t2))
(setq t4 (vlax-safearray->list t3))
(setq t5 (car t4))
(setq t6 (fix sj))
(setq t7 (rtos t6 2 0))
(vla-put-textstring t5 t7)
(setq t8 (vlax-vla-object->ename t5))
(setq t9 (entget t8))
(setq t10 (assoc 10 t9))
(setq t11 (cdr t10))
(setq t12 (list 10 (car t11) (cadr t11) (+ (caddr t11))))
(entmod (subst t12 t10 t9))
(vla-update t5)
(setq i (1+ i))
)
(princ "\n已修改完成")
)
已解决,谢谢ZZXXQQ
本帖最后由 gzxl 于 2010-12-4 22:06 编辑程序改出来的高程点有的是对,有的是错的,请高手帮忙解决 本帖最后由 ZZXXQQ 于 2010-12-5 00:25 编辑
(defun c:-gcd ()
(setvar "cmdecho" 0)
(princ "本程序用于高程点前面加上负号,请选择目标:")
(setq s (ssget "X" '((0 . "INSERT") (8 . "GCD-SS"))))
(setq s1 (sslength s))
(setq i 0)
(repeat s1
(setq s2 (ssname s i))
(setq s3 (entget s2))
(setq s4 (assoc 10 s3))
(setq s5 (cdr s4))
(setq sj (- 0 (caddr s5)))
(setq s6 (list 10 (car s5) (cadr s5) sj))
(entmod (subst s6 s4 s3))
(setq ent1 s3)
(if (= (cdr(assoc 0 (setq ent1 (entget(entnext(cdr(assoc -1 ent1))))))) "ATTRIB")
(if (= (cdr(assoc 2 ent1)) "integer") (progn
(setq ent1 (subst (cons 1 (strcat "-" (cdr(assoc 1 ent1)))) (assoc 1 ent1) ent1))
(entmod ent1)
(entupd s2)
))
)
(setq i (1+ i))
)
(princ "\n已修改完成")
)
页:
[1]