明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 18742|回复: 49

[资源] 众多动态对话框源码 LISP 与 DCL 实例源码

    [复制链接]
发表于 2011-7-28 18:44:58 | 显示全部楼层 |阅读模式
土木转的一篇文章,觉得不错,拿出来和大家分享!!
我在网易上原创并广为下载的“钢构CAD”目前已下载约7000人次,且下载后使用者反映还好。

我一直有个想法,将我程序中的个别对话框控制的典型程序,选出一个在此,将源代码分别上传发表,为这个人气不错的版块,起点抛砖引玉的作用。
国内CAD开发高手云云的晓东CAD和明经通道,的确有不少源代码,但涉及到DCL对话框的确很少,公开发表的,还是少有的很老气的英文版的简单的一些局部介绍,太让人感到云雾高深。
有个老虎CAD网站,要注册成为其用户还要有里面高手的邀请书才行,我想注册也没资格也没被接受。但我却看见该网上的某个高手,把我在网易上发的一个贴子内容文章“快速成为CAD高手的方法”,连图一起在其老虎CAD网上转载发表,看来那些远离大众的老虎高手们,也还是会拒大众于门外却在大众中间转游啊。


钢构CAD在线   最新2.0  版程序下载
http://www.co188.com/forum/content/369_959993_1.htm

成为高手不难,可参看本站如下链接《CAD高手速成法》
http://www.co188.com/forum/content/1714_724644_1.htm

《钢构CAD》原始版及程序升级包的本站下载链接
http://www.co188.com/forum/content/1783_595556_1.htm

插入图框程序实例 LISP 及 DCL 全部源代码本站位置如下

http://www.co188.com/forum/content/93_896090_1.htm


为与热爱CAD的网易朋友的共享开发乐趣,我将程序中的几个我认为典型的动态对话框界面,选摘于此,看看那个较让朋友们看中,我就在此发布并讲解其中开发思路和感受。

让大家参考借鉴。

这是程序中插入图框的界面,是程序中改写最多的一个。
这个程序最先只是个纯LISP程序,后来参考各商业程序中的此类增加了对话框,但主要是非专业设计应用,此设置了一个从图中量取出图比例的功能,为满足一幅图中各种不同比例出图,特设置了多个标注样式,在后来的实用中,有的退休高工因眼光老化,又增加了标注字体的多项选择项目,又后来因不同专业爱好对图标栏的要求不同,又增加了自定义图标栏的项目。
本程序对那些工非设计院的工程师很有实用性。

此对话框全部程序源代码
//何人强/20050608/于曲靖双友钢铁厂
//051009于曲靖双友钢铁厂,在对话框中增加文字大小选项,并与标注各系统变量相联系
//;;;060123-25于师宗民科二号高炉工程工地,在对话框中增加幻灯显示(共调用29幅幻灯片,分两处显示),并对原布局略有调整
  crtkK : dialog{
        label="  钢 构 C A D  ---  插 入 图 框";

  :row{//其下为水平排列
            :boxed_radio_column{   // :        radio_row {//无加框按钮行   
        label=" ";key="TKZT";
:radio_button{label=" A 0";key="A0";}
:radio_button{label=" A 1";key="A1";}      
:radio_button{label=" A 2";key="A2";}
:radio_button{label=" A 3";key="A3";}
:radio_button{label=" A 4";key="A4";}
:radio_button{label="机电箭头";key="JD";}
:radio_button{label="了解程序";key="LJ";}

:boxed_column{
label="出 图 比 例 ";key="SRBL";
:text {        key="blvz";}//可变的文字对象
             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "1 :";//编辑框左边的名称
                key="CTBL" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=6 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }//截面长编辑框完,以下编辑框类同
:popup_list{        //比例下拉选单
key="popang";
edit_width=9;
}              
}
}
     :boxed_radio_column{
        label=" ";key="BLZT";
         :row{//其下为水平排列
:boxed_column{//在比例状态下设置为列
label=" 比 例 状 态 ";
        :radio_button{label="已经 确定";  key="YJQD";}
        spacer_1 ;//加空行--()
        :radio_button{label="图中 量取";  key="CTZLQ";}
     }

:boxed_column{
label="图 框 横 竖";key="TKHS";
        :radio_button{label="横  向";  key="HXTK";}
        :radio_button{label="竖  向";  key="SXTK";}
     }     
}

   :boxed_radio_row{
label=" 图 标 栏 的 选 用 ";key="SFCRTBL";
//:toggle { label= " 插 入"; key="CZTBL" ;}//注:因打勾选框不能单击启动子程序,因配合幻灯故改用单选钮
        :radio_button{label="默 认";key="CZTBL-1";}
        :radio_button{label="自定义图标栏";key="CZTBL-2";}
}


        :image {//幻灯显示框
        key = "kimage";
        color = -2  ;//背景色:1白2黑3蓝4白5灰6白7红8灰9白10蓝
        width = 30;//框宽,,,背景色在LISP中也设置,但均以黑色为妥
        aspect_ratio = 1;//高宽比,但也会被其它控件拉长或拉高
        }
        }        
             }

        :row{//其下为水平排列
   :boxed_radio_row {//加框按钮行//   :        radio_row {//无加框按钮行
        label=" 标 注 文 字 大 小  m m  ";key="VZDX";        
        :radio_button{label="2";key="XVZ";}
        :radio_button{label="2.5";key="ZVZ";}      
:radio_button{label="3.5";key="DVZ";}
:radio_button{label="5";key="JDVZ";}
:radio_button{label="7";key="TDVZ";}
        }  
        :image {//幻灯显示框
        key = "kimage-JT";//显示标注箭头大小幻灯
        color = -2  ;//背景色:1白2黑3蓝4白5灰6白7红8灰9白10蓝
        width = 20;//框宽,,,背景色在LISP中也设置,但均以黑色为妥
        aspect_ratio = 0.3;//高宽比,但也会被其它控件拉长或拉高
        }
        }
            
