7.5 Visual Lisp 语言窗体开发与数据传递_第1页
7.5 Visual Lisp 语言窗体开发与数据传递_第2页
7.5 Visual Lisp 语言窗体开发与数据传递_第3页
7.5 Visual Lisp 语言窗体开发与数据传递_第4页
7.5 Visual Lisp 语言窗体开发与数据传递_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何

编写对话框及数据传递代码对话框是人机交互的主要界面之一,它具有良好的视觉效果,操作方便、直观,输入数据与顺序无关。当我们编写好程序,需要通过外界输入数据时,对话框是一种首选的交互工具。对话框可以用DCL即对话框控制语言(DialogControlLanguage,简称DCL)来编写。DCL本身可直接VisualLISP的编辑框中按DCL的规律编写,并进行调试和预览工作,编辑完成后,将其后缀取为“.dcl”保存,然后在主程序中再用VisualLISP语句调用即可。在向用户提供图形的交互环境,使操作更为方便和直观。DCL文件由ASCII码组成,后缀为“.dcl”。对话框由若干控件组成,控件可以是按钮、切换开关、编辑框、列表或图像等(和VB控件定义相仿)。

何为对话框?对话框主要控件有哪些?AutoCAD为用户预定义了多种控件(23)。每一种控件属于一种类型。每一个控件有多个属性。每个属性都有一个名字和值。多数的属性都有它的默认值。一个控件具有哪些属性是由它的类型所决定的。控件的这些属性确定了它的外观形式和动作行为。编写对话框主要就是编写各种控件,对各种控件的属性进行定义,常见的控件主要有以下几种,分别是Button(ok_cancel等按钮)、Edit_box(编辑框)、Image_button(图像按钮)、List_box(列表框)、Popup_list(可下拉列表框)、Radio_button(单选按钮)、Slider(滑动条)、Toggle(复选框)、Text_part(文本控件的一部分)、Text(文本)、Image_button(图像)、Column(列)、Boxed_Column(加框列)、Row(行)、Boxed_Row(加框行)

控件有哪些主要属性?Label:指定显示在控件中的文字,该属性为一带引号的字符串;Edit_limit:指定在编辑框中允许输入的最大字符数个数,缺省值为132;Edit_width:以平均字符宽度为单位指定Edit_box控件中编辑或输入框的文本宽度,该属性值可以是一个整型或实型数值;Fixed_height:布尔型数值,制定控件的高度是否可以占据整个可用空间。缺省值为False,如果属性值为True,则控件的高度保持固定,不会占据由于布局或对齐操作而留出的可用空间;Fixed_width:布尔型数值,制定控件的宽度是否可以占据整个可用空间。缺省值为False,如果属性值为True,则控件的宽度保持固定,不会占据由于布局或对齐操作而留出的可用空间;Key:指定一个ASCII码名称,应用程序可以通过该属性引用指定的控件,该属性为一带引号的字符串,没有缺省值。对话框中各控件的Key值必须是唯一的。注意:Key值区分大小写;Value:指定控件的初始值。该属性值为一个带引号的字符串,无缺省值。其中编辑框的Value值为缺省时的数值,可以不用加引号;Aspect_ratio:指定图像的宽高比。如果属性值为0.0则图像大小占据整个控件;Action:动作行为属性动,作行为是用AutoLISP的函数或表达式表示定义的,用鼠标单击这样的控件时,就会执行相应的函数或表达式。如何调用控件?:控件名{

控件属性设置1

:控件属性设置2}:edit_box{label="编辑框1";key="xx";}方法1:控件名{控件属性设置}:spacer{width=2;}方法2控件名;ok_only;方法3ok_cancel;ok_cancel_help;如何确定对话框控件的逻辑结构?结构分析:从大范围来看,是一个大列,列中共有5大行组成,其中第二行又是一个框型列,而第三行是一个框型行,需要进行重新定义。另外在第一大行和第二大行之间留一个空白。对话框:dialog{label="对话框树结构";:column{:toggle{label="复选框";}:spacer{width=2;}:boxed_column{//框中列

label="控件组";:edit_box{label="编辑框1";key="xx";}:edit_box{label="编辑框2";key="yy";}}//框中列结束:boxed_row{//框中行

label="数值设定";:edit_box{label="绘图比例";key="rr";}:edit_box{label="线宽";key="dd";}}//框中列结束

ok_cancel;//控件引用的另一种方法,将控件属性全部引用

:text{label="显示技术说明";}}//全列结束}//全局结束绘制圆对话框绘制圆对话框的结构分析

