雪豹 发表于 2012-4-16 10:59:07

急求如何改变围墙??

原来围墙是两条线中间是一小段一小段直线的那种样式,现在想将中间的小段直线给换成方块,我的代码如下:
(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"修改完毕!")
)


可是不对,请教各位大侠,各位高人帮忙,如果有批量修改围墙的代码更好,多些了。。。

soly2006 发表于 2012-4-17 17:46:04

;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]
查看完整版本: 急求如何改变围墙??