热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

autolispdcl编程,autolisp语言程序设计

本文目录一览:1、你们好我想学AUTOLISP请告诉我该怎么办?

本文目录一览:


  • 1、你们好 我想学AUTOLISP 请告诉我该怎么办?


  • 2、autocad怎样调用dcl对话框?


  • 3、图纸上dcl什么意思


  • 4、Autolisp编程求助


  • 5、如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

你们好 我想学AUTOLISP 请告诉我该怎么办?

我也是学生,,最近刚刚学测量,,,正好到图书馆借了本lisp的书自学,,,你去买这本书吧,,很详细,都是些基本的lisp的语法,,你有C++基础,很如意懂的.

用Visual LISP 开发AutoCAD 2000 应用程序人民邮电出版社出版的

很老的书了,,不知道你找的到不,,

其实LISP是很老的语言了,不过,给CAD编程够用了.

autocad怎样调用dcl对话框?

转载过来 希望对你有用

对话框文件是扩展名为.dcl的文本文件,符合dcl对话框控制语言的语法。但对话框文件本身并不能工作,还必须要用autolisp或ads应用程序调用。

对话框由主对话框和其内部的各种片型框组成,其结构为数状。图1.1为一对话框结构示例,树叶是各种片型框,树根为dialog;图1.2为其在autocad中的显示。

在可编程对话框pdb中已预定义了以下基本片型框:

:dialog 对话

:button 按钮

:edit_box 编辑框

:list_box 列表框

:image_button 图像按钮

:popup_list 弹出表

:radio_button 单选按钮

:slider 滚动条

:toggle 开关

每个片型框包含一系列的属性,这些属性的值确定了片型框的位置、大小、长度、高度和文件标识等,例如lable属性确定了在片型框上显示的文字。用户可以根据dcl语法将这些基本的片型框组装起来,形成更为复杂,功能更为详尽的对话框,也可以定义与基本片型框无关的新片型框,并将其与基本片型框组合成新的片型框组。为了方便对话框的布局,可将一行或一列片型框当作一个新的片型框,并在其周围画上边框。对话框的基本布局有以下几种:

:column 列。定义,可以与行、列嵌套。

:row 行。片型框组按行平行分布,显示顺序同column,也可与行列嵌套。

:radio_column 单选列。包含一列单选片型框,同时只能选择一个片型框。

:radio_row 单选行。包含一行单选片型框,同时只能选择一个片型框。

:boxed_column 有界列。列的周围画上边框。

:boxed_row 有界行。行的周围画上边框。

:boxed_radio_column有界单选列。在单选列的周围画上边框。

:boxed_radio_row 有界单选行。在单选行的周围画上边框。

用户可以定义自己的属性,不过在一般情况下仅使用pdb预定义的属性就可以满足程序的要求了。当片型框中的属性未被指定时,pdb将赋于其缺省值。没片型框的预定义属性也各不相同,但布局属性和功能属性则是所有有效片型框的公共属性,这些公共属性是:

aligment 片型框的定位方式;

width height 片型框的宽度和高度;

fixed_width fixed_height 其值为true时,片型框大小固定不变;

children_aligment 子片型框的定位属性;

children_fixed_width 子片型框的宽度固定属性;

children_fixed_height 子片型框的固定高度属性;

label 显示在片型框内或左上方的文字;

key 指定程序引用片型框的文本字符串,在指定的对话框中,每个key的值应该是唯一的;

value 片型框的初始值,为一字符串;

mnemonic 片型框内快捷键,即带下划线的字母;

is_enabled 值为false时,片型框不可选;

is_tab_stop 值为false时,片型框不接受tab聚焦;

action 指定片型框时,对应的autolisp程序进行的操作。

另外,片型框还包括图像框image、文本框text和衬框spacer,这三种片型框只是起修饰作用和加强视觉效果,不能引起任何操作。

dcl文件采用c语言的风格,每个分号表示一名,每个片型框的定义用一对大括号括起来;注释在单行时用//,多行时可采用/*注释语句*/的形式。

下面以一个简单的例子说明dcl的编程,图2是调用example.dcl的显示。

//example.dcl对话框示例文件