:boxed_column{        //组框行
            label="";
:concatenation{        //水平群集连结
        :text_part {label="";}        //纯文字显示
        :text {width=50;//框宽
        key="t_text";}        //可变的文字对象3
        }
spacer_1 ;//加空行--()
        :text {width=50;//框宽
        key="t_text-11";}        //可变的文字对象3
spacer_1 ;//加空行--()  
}
spacer_1 ;//加空行--()

        :row{//其下为水平排列
    ok_cancel;//确定和取消按钮
   
: button {//自定义一个按钮
                        key = "E_mail";//退出与确定的区别:确定为key = "accept";
                        label = "关 于";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
        }

    }




这个是程序中五金手册系列中最先开发的一个,其中数据部分也是从别的程序中获取占为己有的。
在工作中常备一本五金手册是很多工程师的习惯,虽现有了不少此类程序,但有时画个型钢断面时却很麻烦,在能从别处获取相关数据的时侯,就有了将五金手册与画断面二者合一的想法,编程时增加了放大多个倍数的选项。

此界面全部源代码// *****************************************************************************************************
DBJG : dialog{
        label=" 钢 构 C A D --- 角 钢";
:radio_column{//其下为无框竖向平排列
         :row{//其下为水平排列
        :image {//幻灯显示框
                        key = "kimage";
                        color = -2  ;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 30;//景宽
                        aspect_ratio = 1;//高宽比,但也会被其它控件拉大
                        }
                        
//           :boxed_radio_column{//其下为有框竖向平排列
:radio_column{//其下为无框竖向平排列
:radio_column{//其下为无框竖向平排列


   :boxed_radio_row{//boxed_radio_row加框按钮行单选          radio_row {//无加框按钮行单选
//   :radio_row{//boxed_radio_row加框按钮行单选          radio_row {//无加框按钮行单选   
label="";key="SFCRTBL";
        :radio_button{label="等 边";key="DBJG";}
        :radio_button{label="不 等 边";key="B-DBJG";}
}
:list_box{        //列表框
label=" 选 择 角 钢 型 号";
key="klist";        //key值
width=10;        //选单宽度
height=10;        //选单高度
}

:popup_list{        //下拉选单
label=" 图 形 放 大";key="DBJG-TXFD";edit_width=10;}

}
}              
        }
:boxed_column{        //组框行
            label="";
:concatenation{        //水平群集连结
        :text {width=55;key="DBJG-text-1";}        //可变的文字对象2
        }
        spacer_1 ;//加空行--()
:text {width=55;key="DBJG-text-2";}//可变的文字对象3
spacer_1 ;//加空行--()
:text {width=55;key="DBJG-text-3";}//可变的文字对象3
}

//    ok_cancel;//确定和取消按钮

:row{//其下为水平排列

:button{//width=25;
label="  插  入  图  形  ";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
//                        width=15;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = " 退  出 ";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
        
    }
: button {//自定义一个按钮
                        key = "E_mail";//退出与确定的区别:确定为key = "accept";
                        label = "关 于";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
   
    }
}
}//钢 构 C A D ---  角 钢


这个图层程序,是受那个贱人工具箱的启发,但最开始时因不会获取图层中的各类相关信息,又不想停留在贱人的此类不足上,故此程序是后来升级才开发的,与贱人的相比,我认为保留了图层中的线型、颜色等相美常用信息。
按一个键,就得到一个你想要的图层,包括线型、线宽、颜色等,为爱酷的朋友提供了方便。
在此,我要说贱人工具箱,人见人爱。
图层设置是画图中的一项麻烦事,特别是对我这样不精于设置的人来说,为一劳永逸,对设置了均为中文名称的相关常用图层,并用程序一次搞定,后来考虑到不同朋友的爱好,增加了自定义图层也一次搞定的想法。

一键图层对话框源码


TC : dialog{ //  070710 于成都大邑
        label=" 钢 构 C A D  ...  一 键 图 层" ;
        key="dial";
//        spacer_1 ;//加空行--()
        :row { //无框水平排列        :boxed_row//有框水平排列

:boxed_radio_column{ label="已有设置";
:list_box{        //列表框
//label="已有快速图层";
key="TC";        //key值
width=27;        //选单宽度
height=9;        //选单高度
}
: button {width=5;key = "Q1";label = "清 除 设 置";fixed_width = true;alignment = centered; }
: button {//自定义一个按钮
//                        width=5;
                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
                        label = "程 序 说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置        
    }

}
:radio_column{ //其下为无框竖向平排列
label = "选择1~5对应图层";
//:text_part {label="不选择的不会被保存";}        //纯文字显示
:row { //无框水平排列
:radio_column{ //其下为无框竖向平排列               
:popup_list{        //比例下拉选单
//label= "<1>";//编辑框左边的名称
key="<-1";
edit_width=25;
}
:popup_list{ key="<-2";edit_width=25;}                     
:popup_list{ key="<-3";edit_width=25;}
:popup_list{ key="<-4";edit_width=25;}
:popup_list{ key="<-5";edit_width=25;}
}
}
//   spacer_1 ;//加空行--()
:row{//其下为水平排列
//:text {label = ""; width= 8 ;key="text";}        //可变的文字对象1
: button {width=5;key = "accept";label = "保存设置";fixed_width = true;alignment = centered; } //按钮
: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退 出";// is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        is_default = true;
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置        
    }
    }
}

:boxed_radio_column{ //其下为有框竖向平排列
label = " 图层操作 ";
:row{//其下为水平排列
:radio_column{ //其下为无框竖向平排列  :boxed_radio_column{ //其下为有框竖向平排列  
: button { key = "X1";label = "关闭";fixed_width = true;alignment = centered; }
: button { key = "X2";label = "冻结";fixed_width = true;alignment = centered; }
: button { key = "X3";label = "锁定";fixed_width = true;alignment = centered; }
}
:radio_column{ //其下为无框竖向平排列
: button { key = "S1";label = "显示全部";fixed_width = true;alignment = centered; }
: button { key = "S2";label = "解冻全部";fixed_width = true;alignment = centered; }
: button { key = "S3";label = "解锁全部";fixed_width = true;alignment = centered; }
}
}
: button { key = "S4";label = "显示解冻解锁全部";fixed_width = true;alignment = centered; }
: button { key = "S5";label = "只显被选对象图层";fixed_width = true;alignment = centered; }
//: button {//自定义一个按钮
////                        width=5;
//                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
//                        label = "程序说明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
//                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
//                        alignment = centered;//使按钮居中放置        
//    }
}
}
:text {label = "图 层 操 作 更 轻 松 ,我 的 图 层 ,我 做 主 。"; width= 8 ;key="text";}        //可变的文字对象1
}




