初学者123 发表于 2017-11-10 22:31:49

请问这个代码想增加一个线型的筛选改怎么加呀


[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; tt(圆替换成块)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(defun c:tt ()
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(princ "\n根据圆直径替换成块: ")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(if (setq ss (ssget '((0 . "circle"))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    (progn
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (setq i      -1
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ss1      (ssadd)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (while (setq s1 (ssname ss (setq i (1+ i))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (setq ent (entget s1)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            pt(cdr (assoc 10 ent))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            rr(cdr (assoc 40 ent))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (cond ((= rr 5.15)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif               (command "insert" "xm12" pt 1 1 0)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif               (ssadd s1 ss1)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ((= rr 4.15)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif               (command "insert" "xm10" pt 1 1 0)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif               (ssadd s1 ss1)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (command "erase" ss1 "")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(princ)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)

在论坛找到这个代码 想再增加一个线型的识别 例如: 一个图又 不同线型的 直接10.3的圆 不同线型不同直径的圆分别用不同的块替换


Andyhon 发表于 2017-11-10 22:31:50

本帖最后由 Andyhon 于 2017-11-11 23:02 编辑

未调试...

(defun Hidden->blk (sset)
(setq      i -1)
(while (setq s1 (ssname sset (setq i (1+ i))))
    (setq ent (entget s1)
          pt(cdr (assoc 10 ent))
          rr(cdr (assoc 40 ent))
    )
    (cond ((= rr 5.15)
         (command "insert" "xm12H" pt 1 1 0)
         (ssadd s1 ssA)
          )
          ((= rr 4.15)
         (command "insert" "xm10H" pt 1 1 0)
         (ssadd s1 ssA)
          )
    )
)
)

(defun Center->blk (sset)
(setq i -1)
(while (setq s1 (ssname sset (setq i (1+ i))))
    (setq ent (entget s1)
          pt(cdr (assoc 10 ent))
          rr(cdr (assoc 40 ent))
    )
    (cond ((= rr 5.15)
         (command "insert" "xm12C" pt 1 1 0)
         (ssadd s1 ssA)
          )
          ((= rr 4.15)
         (command "insert" "xm10C" pt 1 1 0)
         (ssadd s1 ssA)
          )
    )
)
)

;; tt(圆替换成块)
(defun c:tt ()
(princ "\n根据圆直径替换成块: ")
(if (setq ss (ssget '((0 . "circle"))))
    (progn
      (setq ss1 (ssget "P" '((6 . "Center"))))
      (command "select" ss "")
      (setq ss2 (ssget "P" '((6 . "Hidden"))))
      (setq ssA (ssadd))
      (if ss1
      (Center->blk ss1)
      )
      (if ss2
      (Hidden->blk ss2)
      )
      (command "erase" ssA "")
    )
)
(princ)
)

Andyhon 发表于 2017-11-11 10:13:26

先这样试吧
(setq ss (ssget '((0 . "circle") (6 . "Center"))))
(setq ss (ssget '((0 . "circle") (6 . "Hidden"))))
...

初学者123 发表于 2017-11-11 10:51:28

Andyhon 发表于 2017-11-11 10:13
先这样试吧
(setq ss (ssget '((0 . "circle") (6 . "Center"))))
(setq ss (ssget '((0 . "circle") ( ...

我是想再框选的时候不区分 只是在替换的时候才区别不同的线型 再不同的块替换

Andyhon 发表于 2017-11-11 11:17:44

(setq ss (ssget '((0 . "circle"))))

...

(setq ss1 (ssget "P" '((6 . "Center"))))
(command "select" "ss" "")
(setq ss2 (ssget "P" '((6 . "Hidden"))))
...

初学者123 发表于 2017-11-11 20:32:03

Andyhon 发表于 2017-11-11 11:17
(setq ss (ssget '((0 . "circle"))))

...


大神能具体点么 才接触这个 不是很懂 我就是想再 rr 5.15 这个条件基础上再加一个队线型的条件

Andyhon 发表于 2017-11-11 21:20:53

请上传Dwg含至少三个实例图样作说明...

初学者123 发表于 2017-11-11 21:27:04

Andyhon 发表于 2017-11-11 21:20
请上传Dwg含至少三个实例图样作说明...

就想这个图里面的四个圆一样相吧这四种分别用不同的块替换

Andyhon 发表于 2017-11-11 21:31:45

块名又各如何?

初学者123 发表于 2017-11-11 21:32:49

Andyhon 发表于 2017-11-11 21:31
块名又各如何?

块名字可以随便做那个打算做现成的图快插入
页: [1] 2
查看完整版本: 请问这个代码想增加一个线型的筛选改怎么加呀