AutoLISP语言没有“语句”这一术语,AutoLISP程序一般是由一个或一系列按顺序排列的标准表所组成。AutoLISP程序的书写格式有如下特点:由于AutoLISP语言的一切成分都是函数,而所有函数又以表结构形式存在,所以AutoLISP程序的所有括号都需要左右匹配。AutoLISP程序阅读函数时,按从左到右的规则进行。AutoLISP求值器总是忽略每一行中分号以后的部分。......
2023-11-02
在设计对话框中,对于列表框/下拉框,虽然可以设置它的初始值,但是如果需要动态修改下拉框内的值的话,那么只能够用AutoLISP进行动态生成数据。
首先来看一下与列表框/下拉框相关的一些AutoLISP函数。
1.start_list。
格式:
用start_list函数开始对话框中的一个列表框或一个打开式列表控件的处理。
key变元是一个指定对话框控件的字符串。key变元是大小写敏感的。operation是一个整型值,它的含义见表15-8。
除非start_list函数调用开始的是一个改变表的内容的操作(这时operation变元的值指定为1),否则index变元就会被忽略。如果调用start_list函数是为了改变所选择的表的内容(即operation变元的值为1),所提供的index变元就指出了随后调用add_list函数要改变的表项。index变元的取值从零开始。如果您没有指定operation变元,那么隐含的operation的取值为3(生成新表);如果您指定了operation而没有指定index,那么,index取隐含值0。
表15-8 start_list函数所用的列表框代码
随后所调用的add_list函数将影响由start_list函数启动的表,直到应用程序调用end_list函数。
2.add_list。
格式:
add_list用户在现行激活的对话框的表中增加一个字符串,或者修改其中的一个字符串。
在使用add_list函数之前,必须用start_list函数打开和初始化一个表,根据start_list函数调用中指定的参数operation的不同,即:
或
add_list函数调用中的string变元,要么被加到现行表中,要么替换掉现行表中的一个表项。
3.end_list。
格式:
end_list函数用来结束现行激活对话框的表的处理。
该函数是start_list函数的配套函数。它关闭由start_list函数所打开的表控件。在start_list函数调用之后一定要调用end_list函数。
在对话框设计当中,所有的列表框/下拉框处理,都是由这三个函数来完成的。
通过使用上述三个函数的调用序列,可以在列表框和打开列表框中显示一个表。一旦一个表被生成之后,就可以修改它。对表的修改存在三种可能的操作。每一种操作都是通过start_list函数的operation变量来指定的。
(1)创建新列表。
operation变量值:3
这是为了生成一个新列表。生成新列表的操作是隐含操作。
在调用start_list函数之后,就能重复调用add_list函数。每调用一次add_list函数就往列表中增加一个新项。通过调用endlist函数结束表的处理。
例如:
可以来看一个例子。先用DCL来设计一个对话框,包含有初始值,代码如下:
可以看到,在上面给列表框“keylistbox”赋了初值“1\n2\n3\n4\n5\n6\n7”,我们先通过预览功能,查看所设计的对话框,如图15-36所示。
编辑LSP文件。(www.chuimin.cn)
;主程序
通过主程序运行,可以发现列表框的内容已经不是“1\n2\n3\n4\n5\n6\n7”了,而变成了("a""b""c""d""e""f"),如图15-37所示。
图15-36 列表框显示1
图15-37 列表框显示2
(2)改变已存在的列表中的值。
operation变量值:1
这种情况是为了改变表中的一项。
使用时,除了需要指定operation变量值以外,还要指定需要改变项的index值,即其在列表中的位置。
比如上一个例子,初始化值是“1\n2\n3\n4\n5\n6\n7”,现在希望将第4个值(也就是数字4)改变一下,变成“Item Changed”。
那么可以通过operatioin的1操作来完成这项功能。
;注意这里,使用了operatioin的1操作,后面接的是
;被操作项的序列号。
;需要注意的是autolisp是从0开始算的。
;在这里进行修改
从上面的代码可以看到,采用start_list的operatioin的1操作,并且指定了被操作数的序号,即3,从零开始算,也就是“4”这个字符。
以上这条语句将字符“Item Changed!”替换掉原有的字符“4”。可以来看一下程序运行的结果,如图15-38所示。
图15-38 改变列表框中的值
4.在已存在的列表中增加新的值。
operation变量值:2
如果想在列表中增添新的项,可以使用operation的2操作。
首先,调用start_list函数,指定2操作。
然后,用addlist函数加入一个新项。
最后调用(endlist)函数即可。
如果列表框支持多个选择,应用程序就必须对值串中的多个值分步取出,并分别进行转换。下面给出的MultiLIST函数返回的一个表,就包含了用户从源displist中所选择的那些表项。在本例中,显示表displist作为全局变量被维持。
MKLIST函数要求用列表框的$value来调用。
上述所有样例都在单选情况下工作。
AutoLISP语言没有“语句”这一术语,AutoLISP程序一般是由一个或一系列按顺序排列的标准表所组成。AutoLISP程序的书写格式有如下特点:由于AutoLISP语言的一切成分都是函数,而所有函数又以表结构形式存在,所以AutoLISP程序的所有括号都需要左右匹配。AutoLISP程序阅读函数时,按从左到右的规则进行。AutoLISP求值器总是忽略每一行中分号以后的部分。......
2023-11-02
图17-22 家属楼平面空间建筑平面参见光盘光盘动画演示\第17章\绘制家属楼平面图.avi绘制步骤:1.建筑平面墙体绘制。图17-42 确定户门宽度图17-43 创建户门门洞3)单击“绘图”工具栏中的“多段线”按钮,绘制户门的门扇造型,该门扇为一大一小的造型,如图17-44所示。绘制建筑平面图对开门。图17-51 绘制门宽范围图17-52 剪切形成门洞3)单击“绘图”工具栏中的“矩形”按......
2023-11-02
最后,对其他细节进行了完善,并赋材渲染。图11-176 绘制多段线图11-177 旋转成曲面17.打开图层“机身1”、“机身2”、“发动机喷口”,然后用“自由动态观察器”将图形调整到合适的视角。图11-178 机舱结果18.绘制导弹。图11-179 “图层特性管理器”对话框19.将图层“导弹”设置为当前图层,然后用“isolines”命令设置总网格线数为8。......
2023-11-02
命令行提示与操作如下:执行选项中有“指定点”“水平”“垂直”“角度”“二等分”和“偏移”6种方式绘制构造线,分别如图2-4所示。构造线模拟手工作图中的辅助作图线。图2-5所示为应用构造线作为辅助线绘制机械图中三视图的示例。图中细线为构造线,粗线为三视图轮廓线。......
2023-11-02
绘制如图2-86所示的小房子。图2-86 小房子绘制步骤:参见光盘光盘动画演示\第2章\小房子.avi1.绘制屋顶轮廓。将“门窗”层设置为当前层。图2-88 墙体轮廓图2-89 显示线宽绘制门把手。选择菜单栏中的“绘图”→“矩形”命令,在适当的位置上,绘制一个长度为10,宽度为40,倒圆半径为5的矩形。单击“确定”按钮后,返回到“图案填充和渐变色”对话框,将“比例”设置为2。单击“确定”按钮后,选择屋顶区域进行填充,结果如图2-86所示。......
2023-11-02
根据各电气图所表示的电气设备、工程内容及表达形式的不同,电气图通常分为以下几类。它是表示成套装置或设备中一个结构单元内各元件之间连接关系的一种接线图。如图18-6所示是某车间的动力电气平面图,它表示了各车床的具体平面位置和供电线路。......
2023-11-02
每一个已加载的ARX应用程序和它的路径都用双引号引起来作为表中的一项。在加载ARX应用程序时,会对指定的ARX应用程序的有效性进行验证。在使用arxload加载一个ARX应用程序之前,也许你应该用arx函数检测现行已加载的ARX应用程序。本函数用于加载定义了若干条命令的一个相关ARX应用程序文件。当在命令提示符Command:下第一次录入APP1、APP2或APP3命令之一时,ARX应用程序就会被加载,然后接着执行要执行的那个命令。......
2023-11-02
通过本例图形的绘制,使读者掌握怎样灵活利用工具选项板进行快速绘图。利用“图案填充”命令对图形剖面进行填充。设计中心与工具选项板的优点是能够建立一个完整的图形库,并且能够快速简洁地绘制图形。打开一个新图形文件。将需要的图形文件模块从工具选项板上拖入到当前图形中,并进行适当的缩放、移动、旋转等操作,最终完成如图9-125所示的图形。图9-124 绘制图形图9-125 盘盖组装图......
2023-11-02
相关推荐