CAD界面中如何定义新命令?
如果我们要定义一个全新的命令,可以利用CAD提供的二次开发工具:LISP / VBA/ / ARX等来编程,但这不是大多数人能做到的。这里要介绍的是如何利用CAD的自定义界面(CUI)命令,利用简单的宏来调用现有命令并添加一下简单的参数和设置。
在CUI自定义界面中可以根据需要重新设置菜单、工具栏、命令面板,可以调整现有命令在界面中的位置,这些在之前已经写文章介绍过。
这里就简单介绍一下如何利用宏,利用现有命令来定义一个新的命令。
昨天我们介绍了更改为随层(SETBYLAYER)的命令,是设置所有对象属性都随层。其实默认状态下图形的属性都是随层的。但假如我们改变了颜色、线宽、线型的当前设置项恢复成随层设置,我们也自己定制类似的命令,执行命令后让颜色、线宽、线型的当前值都恢复成随层。
直接输入CUI,回车,打开用户自定义界面对话框,在命令列表的任意命令上鼠标右键单击,选择新建命令。
然后在特性选项中将名称更改为“属性图层”,接下来将通过宏命令来告诉它需要做的事。在宏输入框中输入“
"^C^C(setvar “cecolor” “ByLayer”) (setvar “celweight”-1) (setvar “celtype” “ByLayer”)",如图片所示。
^C^C的功能是取消还未完成的其他操作,和按两次esc键功能类似。然后setvar设置变量告诉AutoCAD改变现在对象的颜色、线宽、和线型属性为随图层。
我们可以在“说明”一栏添加上功能的说明文字,自己用的话可以不用填写了。
为了在工具栏或命令面板中添加命令,我们可以给命令设置好大图像和小图像,大图像分辨率是32X32的,小图像是16X16的,我们可以从CAD提供的图像列表中选一种类似的,或者选择其中一个图标后直接在CUI对话框中进行简单编辑,也可以输入我们自己绘制的图像。
当然还根据需要设置:显示命令名、标签等等。设置好后,单击底部的应用按钮,就可以将自定义的命令添加到命令列表中,然后我们就可以在命令列表中搜索到新建的命令,将它添加到命名面板、工具栏或菜单中,如下图所示。
其实我对宏也不是了解,不过我们可以先查看一下CUI中已有命令定义的宏,先参照做一些简单的定制,下面我整理了一些关于宏的资料,希望对大家有帮助。
CAD宏的简单介绍
命令宏可以包含命令、特殊字符、DIESEL表达式或AutoLISP编程代码。
宏将定义使用用户界面元素时应执行的动作。它可以像命令一样简单(例如circle),并且可以包含特殊字符(例如^C^C)。
例如,宏^C^C_.circle 1,它可以绘制一个半径为1个单位的圆。下表解释了定义此宏的组成部分。
取消处于活动状态的命令
当单击用户界面中的按钮时,将在程序的当前上下文中执行指定到此按钮的宏。这意味着,该宏将尝试响应当前提示。如果要确保在执行宏时当前没有命令处于活动状态,则使用^C命令序列作为宏的前缀。虽然单个^C能取消大多数命令,但要从标注命令返回命令提示必须使用^C^C,并且根据-LAYER命令的当前选项需要使用^C^C^C。^C^C可以取消大多数命令序列,而且是推荐您使用的序列。
验证宏字符
宏中的每个字符(即使是空格)都有重要意义。如果在宏的末尾加了一个空格,将视为您已按了空格键或Enter键来完成命令。
在宏中使用标准命令
作为AutoCAD或基于AutoCAD的产品一部分的命令应使用句点字符(.)作为前缀。句点字符使用户可以使用标准命令,即使已使用UNDEFINE命令取消其定义。这种预防措施使宏在共享同一自定义(CUI/CUIx)文件的其他计算机上使用时仍可被识别。
宏的国际语言支持
首次创建宏时,通常会使用命令名称和选项值并以您熟悉的语言来创建它。每个命令和选项都具有一个本地和全局名称,以允许在AutoCAD支持的所有不同语言中使用宏。非英文版支持不需要在您执行太多其他操作,您只需在每个命令或选项前添加下划线字符(_)即可。该下划线字符指示AutoCAD,应先转换命令名称和选项值,然后才能执行它。
使用单一对象选择模式
单一对象选择模式取消了编辑命令中“选择对象”提示的普通重复。选择一个对象并响应其他所有提示后,命令将结束。
请看以下样例中的宏:
^C^C._erase single
该宏将终止当前命令,并启动单一对象选择模式中的ERASE命令。在启动宏后,可以选择单个对象,也可以单击图形中的空白区域,然后指定窗口/窗交选择。将删除使用这些方法选择的任何对象。
在宏中重复执行的命令
一旦创建了宏,您可能想要多次重复使用它,然后再继续其他命令。在宏中,可以使用前导星号(*)来指明应重复使用的宏中的命令,直到按Esc键或开始另一个以^C开头的宏。
以下样例中的宏将重复执行命令:
*^C^C._move Single
*^C^C._copy Single
*^C^C._erase Single
*^C^C._stretch Single Crossing
*^C^C._rotate Single
*^C^C._scale Single
注意:不能使用此功能选择选项,或者将其用于图像平铺菜单中的宏。
终止宏
某些宏需要使用特殊结束符。例如,需要按Enter键而不是空格键来终止TEXT命令,需要多次按空格键或Enter键才能完成某些命令。
以下两条特殊约定解决了这些问题。
·宏中的分号(;)相当于按Enter键。
·如果某一行以控制字符、反斜杠()或分号(;)结尾,将不在其后添加空格。
请比较下面的宏:
ucs
ucs ;
第一个样例中UCS后有一个空格,将启动UCS命令,并且将模拟按空格键(因为行以空格结束)。将显示以下提示:
指定UCS的原点或[面(F)/命名(NA)/对象(OB)/上一个(P)/视图(V)/世界(W)/X/Y/Z/Z轴(ZA)] <世界>:
第二个样例后面有一个空格和分号,将启动UCS命令,然后依次模拟按空格键和按Enter键,这个操作将接受默认值(世界)。
在宏中禁用回显和提示
宏中的字符将会在命令提示下显示,就像用户通过键盘键入这些字符一样。这种显示重复称为回显。您可以使用MENUECHO系统变量禁用宏回显。如果项目输入的回显和提示处于打开状态,则在宏之前添加^P就可以临时关闭它们。您也可以使用宏中的^Q来隐藏命令行历史记录中的所有提示和输入。
关于宏的相关知识还有很多,要想对宏有比较深入的了解,需要对CAD的编程有一定了解,这里就不再详细介绍了,如果真对宏感兴趣,首先要有学习一些CAD编程的知识,然后再来看相关帮助就简单了。