oypk51 发表于 2017-11-3 14:49:23

求个根据圆不同的直径 插入不同的块的代码

想根据圆不同的大小 在圆心位置 插入不同的块,有谁有这样的源码么

pchuangzmx 发表于 2017-11-3 15:03:01

路过,顶起来,可以一起来学习一下

oypk51 发表于 2017-11-3 21:21:18

有没有哪位大神有呀 用币买也可以的

Andyhon 发表于 2017-11-3 21:54:10

...不同的块...
所以会有名称对映的问题对不?

人机如何互动?要那些提示?
这些攸关程序架构!
...

用币买也买不来呀!

oypk51 发表于 2017-11-4 22:34:59

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

需要选择两次才能够完成替换两种圆我是想只用款选一次就能够把不同大小的圆都能够替换出来

永不言弃 发表于 2017-11-4 22:51:15

试试这个(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)
)

xyp1964 发表于 2017-11-4 22:51:53

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

oypk51 发表于 2017-11-5 10:18:48

xyp1964 发表于 2017-11-4 22:51


太感谢版主了

初学者123 发表于 2017-11-11 21:16:59

xyp1964 发表于 2017-11-4 22:51


版主 你这个代码除了圆直径这一个条件 还能再增加一个线型的条件么

shopping200 发表于 2018-1-18 15:52:32

xyp1964 发表于 2017-11-4 22:51


院长无所不能 太牛!!!!
页: [1]
查看完整版本: 求个根据圆不同的直径 插入不同的块的代码