test:dialog{

label="dialog example";

:text{//文本片型框

label="this is aexample.";

}

:button{//按钮片型框

key="accept";

//关键字key为accept

label="ok";//标号为ok

mnemOnic="o";

//按alt_o键可以选择ok按钮

fixed_example.dcl"))

(if(not(new_dialog"test"dcl_id))

(exit))

(action_tile

"accept"

"(done_dialog)")

(start_dialog)

(unload_dialog dcl_id)

)

在autocad中显示图2对话框的过程如下:

command:(load"example.lsp")

c:showdcl

command:showdel

本文只是对对话框dcl作了简单的介绍,要想充分发挥autocad的潜能,掌握dcl对话框的编程,还需要参阅有关资料,详加研究。

图纸上dcl什么意思

图纸上dcl是AutoCAD的一种二次开发工具AutoLisp的程序文件。DCL是数据库控制语言。

它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。

DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。

语法结构:

DCL以控制用户的访问权限为主,因此其指令作法并不复杂,可利用 DCL 控制的权限有:

SELECT。

INSERT。

UPDATE。

DELETE。

EXECUTE。

USAGE。

REFERENCES。

根据不同的DBMS以及不同的安全性实体,其支持的权限控制也有所不同。

GRANT的语法结构为:GRANT [权限] ON [要授予权限的资料库物件] TO [使用者帐户名称] WITH [授权选项]。

DENY的语法结构为:DENY [权限] ON [要授予权限的资料库物件] TO [使用者帐户名称]。

Autolisp编程求助

换个思路,轮廓线不删除,代码如下:

(defun c:111 ( / ptb ptb1 sel1 x)

(if (setq sel1 (entsel))

(progn

(setq sel1 (car sel1))

(setq ptb (mapcar 'cdr (vl-remove-if '(lambda(x)(/= (car x) 10)) (entget sel1))))

(if (setq ptb1 (ssget "_cp" ptb));如果选中对象

(vl-catch-all-apply 'ssdel (list sel1 ptb1));选择集里面排除轮廓线

)

(if (ssname ptb1 0);如果选择集里面还有其他对象

(command "ERASE" ptb1 "");删除

)

)

)

(princ)

)

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

打开Visual Lisp编辑器有两种方式:

1.AutoCAD2008及之前的版本,在菜单栏“工具(Tools)"下面,选择”AutoLisp"----"Visual

Lisp编辑器"。(”AutoLisp"----"导入应用"这个命令是用来加载AutoLisp脚本的)

2.AutoCAD2009及之后的版本,在功能区的”管理“选项卡里可以直接打开Visual Lisp编辑器。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

打开Visual Lisp编辑器之后新建一个文件,并另存为Lisp源文件。然后就可以在编辑窗口里输你的代码了。

代码编辑并调试确认无错误后,就可以在AutoCAD中使用了。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

左边的按钮表示立即运行当前代码,如果有错误就会提示出来,右边按钮是切换到CAD窗口。

如果不需要再修改代码了还可以将代码进行编译以加速运行。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

根据向导一步步进行编译很简单的。

如果在其他CAD图形文件中需使用当前代码文件或编译后的文件,就按上面第一点的,或者在命令行输入”ap",打开导入应用的对话框。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

1是用来临时导入的,2是将程序加入CAD的启动组。

lisp解决重复性劳动问题

在设计和绘图中,你觉得都是简单粗暴的重复性工作,就可以考虑用AutoLisp来代替你做。

首先,AutoLisp也是一个程序设计语言,属于Common

Lisp的子集,同时加入了很多自定义的函数。即然是一个程序语言,就是其他编程语言能做的,它也能做,只是他的lisp语法跟一般的语言有些差另就是了,但是如果是一个没有VB、C#、C++(对应于AutoCAD的开发方式分别是VBA,.net,ObjectArx)的基础的人来说,AutoLisp是很简单而且特别容易上手的一个语言。

作为一个编程语言,AutoLisp能做的很多:

1、扩充AutoCAD的原有命令。任何带有C:前缀的AutoLisp函数,在AutoCAD中都可以像"line" "circle"

"dim"等命令一样使用。

2、编写代码直接根据国标图库要求来绘出一些常用图库标准件什么的,或是代替人查找各种设计手册中的相关数据并继续使用。

3、进行参数化绘图,对于一些不特别复杂的系统,提供窄范围、大深度的专业设计自动化或者辅助系统,如发动机装配工具设计、纵使机主轴箱设计等。

4、DWG文件本质上是AutoCAD在图形生成和编辑中使用的数据库,可以将一些非图形信息的数据(粗糙度,高度,厚度。。)等存于DWG文件中作

为非图形数据库文件,然后利用Lisp程序进行读取等。

各种AutoCAD二次开发方式的比较:

由于 .net语言和c++的学习曲线比较陡峭,所以简单易学的AutoLisp经常与VBA进行对比。(当然如果有VB的基础还是直接学VBA好了。)

AutoLISP擅长建立新命令和产生已有命令的连接。VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这就是问题变得复杂的地方。

不过,在AutoCAD2000开始,Autodesk公司就在AutoCAD中加入了Visual

Lisp编辑器,引入了许多新函数扩充AutoLisp的功能,并支持ActiveX对象的访问方式,所以使用AutoLisp来与Word\Excel等程序进行交互也是变简单了。

另外,在创建带GUI图形界面的应用程序上,VBA当然是所见即所得的了,而AutoLisp是通过DCL文件来实现GUI的(语法很简单,但做不到所见即所得).这点是AutoLisp略逊一筹了。原文出自[

CAD自学网 ] 转载请保留原文链接:


推荐阅读
author-avatar
手机用户2502938985
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有