这是一个几何计算的小程序。很多专业计算,都难以找到现成的程序,自己会写当然更好,反正计算流程都很简单,只要将其变为程序吧了。


球类计算源代码
//何人强/20060219/于师宗民科煤业有限公司二号高炉工地
QTMJS : dialog{
        label=" 钢 构 C A D --- 球 类 体 面 积 计 算";
         :row{//其下为水平排列
        :image {//幻灯显示框
                        key = "kimage";
                        color = -2  ;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 45;//景宽
                        aspect_ratio = 1;//高宽比
                        }                        
           :boxed_radio_column{//其下为竖向有框水平排列
     :boxed_radio_column{//其下为竖向有框水平排列
        label=" ";key="";
                 :row{//其下为水平排列
                 
        :boxed_radio_column{//其下为竖向有框水平排列
                        label=" 选 择 ";
                        width=10;//编辑框宽度
                        :radio_button{label="球";key="XJ1";}
                        :radio_button{label="椭 球";key="XJ2";}
                        :radio_button{label="椭 圆";key="XJ3";}                        
                        }
        
           :boxed_radio_column{//其下为竖向有框水平排列
                                   label=" 输 入 ";
             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "1,长轴总长 L =" ;//编辑框左边的名称
                key="LD-01" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=8 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }//截面长编辑框完,以下编辑框类同

  :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "2,中轴总长 B =" ;//编辑框左边的名称
                key="LD-02" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=8 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }

  :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "3,短轴总长 H =" ;//编辑框左边的名称
                key="LD-03" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=8 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }
              }
}
}
:boxed_column{        //组框行
//            label="";
        :text {width=45; key="QT-text-1";}        //可变的文字对象2
spacer_1 ;//加空行--()  
:text {width=45; key="QT-text-2";}//可变的文字对象3
spacer_1 ;//加空行--()  
//:text {width=25; label="789"; key="LD-text-3";}//可变的文字对象3
}
//    ok_cancel;//确定和取消按钮
:row{//其下为水平排列
:button{label=" 计    算 ";key="QTJS-060121";alignment = centered;fixed_width = true;        is_default = true;}//按钮
:text {width=15;label = " ☆ ★ ☆ ";key="QTJS-text";}//可变的文字对象
: button {//自定义一个退出按钮
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退  出";
//                        is_default = true;//缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                }
    }
    }
}
}




