jenlin 发表于 2024-7-31 20:28:19

AutoLisp 里的 CAD Command 参数问题

本帖最后由 jenlin 于 2024-7-31 21:45 编辑

请教一下,当需要在AutoLisp 里直接使用CAD Command 来执行某项任务时,这些Command的参数及定义/枚举值等都该上哪查阅呢?
在AutoCAD的官方文档也没找到相应的信息。
举个例子,当需要在程序里使用 Array 功能时,比如魔法书里是这么写的
(command "array" (entlast "" "p" cenpt num 360 "Y"))
可AutoCAD(2023版)的官方文档只查询到如下这类信息。

从命令行创建按指定方式排列的对象副本。                                      保持传统命令行行为用于创建非关联二维矩形或环形阵列。               
                如果为此阵列指定了许多项目,它可能要花费一些时间来创建副本。默认情况下,在一个命令中可以生成的阵列元素最大数目为 100,000。更改此限制的方式取决于产品:

[*]多数基于 AutoCAD 的产品:该限制值由注册表中的 MAXARRAY 设置设定。例如,要将上限重设为 200,000,可在命令行提示下输入 (setenv "MaxArray" "200000")。
[*]AutoCAD LT:可以通过使用 SETENV 命令设定 MaxArray 系统注册表变量来更改阵列元素的最大数。
               
            
                            将显示以下提示:               
                                 选择对象                                     选择一个或多个用作阵列基础的对象。                  
               
                                 阵列类型                                     指定是创建矩形还是创建环形阵列。                  
                   注意:无法使用此版本的命令创建路径阵列或指定三维标高。对于这些选项,请使用 ARRAY。                     
                  
               
                                 矩形                                     创建选定对象的副本的行和列阵列。                  

                   假设选定对象(或基本元素)在绘图区域的左下角,并向上或向右生成阵列。                  
行数 (---)                        使用非零整数指定行数。如果只指定了一行,则必须指定多列,反之亦然。                        
                     列数 (|||)                      指定列数。                        
                     行间距或指定单位单元                        指定行间距,包括要排列的对象的长度。                            如果要向下添加行,请将行间距指定为负值。                           
                            若要同时指定行间距和列间距,请指定表示矩形对角点的两组坐标或图形位置。                           
                        
                     列间距 (|||)                        指定列之间的距离。                            要向左添加列,请将列间距指定为负值。                           
                            将沿当前捕捉旋转角定义的基线构造矩形阵列。该角度通常为零,因此行和列与图形坐标轴 X 和 Y 正交。使用 SNAP 命令的“旋转”选项更改角度和创建旋转阵列。SNAPANG 系统变量存储捕捉旋转角度。                           
                        
                                    
                                 极轴                                     通过围绕指定的圆心复制选定对象来创建阵列。                  

                   在环形阵列中,将使用选择集中最后一个对象的参照点作为所有对象的参照点。如果使用窗口或窗交选择定义选择集,选择集中的最后一个对象是随机的。如果从选择集中删除一个对象然后再将其添加到选择集中,该对象将成为选择集中最后一个选定的对象。也可以将选择集做成块然后进行复制。                                       
                   您输入的提示值确定阵列配置是基于项目数目还是基于由阵列项目填充的角度。                  
阵列的中心点                        指定阵列的中心位置。                        
                     基点                                                    相对于选定对象指定新的参照(基准)点,对对象指定阵列操作时,这些选定对象将与阵列圆心保持不变的距离。                           
                        
                     阵列中项目的数目                        指定围绕中心点排列的项目总数。                            如果不输入值,则阵列基于要填充的角度和项目值之间的角度。                           
                        
                     要填充的角度(+=逆时针,-=顺时针)(+=逆时针,-=顺时针)                        指定第一个和最后一个阵列对象的基点间的夹角。为逆时针旋转输入正数或为顺时针旋转输入负数。                        
                     项目间的角度(+=逆时针,-=顺时针)(+=逆时针,-=顺时针)                         根据阵列中心点和阵列对象的基点指定对象间的夹角。为逆时针旋转输入正数或为顺时针旋转输入负数。                            注意:要显示此选项,请在“项目数”提示下按 Enter 键或在“填充角度”提示下输入 0(零)。                              
                           
                        
                   是否旋转阵列中的对象?                         控制在排列项目时是否旋转项目。输入“是”或“否”。                        

再看这行代码
(command "array" (entlast "" "p" cenpt num 360 "Y"))
首先参数个数对不上,当然矩形和极昼可能是两种不同的分类,所以也对应了两组不同的参数,即使这样,参数个数也对不上;另外代码里的 "p" 又是从哪来的?文档里也没有说明啊,官方文档的命令里,这种有枚举值参数但并不知道值是什么的情况,也非常常见。。。

另外一个常见的例子是 plot,从论坛上的代码来看,参数个数各不一样,有20个的,有10几个的,完全眼花,和官方文档上也无法一一对应。
由于对AutoCAD本身不熟悉,仅对开发有点经验,可能这个问题问得也比较小白,但确实是我当前比较大的一个困惑之一。。。
请教给位大佬!
谢谢!

               
            
         


有区别吗 发表于 2024-7-31 21:35:08

加粗的这几个不就是吗..
(command "array" (entlast    ""   "p"       cenpt      num   360"Y"))
                               对象         环形      基点          数目    角度

jenlin 发表于 2024-7-31 21:44:12

有区别吗 发表于 2024-7-31 21:35
加粗的这几个不就是吗..
(command "array" (entlast    ""   "p"       cenpt      num   360"Y"))
...

谢谢回复。
文档里要是按照极轴来看,有这么些参数呢。
选择对象 、阵列类型 、极轴、阵列的中心点、基点、阵列中项目的数目 、要填充的角度(+=逆时针,-=顺时针)(+=逆时针,-=顺时针) 【这里看起来是一组数据似的】、项目间的角度(+=逆时针,-=顺时针)(+=逆时针,-=顺时针) 、是否旋转阵列中的对象

(command "array" (entlast    ""   "p"       cenpt      num   360"Y"))

另,这里的第二参数 "" 代表的是哪个参数呢?
看文档上完全看不出来参数 该咋拼。。。

jenlin 发表于 2024-7-31 22:13:39

https://help.autodesk.com/view/ACD/2023/CHS/?guid=GUID-8336B4CD-5375-4290-BD08-7D9E022741F6

帝都划水王 发表于 2024-8-1 10:26:42

CAD Command 参数问题:初学lisp,很多调用指令跟CAD直接输入所给的参数很大程度不一样,只能自己调试慢慢给参数。有没有这方面的知识啊。
各位论坛大佬们。

jenlin 发表于 2024-8-1 13:37:05

只有自己根据命令行交互时自己记住参数这一个方式吗?对于CAD本身不熟的开发人员那也太不友好了:L

baitang36 发表于 2024-8-1 14:25:30

Command 可以一次只输入一个参数的

muai2010 发表于 2024-8-1 17:33:56

还没实践过,应该流程是一样的

jenlin 发表于 2024-8-1 18:52:54

各位大佬,是否只有自己通过使用CAD命令来了解各命令所需的参数,碰到麻烦点的还需要一点一点试才行,
比如打印或打印至PDF,在打印配置页面里有大量的配置信息项,如何对应该如何设置。

如果只有这么一个途径,那我也就死心了。。。不企图找到一个可参考的文档资料了。:handshake

lelelewfxy 发表于 2024-8-6 10:24:57

谢谢指导学习
页: [1] 2
查看完整版本: AutoLisp 里的 CAD Command 参数问题