协调
有没有比我使用的更好的方法来为命令提供坐标?(setq pnt列表(assoc 10 ent))
(setq pnt-x(rtos(第n个0 pnt列表)))
(setq pnt-y(rtos(第n个1 pnt列表)))
(setq pnt-z(rtos(第n个2 pnt列表)))
(命令“_.CIRCLE”
(strcat pnt-x”、“pnt-y”、“pnt-z)
半径
)
(setq pnt列表(cdr(assoc 10 ent)))
ASSOC返回一个列表,其第一个元素是代码本身
在这种情况下,以下是3点的坐标
从此网站
http://ronleigh.info/autolisp/acatalog.htm
协会。。。。。在关联列表中搜索关键元素,并返回包含该关键元素的子列表。之后(setq carlist(list(list“year”“1940”)(list“make”“buick”)(list“model”“sedan”))
(assoc“make”carlist)返回(“make”“buick”)
Cdr,去掉列表中的第一个元素
cdr。。。。。返回包含除第一个元素外的所有元素的列表。见以下注释。(cdr(列表2 4 6)返回(4 6
(cdr(list(list 1 2)(list 3 4)(list 5 6)(list 7))返回((3 4)(5 6)(7)
(cdr(列表9))返回nil 谢谢devitg
我可以看出,我的第n个应该从1开始,以错过第一个列表成员(我一直在做-打字),但我更高兴的是,我可以使用cdr。 你可以向命令发送一个列表,你不需要输入文本格式。因此,以下较短的代码应该可以工作:
(setq pnt列表(assoc 10 ent))
(setq pnt xyz(cdr pnt列表))
(命令“圆形”pnt xyz半径) 我认为不需要额外的变量:
(command "_.CIRCLE" (cdr(assoc 10 ent))radius)
如果您需要在程序的其他位置使用变量:
(command "_.CIRCLE" (setq pnt-xyz(cdr(assoc 10 ent)))radius)
页:
[1]