Bill Tillman 发表于 2022-7-5 19:58:17

在列表中使用变量

我一定错过了教程中的这一部分,到目前为止,搜索没有找到适合这一部分的内容。我有这样一个列表:
'(13.5 16.75)
我想让其中一个值成为变量,但当我尝试这样做时:
'(pos1 16.75)
我收到DXF错误?

MSasu 发表于 2022-7-5 20:08:45

对列表使用引号将阻止AutoLISP评估内容;对于第二种情况,考虑列表函数。
(list pos1 16.75)

BlackBox 发表于 2022-7-5 20:14:44

尝试搜索引号符号;我记得李在这方面有一个很好的教程。
 
简言之,通过使用“(又名引号符号),您已经告诉LISP不要计算表达式,而是从表面上看。
 
 
 
如果所需输出是一个列表:
 

(list pos1 16.75)

 
 
 
... 对于分组对:
 

(cons pos1 16.75)

Lee Mac 发表于 2022-7-5 20:19:20

 
谢谢BlackBox
 
Bill,这应该有助于解释:撇号和引号函数

BlackBox 发表于 2022-7-5 20:29:32

 
任何时候,李;就是那个!

Bill Tillman 发表于 2022-7-5 20:33:19

谢谢大家。我一直在做新项目,在Visual Studio和它的intellisense编辑器上被宠坏了。但还是要跟上AutoCAD的一面。这是一个很好的建议。

Bill Tillman 发表于 2022-7-5 20:40:43

今天我不得不重读这篇文章。我试过上面的建议,但似乎还是没用。代码如下:

(setq bbn (* (+ 119.5 (/ dim_b 2.)) -1))
(setq bbx (+ 116.5 (/ dim_a 2.)))
;;;(hgrt '(-148.0 143.0))
(hgrt (list bbn bbx))

注释行显示了函数是如何成功调用的,所以现在我想传递变量,这些变量是上面等式的结果。但我一直在犯这样的错误:
 
我也试过了

(hgrt (cons bbn bbx))
and
(hgrt '(bbn bbx))

Commandobill 发表于 2022-7-5 20:48:48

(hgrt (list bbn bbx))
这段代码应该可以很好地工作。我发现将某些代码行直接放入autocad以查看其返回的内容很有帮助。一、 E.如果在autocad中键入(列表1-2),它将返回(1-2)。此外,如果要查看变量中存储了哪些数据,请使用和惊叹号,并将变量名键入autocad命令行。IE!bbn公司
 
稍微玩玩一下,看看你的变量是否有问题。

Bill Tillman 发表于 2022-7-5 20:55:59

谢谢我一定有幻觉,但我确信我至少试过一次。可能忘记了在我更改代码后加载代码之类的事情。无论如何,您确认的代码现在正在工作。

BlackBox 发表于 2022-7-5 21:02:16

此外,FWIW-Bill,您可以简单地修改子函数以接受两个参数,而不是一个单元素、两元素列表作为参数。您当前必须构建列表以作为单个、唯一的参数传递,然后可能必须在子函数中提取相应的列表元素。。。更多的工作,同样的结果。
 
干杯
页: [1]
查看完整版本: 在列表中使用变量