这是一个编号类的小程序
这个程序的构思开始是很明显而简单的,在编写过程序中,在完成简单功能之后,又增加了自动识别大小写字母与数字,均能按递增或递减的方式进行连续编号。

ZC_BH : dialog{
        label=" 钢 构 C A D --- 连 续 编 号" ;
        key="dial";
        :row { //无框水平排列        :boxed_row//有框水平排列
        
                :image//幻灯显示框
                {
                        key="HD-01";
                        width=25;//显示框宽
                        height=1;
                        color=0;
                        fixed_width=true;
                }
:radio_column{//其下为无框竖向平排列    :boxed_radio_column{//其下为有框竖向平排列
:row{
:edit_box{label="文字高度:";key="VZG";width=5;}
:edit_box{label="起点编号:";key="QDH";width=5;}
}

:radio_row {//无加框行
:boxed_radio_row{//boxed_radio_row加框按钮行        radio_row {//无加框行
label=" 引 线 ";
:row{
:radio_button{label="有";key="BH-Y";}
:radio_button{label="无";key="BH-W";}
}
}

:boxed_radio_row{//boxed_radio_row加框按钮行          radio_row {//无加框行
label=" 方 式 ";key="JDQJ";
        :radio_button{label="递增";key="FS-Z";}
        :radio_button{label="递减";key="FS-J";}
}
}

:boxed_radio_row{//boxed_radio_row加框按钮行          radio_row {//无加框行
label="插入点位置";key="YH--";
        :radio_button{label="上";key="YH-S";}
        :radio_button{label="下";key="YH-X";}
        :radio_button{label="左";key="YH-Z";}
        :radio_button{label="右";key="YH-Y";}        
}

:row{//其下为水平排列

:button{width=5;label="编  号";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退  出";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
        
    }
     : button {//自定义一个按钮
                        width=5;
                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置        
    }
    }
}
}
}


这个数据运算的源代码是从网上捡来的,我只不过是增加了对话框界面,并略改了原代码中只能计算单行文字的功能,从而使只有含有数据的文字,均能进行运算。



JFCX : dialog{label=" 钢 构 C A D --- 数 据 累 加";
        :image {//幻灯显示框
                        key = "kimage";
                        color = -2  ;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width =40;//景宽
                        aspect_ratio =0.8;//高宽比,但也会被其它控件拉大
                        }  

             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "答 案 保 留 到 小 数 点 后 位 数 =" ;//编辑框左边的名称
                key="DA" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=3 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }//截面长编辑框完,以下编辑框类同
spacer_1 ;//加空行
              :toggle { label= "将 答 案 写 入 图 中"; key="TZ" ;}// 打勾

