您的当前位置:首页正文

opendcl

2021-12-01 来源:步旅网
似乎很久没有弄过DCL这个东西了。今天又看了下,DCL有他自己的优点,就是不需要额外的安装库等。但是DCL编写出来的对话框有点难看。所以有人就开始了像OpenDCL这样一类比较漂亮的东西。还好,这个东西是免费的。很适合我。接下来我就直接做个简单的介绍。

DCL语言相信大家接触过,这个没有什么集成的开发工具,所有的东西只能靠自己手写,所以写代码就是一件非常麻烦的事情。还好,它很简单,所以用的相对较多。但是现在网上出来了DCL的代替品—OpenDCL,我们得尝一尝了。 首先,下载OpenDCL:http://opendcl.com/wordpress/

其次,安装CAD,现在用CAD2008及以上,顺便提下,2009和2010的默认界面很漂亮,高贵的气质。

下面,举个例子,说明如何应用。

1.打开OpenDCL Studio,单击菜单“project”->“Add Modal Dialog” ,这个时候你会看到出现了一个空的窗体。如图中的第一部分所示:

有了这个空的窗体后,需要用到的控件就能够画在上面了。接下来我们就在空白窗体上放置两个东西:文本标签和按钮。

2.在空白窗体上放置文本标签和按钮

这个工作很简单,读者自己完成就行了。完成后结果如下:

完成这个工作后,将工程存为“HelloWorld.odcl” 。当然为了在CAD中能够调用,我们最好将它保存在CAD支持的搜索路径中。

既然已经有了对话框,那么我们就可以在CAD中应用了。如何用呢?和DCL一样,需要lisp程序的驱动。 3.编写驱动程序。

打开任意的记事本,键入以下代码: (command \"OPENDCL\")

(defun c:Hello () ; 加载对话框文件

(dcl_Project_Load \"HelloWorld\" T) ; 显示对话框

dcl_Form_Show HelloWorld_Form1) (princ) )

其中dcl_Project_Load 后面的\"HelloWorld\"是对话框文件(工程)的路径名,T指的是重新加载,其中的HelloWorld_Form1应该是对话框的名字,从第一个图片的第三部分来看,对话框的名字应该是Form1,但是在程序中是

HelloWorld_Form1,那就说明了一个问题:在程序中,工程名+对话框名=真正使用的名字。

将上述代码保存到对话框所在的路径下,当然两者都要在CAD的搜索路径内。

4.加载运行

既然所有需要的材料都有了,那么剩下的就是运行了。至于如何加载运行,这里就不再啰嗦。

分类: AUTOCAD

在前一个例子中,我们几乎没有做任何有用的工作。接下来,我们要有点作为。当单击按钮的时候,是不是应该有点反应呢? 1.初始化窗口

在“OpenDCL Studio”窗口的右上角找到“events”选项卡,然后再找到“Initialize”,并在前面的复选框内打上对号,此时弹出一个按钮“clipboard copy”,单击按钮,然后在前面的代码的基础上加上这样一段: (defun c:HelloWorld_Form1_OnInitialize (/)

(dcl_MessageBox \"已经初始化!\" \"初始化工作\") )

很显然,定义了一个新的函数。函数体里面是一段信息提示窗口的代码。刚才我们说到了一个事件“Initialize”,在对话框在屏幕上显示出来之际会激活事件“Initialize”,这个事件会初始化所有要显示的窗体和控件。也就是说,在窗体现实之前,系统会自动调用”OnInitialize“这个函数。如果将上述的代

码加载运行,我们就会发现,在窗体显示之前,弹出来一个信息提示对话框。如果你的结果不是像描述的那样,那么请记住:一定要保存DCL工程和lisp文件! 2.更改文本标签的显示内容

首先想到,应该是用一个函数吧?究竟是哪个呢? 将鼠标移动到文本标签上,双击,弹出下面的对话框:

在这个对话框里面,我们就能看到有关这个文本标签控件的描述。如果需要在程序的运行中修改标签的内容显示,则需要阅读其中的”Caption“项。单击它,则有:

单击”set function“按钮右边的复制按钮,将代码粘贴到原来的代码基础之上,当然要做出这样的修改。原代码如下:

(dcl_Control_SetCaption HelloWorld_Form1_Label1 NewValue [as String])

因为在运行前就需要将显示的文本改过来,所以将代码放在初始化函数中,替换掉原来的信息提示框。修改后的代码如下:

(defun c:HelloWorld_Form1_OnInitialize (/)

(dcl_Control_SetCaption HelloWorld_Form1_Label1 \"已经修改的文本\") )

运行上述代码,就能得到预想的结果。这个地方需要注意,也就是说,当上面的程序运行一次后,如果修改了label的显示内容,第二次运行的时候那个文本并不能改变。所以这个地方需要特别注意。

上面的这个问题困扰了很长时间,经过试验,原来发现应该这样:选择“tools”-“write events to lisp file”。 3.增加一个编辑框

如果能增加按钮的互动,那应该更加让人激动。看例子:

在原来的基础上,选中按钮,在“events”选项卡中选择“clicked”,选中前面的复选框,然后单击右边的复制按钮,在源程序中添加代码,将原来的代码改成如下:

(defun c:HelloWorld_Form1_TextButton1_OnClicked (/) (dcl_Form_Close HelloWorld_Form1) )

保存所有的项目,重新运行得到结果。当我们单击按钮的时候,就会关闭对话框。

好了,到此为止,你应该了解了一些关于opendcl的运行机制了,如果还想深入学习,则期待下面的例子。

已经有了前面的经验,下面的工作似乎就简单了一些。 1.在窗体上放置一个编辑框。 2.在程序的后面修改并添加程序:

(defun c:Untitled_Form1_TextButton1_OnClicked (/)

(setq sText (dcl_Control_GetText Untitled_Form1_TextBox1)) (dcl_messagebox (strcat \"你输入了: \" sText)) (dcl_Form_Close Untitled_Form1) )

意义很简单,相信大家都能看得懂。 3.保存所有的东西,运行程序。

然后再编辑框内输入一些字符之类的,然后单击按钮,观察程序结果。

因篇幅问题不能全部显示,请点此查看更多更全内容