对话框是一个树型结构,对话框是这棵树的树根,行、列组件是树枝,基本控件和组合控件是树叶。

如何编写有图像的对话框?circle:dialog{//定义名字为circle对话框

label="绘制圆";//显示在对话框顶部的标签

:row{//引用行

:image//引用图像控件

{width=30;//图像的宽

height=8;//图像的高

key="scut_cr";//图像的关键字

color=-2;//图像的背景色为AutoCAD的背景色

}//图像引用结束:boxed_column{//引用加框列

label="几何数据";//加框列的标签

:edit_box{//引用编辑框1label="圆心X(mm):";//编辑框1的标签

edit_width=18;//编辑框1的宽度

key="X";//编辑框1的关键字

mnemonic="X";//编辑框1的热键

}//编辑框1引用结束

:edit_box{//引用编辑框2label="圆心&Y(mm):";//编辑框2的标签&之后的字符是热键

width=18;//编辑框2的宽度key="Y";//编辑框2的关键字

}//编辑框2引用结束:edit_box{//引用编辑框3label="半径R(mm):";//编辑框3的标签

width=18;//编辑框3的宽度

key="R";//编辑框3的关键字

mnemonic="R";//编辑框3的热键

}//编辑框3引用结束

}//加框列引用结束

}//行引用结束ok_cancel_help;//引用ok_cancel组合控件}//全局结束输入热键字符,直接进入对应数据输入框法兰实例开发对话框程序分析

推出逻辑关系图窗体中控件从全局来看为一大行,大行中有两列,第一列有框中列组成;第二列有两个大元素组成,该两个元素成列排列,并且都是框中列。有了以上的逻辑分析,在结合具体控件的内容,我们就可以得到以下代码:jxfl:dialog{label="甲型法兰";:row{:boxed_column{label="法兰参数";:edit_box{label="法兰直径DN:";key="dn";edit_limit=15;edit_width=10;value=100;}:edit_box{label="D3:";key="db";edit_limit=15;edit_width=10;value=155;}::

:edit_box{label="倒角θ3:";

key="jc";edit_limit=15;edit_width=10;value=30;}}

:column{:boxed_column{label="绘制法兰位置(左下角点)";

:edit_box{label="横坐标:";key="xxx";edit_limit=15;edit_width=10;value=100;}

:edit_box{label="纵坐标:";key="yyy";edit_limit=15;edit_width=10;value=100;}}:boxed_column{label="各参数位置示意图";:image{key="jxfl_image";aspect_ratio=0.75;width=50;color=-2;}}}}ok_only;}全局来看为一大行,大行中有两列,第一列有框中列组成;第二列有两个大元素组成,该两个元素成列排列,并且都是框中列如何编写数据传递代码?数据传递代码的编写比较简单,就是要讲对话框中的某些数据传递到主程序中去,本次开发的软件是要将对话框中edit_box控件中的关键词KEY对应的变量值传递到主程序中去,一般用以下语句:

(setq变量名(atof(get_tile“关键词")))

变量名为主程序中的变量名,atof表示将字符串转化成数字,(get_tile“关键词“)表示将对话框中关键词和(get_tile“关键词“)中关键词一致的VALUE值赋值个本次变量。(setqd(atof(get_tile"ddd")))表示将对话框中关键词KEY为“ddd”的的VALUE值赋值给d。如前面对话代码中,ddd的value=230,那么,d=230,全部代码仿照上面即可。(defun

data_set()//数据从窗体传入和处理,程序取名为data_set(setq

dn(atof(get_tile"dn")))//从窗体获取数据实现交互,其中get_tile为获取窗体中

(setqdb(atof(get_tile"db")))//控件关键字Key为"dn"当前值,atof是将字符串转化为

(setq

da(atof(get_tile"da")))//数值的函数,通过setq将数值赋值给dn,其它语句道

(setqd(atof(get_tile"ddd")))//理相同/(setqb(atof(get_tile"bbb")))(setqdl(atof(get_tile"dl")))(setqh(atof(get_tile"hhh")))(setqha(atof(get_tile"ha")))(setq

hb(atof(get_tile"hb")))(setq

ja(atof(get_tile"ja")))(setq

jb(atof(get_tile"jb")))(setq

jc(atof(get_tile"jc")))(setqx(atof(get_tile"xxx")))(setqy(atof(get_t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论