spacer_1 ;//加空行
:row{//无框行

//    ok_cancel;//确定和取消按钮

:button{width=10;label="选 取 数 据";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退  出";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
        
    }
    : button {//自定义一个按钮
                        key = "SM";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
                        }
    }




这个画型钢系列的程序中的一个角钢杆件程序,因也有了五金手册中的数据支持,就顺手编写了这类画型钢杆件的程序。
此类程序中对框中,运用了一个动作控制两个幻灯图片的分别动态变化显示,为程序操作代来了图文并冒的效果。


GJ_01 : dialog{//7-6.DCL      程 序 编 制 : 云 南 十 四 冶 ---  何 人 强
        label=" 钢 构 C A D --- 角 钢 杆 件";
:radio_column{//其下为无框竖向平排列
         :row{//其下为水平排列
        :image {//幻灯显示框
                        key = "kimage";
                        color = -2  ;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 20;//景宽
                        aspect_ratio = 1;//高宽比,但也会被其它控件拉大
                        }                        
//           :boxed_radio_column{//其下为有框竖向平排列
:radio_column{//其下为无框竖向平排列
:radio_column{//其下为无框竖向平排列

         :row{//其下为水平排列
   :boxed_radio_row{// boxed_radio_row 加框按钮行单选          radio_row {//无加框按钮行单选
//   :radio_row{// boxed_radio_row 加框按钮行单选          radio_row {//无加框按钮行单选   
label="角 钢 类 型";
        :radio_button{label="等边";key="DBJG";}
        :radio_button{label="不等边";key="B-DBJG";}
}

:boxed_radio_row{label="画 图 形 式";
        :radio_button{label="剖面";key="M-1";}//单选
        :radio_button{label="前视";key="M-2";}
        :radio_button{label="府视";key="M-3";}
        :radio_button{label="后视";key="M-4";}        
        }
}
:row{//其下为水平排列
:popup_list{        //下拉选单
label="型 号";
key="klist";        //key值
edit_width=20;
}

:popup_list{        //下拉选单
label="组合形式";
key="ZH";        //key值
edit_width=22;
}
}
        :image {//幻灯显示框
                        key = "kimage-1";
                        color = -2  ;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 60;//景宽
                        aspect_ratio = 0.2;//高宽比,但也会被其它控件拉大
                        }
}
}              
        }
         :row{//其下为水平排列
:edit_box{label="出图比例 1 :";key="CTBL";width=2;}
:edit_box{label="主线宽:";key="CTXK";width=2;}
:edit_box{label="两端截短:";key="LBSD";width=2;}
:edit_box{label="间距 a =";key="JJ";width=2;}
        }        
:boxed_column{        //有框行
        :text { label="此 处 显 示 选 择 过 的 型 号 参 数 , 未 选 择 将 不 能 正 确 画 图 。";width=60;key="text-1";}        //可变的文字对象2
}

:row{//其下为水平排列
:column{//无框行boxed_
        :text { label="点 击 下 拉 框 后 可 用 滚 轮 选 择";width=35;key="text-2";}        //可变的文字对象2
}

:toggle { label= "画轴线"; key="HZX" ;}
:button{width=5;label="画 图";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退 出";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
        
    }

: button {//自定义一个按钮
//                        width=5;
                        key = "SM";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置        
    }   
    }
}
}//钢 构 C A D ---  杆 件 角 钢





这是一个很简单的小程序,但其源代码,我认为也要比晓东和明经上公开的此类要有用得多,最起码还是中文界面的吧

ZC_BH_1 : dialog{
        label=" 钢 构 C A D --- 自 动 序 号" ;
//:radio_column{//其下为无框竖向平排列    :boxed_radio_column{//其下为有框竖向平排列
:row{
:boxed_radio_column{//其下为有框竖向平排列
label=" 编 号 ";
:edit_box{label="起点:";key="QDH";width=3;}
:edit_box{label="终点:";key="ZDH";width=3;}
}
:boxed_radio_column{//其下为有框竖向平排列
label=" 文 字 ";
:edit_box{label="高度:";key="VZG";width=3;}
    : button {//自定义一个按钮
                        width=10;
                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置        
    }
}
  }
ok_cancel;
}





以上程序,包含了对话框中的:输入数据记忆、按钮点控记忆、按钮点击的相关控制、幻灯片的动态显示控制等等。

