BlackBox 发表于 2022-7-6 08:23:46

变量的作用域取决于它们是否被指定为参数,或是否被指定为Defun语句中的[局部]变量。已定义且未指定为[局部]变量的变量被视为“全局”变量。
 
例子:
5
 
使用特殊字符(如“*”等)来区分“全局”变量与指定为“局部”的变量是很常见的。添加这些字符不会改变存储数据的能力。
 
HTH公司

irneb 发表于 2022-7-6 08:31:55

我将其定义为全局,因为这是一个命令。注意末尾的(princ)和c:前缀。如果希望它将列表返回给其他defun,则必须将其设计为可调用函数,在这种情况下,列表可以是局部变量(可能应该是)。只要它是在defun中运行的最后一个表达式,它的值就会作为结果返回。但鉴于我使用了您的sample命令作为基础,我们的想法是将列表获取到一个全局变量中。然后,您可以从任何其他函数/命令中将其用作输入数据。 
RM对范围界定的看法是正确的。这个*并不意味着它是全球性的,它只是一个惯例,意味着它是全球性的。有助于避免搞砸其他事情,因为全局变量可能是危险的事情。
 
更好的方法(IMO)是定义一个辅助函数,从多段线的dxf数据中提取矢量点(或者您可以从ActiveX数据中提取):
注意,我没有使用任何额外的变量(全局或其他)。虽然我在VLA案例中使用了一个helper函数-从这个线程:http://www.theswamp.org/index.php?topic=41419.15
 
这样,您可以在任何其他defun(甚至命令)中使用它来仅从多段线中提取矢量点(如果需要的话)。
 
还要注意,我正在使用其他方法创建点列表:
 
它首先从DXF数据中删除每个DXF项,其代码(vl remove if not+lambda+car)不等于10。然后,它将汽车与剩下的汽车分离(地图车+cdr)。
根据vla对象的坐标属性,我将数字列表按2分组(因为该数组是一维的,并且使用2D点)。

SLW210 发表于 2022-7-6 08:35:37

 
你能帮我编辑一下你的第一篇使用代码标签的帖子吗?
页: 1 [2]
查看完整版本: 内存中的最后一个实体问题