急求如何改变围墙??
原来围墙是两条线中间是一小段一小段直线的那种样式,现在想将中间的小段直线给换成方块,我的代码如下:(defun c:xgwq(/ SS EL LX1 LX2 LX3 J)
(setq ss(ssget"x"'((0 . "LINE")(8 . "JMD")(-3 ("SOUTH"(1000 . "144301-3")))))j -1)
(repeat (sslength ss)
(setq en(ssname ss(setq j(1+ j))))
(setq el(entget en))
(setq lx1(assoc -3 el))
(setq lx2(cdr lx1))
(setq lx3(cdr lx2))
(if(equal lx3 "144301-3")(setq lx3 "144301-2"))
(setqel(subst '(list -3 (list "SOUTH" (LIST 1000 "144301-2"))) (assoc -3 el) el))
(entmod el)
)
(princ)
(alert"修改完毕!")
)
可是不对,请教各位大侠,各位高人帮忙,如果有批量修改围墙的代码更好,多些了。。。
;cass9.0围墙的短线改成块改自明镜亦非台
(defun c:xwq()
(setvar "CMDECHO" 0)
(setq blc (/ (getvar "USERR1") 1000))
(if (= blc 0.0) (setq blc 0.5) )
(command "undo" "be")
(if (setq ss (sc_ssget "144301-2"))
(progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget(ssname ss i))
p1 (cdr(assoc 10 ent))
p2 (cdr(assoc 11 ent))
ds (distance p1 p2)
ang (angle p1 p2))
(command ".INSERT" "gc002" (polar p1 ang (/ blc 4)) (/ blc 2) (/ blc 2) (/ (* ang 180) pi))
(setq hfk (entlast))
(setq fc5 '("依比例围墙小方块" (-3 ("SOUTH" (1000 . "144301-2")))))
(setq gxzb(entget hfk))
(SETQ GXZB(subst (cons 8 "jmd") (assoc 8 GXZB) GXZB))
(entmod (append GXZB (cdr fc5)))
(command ".ERASE" (ssname ss i) "")
(setq i (1+ i))) ))
(setvar "CMDECHO" 1)
(command "undo" "e")
(princ)
)
(defun sc_ssget(sCode / ss sn si i ed sc scss)
(setq ss(ssget "X" '((-3 ("south")) (0 . "LINE")) ))
(setq sn(if ss (sslength ss) 0))
(setq scss(ssadd))
(setq i 0)
(while(< i sn)
(setq si(ssname ss i))
(setq ed(entget si '("south")))
(setq sc(cdr(cadr (cadr (assoc -3 ed)))))
(if(= sc sCode)
(ssadd si scss)
)
(setq i(1+ i))
)
scss
)
页:
[1]