此处只是选择了很少一部分有代表性的,如各位对“钢构CAD”程序中别的子程序源代码感兴趣,也可在此发表看法,我会综合各位朋友们的看法,将程序源代码及开发思路,在这个网站要发出来的。


//何人强/20050618/于曲靖双友钢铁厂     061013于师宗改写增加幻灯显示
  RYWT : dialog{
        label=" 钢 构 C A D --- 板 金 放 样 系 列 程 序 --- 任 意 弯 头";

:row{//其下为水平排列
        :image {//幻灯显示框
                        key = "kimage";
                        color = -2  ;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 40;//景宽
                        aspect_ratio = 1;//高宽比,但也会被其它控件拉大
                        }

:radio_column{//其下为无框竖向排列

:boxed_radio_row {
label="1、管道参数";//key="SRBL";
             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "外径" ;//编辑框左边的名称
                key="GDYJ" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }//截面长编辑框完,以下编辑框类同

  :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "弯曲角度" ;//编辑框左边的名称
                key="WQJD" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }

:edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "弯头节数" ;//编辑框左边的名称
                key="WTJS-1" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }//        :text_part {label=" N 等分环形节数为 N + 1";}        //纯文字显示
}

:boxed_radio_row {
label="2、弯曲半径输入方式";key="SRFS";
        :radio_button{label="倍数输入";  key="BSSR";}
        :radio_button{label="手工输入";  key="SGSR";}
          :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "        弯曲半径" ;//编辑框左边的名称
                key="SGSR-1" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
              }
     }

     :boxed_radio_row {
label="3、弯曲半径倍数";key="BSSR-";
        :radio_button{label="1";  key="BSSR-1";}
        :radio_button{label="1.5";  key="BSSR-15";}//注:此行不能写为key="BSSR-1.5";
:radio_button{label="2";  key="BSSR-2";}
:radio_button{label="2.5";  key="BSSR-25";}//注:此行不能写为key="BSSR-2.5";
:radio_button{label="3";  key="BSSR-3";}        
     }
:boxed_column{        //第二组框行
            label=" 按倍数确定的弯曲半径 ";key="SGSR-BS" ;
:concatenation{        //水平群集连结
        :text_part {label="";}        //纯文字显示
        :text {width=55;key="t_text";}        //可变的文字对象1
        :text_part{label="";}        //纯文字显示
        }
}
:boxed_column{        //第三组框行//            label="";

:concatenation{        //水平群集连结//        :text_part {label="";}        //纯文字显示
:text {width=55;key="t_text-1";}        //可变的文字对象2
        }
spacer_1 ;//加空行--()  
:text {width=55;key="t_text-2";}        //可变的文字对象3
}
spacer_1 ;//加空行--()
:row{//其下为水平排列
    ok_cancel;//确定和取消按钮
   
: button {//自定义一个按钮
                        key = "SM";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
: button {//自定义一个按钮
                        key = "E_mail";//退出与确定的区别:确定为key = "accept";
                        label = "关 于";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
                }
                }
                        }
    }



点评

纯粹的dcl代码没有lsp程序又有何用?!  发表于 2014-4-11 19:57
谢谢分享  发表于 2012-3-14 08:20
发表于 2024-7-24 14:58:35 | 显示全部楼层
好东西一定要顶啊
发表于 2024-4-7 19:02:22 | 显示全部楼层
下来学习,谢谢楼主!
发表于 2021-2-13 20:59:25 | 显示全部楼层

下来学习,谢谢楼主!
发表于 2011-7-28 20:37:08 | 显示全部楼层
好东西一定要顶啊
发表于 2011-7-29 08:55:53 | 显示全部楼层
钢构CAD是很不错的,支持!
发表于 2011-7-29 12:48:58 | 显示全部楼层
好东西,我的同事很多在用
发表于 2011-8-1 12:06:44 | 显示全部楼层
看了一下,受益匪浅!
发表于 2011-9-3 11:59:32 | 显示全部楼层
非常值得的资料
发表于 2011-9-3 15:32:09 来自手机 | 显示全部楼层
不跟贴,对不住楼主呀
发表于 2011-9-4 00:43:30 | 显示全部楼层
在学DCL,顶一下!
发表于 2011-9-4 06:41:46 | 显示全部楼层
下来学习,谢谢楼主!
发表于 2011-9-6 19:37:08 | 显示全部楼层
要是能有动画或截图演示就更好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:30 , Processed in 0.176477 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表