戏男 发表于 2023-9-10 16:26:17

xj6019 发表于 2023-9-10 16:00
复制你贴的代码一个字都没改,完美运行,不知道你咋弄的

我这边确实不能成功,要是能改为不用前缀名,用全名就好了,这样应该不会出错,也不要过滤图层{:1_1:}

戏男 发表于 2023-9-10 17:21:27

戏男 发表于 2023-9-10 16:26
我这边确实不能成功,要是能改为不用前缀名,用全名就好了,这样应该不会出错,也不要过滤图层

唉,算了,就这样吧,只能不用这个了,

戏男 发表于 2023-9-10 19:55:52

戏男 发表于 2023-9-10 17:21
唉,算了,就这样吧,只能不用这个了,

不会录屏呀,总之就是框选后,圆里面不会插入任何一个块,

xj6019 发表于 2023-9-10 20:27:30

你这么玩玩试试,自己将你所有的数据,参照例子,将那个表写全,体力活其他的自己慢慢干就行了,如果你写完后还有问题,那就真没招了,我都测试过,完全没问题的,不能用,就从自身找找原因吧


(defun c:NM (/ cklst i name names p r s1 ss)
        (setq cklst
                '(
                       (1    "epin_ejp_1") ;格式为:第一项为匹配的圆的半径   第二项为名块
                       (1.2"epin_ejp_1.2");其他的自己填写,写完后再测试
                       (6    "epin_ejp_6")
                       (14   "epin_ejp_14")
               )               
        )
(setq i -1 names nil)
(if(setq ss (ssget (list '(0 . "CIRCLE"))))
    (while(and(setq s1 (ssname ss (setq i (1+ i)))))               
                        (setq r(cdr(assoc 40 (entget s1)))
                                p(cdr(assoc 10 (entget s1)))
                        )
                        (if(setq name(cadr(assoc (* 2 r) cklst)))
                                (if (tblsearch "BLOCK" name)                              
                                        (progn
                                                (entmakeX
                                                        (list '(0 . "INSERT")
                                                                '(100 . "AcDbEntity")
                                                                '(100 . "AcDbBlockReference")
                                                                (cons 2 name)
                                                                (cons 10 p)
                                                                (cons 50 0) ;弧度
                                                                (cons 41 1)
                                                                (cons 42 1)
                                                                (cons 43 1)
                                                        )
                                                )                                       
                                        )
                                       
                                )       
                                (setq names(cons (* 2 r) names))       
                        )       
                )
)
        (if names
                (progn
                        (princ "\n这些直径的圆,没有对应的块名:")      
                        (princ names)
                )
                (princ "\n所有圆均插入对应图块成功!")
        )      
        (princ )
)

戏男 发表于 2023-9-10 22:09:37

本帖最后由 戏男 于 2023-9-10 22:24 编辑

xj6019 发表于 2023-9-10 20:27
你这么玩玩试试,自己将你所有的数据,参照例子,将那个表写全,体力活其他的自己慢慢干就行了,如果你写完 ...

(defun c:NM (/ cklst i name names p r s1 ss)
      (setq cklst
                '(
                         (1    "epin_ejp_1") ;格式为:第一项为匹配的圆的半径   第二项为名块
                         (1.2"epin_ejp_1.2");其他的自己填写,写完后再测试
                         (1.5"epin_ejp_1.5")
                         (2"epin_ejp_2")
                         (2.5"epin_ejp_2.5")
                         (3"epin_ejp_3")
                         (3.5"epin_ejp_3.5")
                         (4"epin_ejp_4")
                         (5"epin_ejp_5")
                         (6"epin_ejp_6")
                         (7"epin_ejp_7")
                         (8"epin_ejp_8")
                         (10"epin_ejp_10")
                         (12"epin_ejp_12")         
                         (14   "epin_ejp_14")
                         (defun c:NM (/ cklst i name names p r s1 ss)
      (setq cklst
                '(
                         (1    "epin_ejp_1") ;格式为:第一项为匹配的圆的半径   第二项为名块
                         (1.2"epin_ejp_1.2");其他的自己填写,写完后再测试
                         (1.5"epin_ejp_1.5")
                         (2"epin_ejp_2")
                         (2.5"epin_ejp_2.5")
                         (3"epin_ejp_3")
                         (3.5"epin_ejp_3.5")
                         (4"epin_ejp_4")
                         (5"epin_ejp_5")
                         (6"epin_ejp_6")
                         (7"epin_ejp_7")
                         (8"epin_ejp_8")
                         (10"epin_ejp_10")
                         (12"epin_ejp_12")         
                         (14   "epin_ejp_14")
               )               
      )
(setq i -1 names nil)
(if(setq ss (ssget (list '(0 . "CIRCLE"))))
    (while(and(setq s1 (ssname ss (setq i (1+ i)))))               
                        (setq r(cdr(assoc 40 (entget s1)))
                              p(cdr(assoc 10 (entget s1)))
                        )
                        (if(setq name(cadr(assoc (* 2 r) cklst)))
                              (if (tblsearch "BLOCK" name)                              
                                        (progn
                                                (entmakeX
                                                      (list '(0 . "INSERT")
                                                                '(100 . "AcDbEntity")
                                                                '(100 . "AcDbBlockReference")
                                                                (cons 2 name)
                                                                (cons 10 p)
                                                                (cons 50 0) ;弧度
                                                                (cons 41 1)
                                                                (cons 42 1)
                                                                (cons 43 1)
                                                      )
                                                )                                       
                                        )
                                       
                              )      
                              (setq names(cons (* 2 r) names))      
                        )      
                )
)
      (if names
                (progn
                        (princ "\n这些直径的圆,没有对应的块名:")      
                        (princ names)
                )
                (princ "\n所有圆均插入对应图块成功!")
      )      
      (princ )
)
               )               
      )
(setq i -1 names nil)
(if(setq ss (ssget (list '(0 . "CIRCLE"))))
    (while(and(setq s1 (ssname ss (setq i (1+ i)))))               
                        (setq r(cdr(assoc 40 (entget s1)))
                              p(cdr(assoc 10 (entget s1)))
                        )
                        (if(setq name(cadr(assoc (* 2 r) cklst)))
                              (if (tblsearch "BLOCK" name)                              
                                        (progn
                                                (entmakeX
                                                      (list '(0 . "INSERT")
                                                                '(100 . "AcDbEntity")
                                                                '(100 . "AcDbBlockReference")
                                                                (cons 2 name)
                                                                (cons 10 p)
                                                                (cons 50 0) ;弧度
                                                                (cons 41 1)
                                                                (cons 42 1)
                                                                (cons 43 1)
                                                      )
                                                )                                       
                                        )
                                       
                              )      
                              (setq names(cons (* 2 r) names))      
                        )      
                )
)
      (if names
                (progn
                        (princ "\n这些直径的圆,没有对应的块名:")      
                        (princ names)
                )
                (princ "\n所有圆均插入对应图块成功!")
      )      
      (princ )
)
真的可以了,两个测试图都成功了,感分感谢!!!!
页: 1 [2]
查看完整版本: 框选圆,不同直径插入不同名的块