Lt Dan's l 发表于 2022-7-6 11:09:52

 
拼图
(defun c:test (/ ss counter ent en)
(setq ss (ssget "_:s" '((0 . "insert"))))
(setq counter 0)
(repeat (sslength ss)
(setq ent (ssname ss counter))
(setq en (cdr (assoc 50 (entget ent))))
(setq counter (1+ counter))
)
(setq pt (getpoint "\nSpecify Insertion point: "))
(command "-insert" ent pt "" "" en)
(princ)
)
我明白问题所在。我只是不知道如何找到解决方案。。。我应该寻找什么来获得结果?

Lee Mac 发表于 2022-7-6 11:12:39

当您处理单个块时,在这种情况下不需要迭代选择集-但是,您应该检查有效的选择,正如我所指出的。
 
通过单个选择,您可以将ssget与“_:S”一起使用,或者只使用一个简单的“entsel”调用。
 
角度将以弧度为单位,因此如果要在命令调用中使用,则需要将其转换为度。该sub应在这方面有所帮助:
 

(defun RtoD ( x )
(* 180. (/ x pi))
)

rkmcswain 发表于 2022-7-6 11:16:31

 
或者可以添加“r”后缀以在命令中指定弧度。(即:1.5r)

Lee Mac 发表于 2022-7-6 11:21:42

 
哦,我不知道!谢谢RK

rkmcswain 发表于 2022-7-6 11:22:11

 
当然,如果你要这样做,你必须把弧度转换成一个字符串。。。。但是如果您在命令行测试某些东西,并且希望输入弧度,那么它可能会很有用。。。

Lt Dan's l 发表于 2022-7-6 11:27:41

非常感谢你
 
顺便说一句,我有一个姓麦克斯温的朋友。我只是想分享一下

alanjt 发表于 2022-7-6 11:31:02

是的,这是一个巧妙的技巧,但对于代码来说,似乎更安全的做法是先转换为度,然后再转换为字符串(消除任何舍入错误的可能性)。

rkmcswain 发表于 2022-7-6 11:33:04

 
 
这不是一个技巧,AutoCAD设计为接受“r”表示弧度,“g”表示梯度,d表示度等。
 
就代码而言,我尽量避免转换任何内容。
如果你这样做了,你可以使用(angtos)一步完成,但我不知道这是如何避免舍入误差的。

alanjt 发表于 2022-7-6 11:37:14

对不起,“trick”这个词用错了。
 
我的意思是,如果一个是将弧度转换为字符串,然后在其上附加“R”,那么您可以/将自己打开到舍入问题。
 
我也不会转换,但如果一个人如此倾向于使用命令,他们会被迫给它加度数或附加“R”,如您所示。

Lt Dan's l 发表于 2022-7-6 11:39:20

 
艾伦,你打算怎么做?我不想要完整的代码。只需插入您选择的相同块的函数。
页: 1 [2]
查看完整版本: cond和重复com帮助