求个根据圆不同的直径 插入不同的块的代码
想根据圆不同的大小 在圆心位置 插入不同的块,有谁有这样的源码么路过,顶起来,可以一起来学习一下 有没有哪位大神有呀 用币买也可以的 ...不同的块...
所以会有名称对映的问题对不?
人机如何互动?要那些提示?
这些攸关程序架构!
...
用币买也买不来呀!
Andyhon 发表于 2017-11-3 21:54
...不同的块...
所以会有名称对映的问题对不?
块都是已经做好了的
我自己(defun C:k3 (/ BLOCK E ELIST N PT SS)
(princ "\n根据圆直径替换成块)
(if (setq SS (ssget '((0 . "CIRCLE")(-4 . "=")(40 . 5.15))))
(repeat (setq N (sslength SS))
(setq E (ssname SS (setq N (1- N))))
(setq ELIST (entget E))
(setq PT (cdr (assoc 10 ELIST)))
(command "INSERT" "xm12"(trans pt 0 1) 1 1 0)
(entdel E) ;_删除原有的圆
)
)
(if (setq SS (ssget '((0 . "CIRCLE")(-4 . "=")(40 . 4.15))))
(repeat (setq N (sslength SS))
(setq E (ssname SS (setq N (1- N))))
(setq ELIST (entget E))
(setq PT (cdr (assoc 10 ELIST)))
(command "INSERT" "xm10"(trans pt 0 1) 1 1 0)
(entdel E) ;_删除原有的圆
)
)
(princ)
)
需要选择两次才能够完成替换两种圆我是想只用款选一次就能够把不同大小的圆都能够替换出来 试试这个(defun C:k3 (/ BLOCK E ELIST N PT SS);;;(princ "\n根据圆直径替换成块)
(if (setq SS (ssget '((0 . "CIRCLE")
(-4 . "<or")
(40 . 5.15)
(40 . 4.15)
(-4 . "or>")
)
)
)
(repeat (setq N (sslength SS))
(setq E (ssname SS (setq N (1- N))))
(setq ELIST (entget E))
(setq PT (cdr (assoc 10 ELIST)))
(command "INSERT" "xm12"(trans pt 0 1) 1 1 0)
(entdel E) ;_删除原有的圆
)
)
(princ)
)
;; tt(圆替换成块)
(defun c:tt ()
(princ "\n根据圆直径替换成块: ")
(if (setq ss (ssget '((0 . "circle"))))
(progn
(setq i -1
ss1 (ssadd)
)
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq ent (entget s1)
pt(cdr (assoc 10 ent))
rr(cdr (assoc 40 ent))
)
(cond ((= rr 5.15)
(command "insert" "xm12" pt 1 1 0)
(ssadd s1 ss1)
)
((= rr 4.15)
(command "insert" "xm10" pt 1 1 0)
(ssadd s1 ss1)
)
)
)
(command "erase" ss1 "")
)
)
(princ)
) xyp1964 发表于 2017-11-4 22:51
太感谢版主了 xyp1964 发表于 2017-11-4 22:51
版主 你这个代码除了圆直径这一个条件 还能再增加一个线型的条件么 xyp1964 发表于 2017-11-4 22:51
院长无所不能 太牛!!!!
页:
[1]