复制你贴的代码一个字都没改,完美运行,不知道你咋弄的
我这边确实不能成功,要是能改为不用前缀名,用全名就好了,这样应该不会出错,也不要过滤图层{:1_1:} 戏男 发表于 2023-9-10 16:26
我这边确实不能成功,要是能改为不用前缀名,用全名就好了,这样应该不会出错,也不要过滤图层
唉,算了,就这样吧,只能不用这个了, 戏男 发表于 2023-9-10 17:21
唉,算了,就这样吧,只能不用这个了,
不会录屏呀,总之就是框选后,圆里面不会插入任何一个块,
你这么玩玩试试,自己将你所有的数据,参照例子,将那个表写全,体力活其他的自己慢慢干就行了,如果你写完后还有问题,那就真没招了,我都测试过,完全没问题的,不能用,就从自身找找原因吧
(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: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]