用AUTOLISP对AUTOCAD进行二次开发
基于AutoLISP的AutoCAD二次开发研究
基于AutoLISP 的AutoCAD 二次开发研究Reaserch on AutoCAD secondary development based on AutoLISP崔联合,于华艳,刘 江,万文龙CUI Lian-he, YU Hua-yan, LIU Jiang, WAN Wen-long(常州机电职业技术学院,常州 213164)摘 要:为提高AutoCAD软件的绘制效率和定向功能。
采用Autolisp对AutoCAD软件进行二次开发,以实例介绍了应用Autolisp对AutoCAD进行二次开发的过程。
软件系统可快速开发出各类零件的命令集,通过输入相应尺寸能实现零件的快速绘制。
Autolisp开发工具能实现AutoCAD 的定向开发,提高AutoCAD的绘图效率和准确性。
关键词:Auto CAD;AutoLISP;二次开发;销轴中图分类号:TP391.7; TH132.417 文献标识码:A 文章编号:1009-0134(2019)02-0047-04收稿日期:2018-05-11作者简介:崔联合(1968 -),男,安徽铜陵人,教授,硕士,主要从事材料成形及机械制造等方面的教学与科研工作。
0 引言Autolisp 是美国Autodesk 公司开发的lisp 语言,该语言因语法简单、函数强大、编写环境宽、直译等特点,而在AUTOCAD 软件的二次开发方面得到广泛应用,特别是在机械行业,其影响及普及程度处于最重要地位。
为了进一步扩充该软件的功能和应用行业,专业人士应用AutoLISP 技术对AUTOCAD 进行二次开发的研究一直没有停止过,也取得了较丰硕的成果。
谢中梅等[1]用Auto LISP 和Visual Basic 开发的程序,完成了AUTOCAD 软件图表的设计;张勇[2]研究了基于特定设计对象,AutoCAD 的二次开发系统;张洪雷[3]应用AutoLISP 技术,就如何制定产品结构和生产方案进行了研究;邱林[4]等用AutoLISP 编程,对渐开线弧齿圆柱齿轮实现了参数化建模。
基于AutoLISP的方圆过渡接头展开放样图绘图命令的二次开发
2020年第22期信思与电脑China Computer & Communication基于AutoLISP 的方过渡接头展开放样图绘图命令的二次开发蓝海鹏(中国恩菲工程技术有限公司,北京100038 )摘 要:通过AutoLISP 语言对AutoCAD 进行二次开发,采用对话框交互方式获取参数,利用AutoCAD 强大的命令工 具并借助三维图形,实现了方圆过渡接头展开放样图的自动绘制,避免了烦琐的数学解析和公式推导,提高了工作效率 和准确性。
关键词:AutoLISP;二次开发;展开放样;自动制图中图分类号:TH136; TP391.72 文献标识码:A 文章编号:1003-9767 (2020) 22-045-04Drawing Command Secondary Development for Lofting of HemisphericalDome Based on AutoLISP LAN Haipeng(China ENFI Engineering Corporation, Beijing 100038, China)Abstract : The secondary development of AutoCAD is carried out through AutoLISP language, parameters are obtained through dialog box interaction, the powerful command tool of AutoCAD and three-dimensional graphics are used to realize the automatic drawing for Lofting of Hemispherical Dome, which avoids the tedious mathematical analysis and formula derivation, and improves the work efficiency and accuracy.Keywords : AutoLISP; secondary development; lofting; automatic drawing0引言方圆过渡接头又称“天圆地方”,是指方形管道与圆形 管道之间连接过渡的飯金构件,通常采用钢板弯折焊接而成, 在通风管道、料斗料槽等场合都有广泛应用。
AutoCAD软件的二次开发
6. 实体名:为图形对象指定的16进制的数字标识。通过该标识,可找到实体在 图形数据库中的位置,并可进一步对其进行编辑。
例:_$(entlast) 说明:返回最后一个加入图形文件的对象的实体名
第110页/共54页
7. 2 AutoLISP程序设计语言
表的长度:表中的元素个数。
例:(1.0 1.0 0.0) (“this” “that” “the other”) (1 “ONE”) ((a b) c (c d))
长度: 3
3
2
3
长度:(+ 142 3)
(sin (*20.5 pi))
用表可以方便地构造出复杂的数据结构。
5. 选择集:一个或多个图形对象的集合,用户可通过AutoLISP程序向选择集添 加或者从选择集中删除图形对象。
第65页/共54页
7. 1 VisualLISP简介
五、VisualLISP: Autodesk公司为增强AutoLISP程序开发能力而设 计的软件工具。
Visual LISP集成开发环境的组成部分:
语法检查器:可识别错误的AutoLISP结构和内部函数调用中不合适的参数。 文件编译器:可改善程序的执行速度并提供一个有效的开发平台。
Heap:25000 bytes Stack(栈区域):存储函数的变量和局部结构。标准表中嵌套的表越多,函数执行的 递归次数越多,该区域所占的空间越大。
Stack:20000 byets
注意:AutoCAD平台上运行AutoLISP时,用户不能扩展系统的堆或栈空间
2. 内存出错提示信息
堆空间用光:Insufficient node space。 没有足够的内存装载AutoLISP:Insufficient memory-AutoLISP disabled。
基于AutoLisp的AutoCAD二次开发在测绘图形处理中的应用
基于AutoLisp的AutoCAD二次开发在测绘图形处理中的应用摘要:本文介绍了如何利用Autolisp语言对AutoCAD进行二次开发,并实现了根据断面图来半自动化生成高程点,其结果大大提高了根据断面图绘制平面图的质量和速度。
关键词:AutoCAD Autolisp 自动化程序断面1引言在实际的测绘生产工作中,我们经常会遇到利用已有的断面图来绘制平面图进而复原地形的情况,想要绘制平面图高程点元素是必不可少的,那么我们就必须根据已有的断面图来生成相应的高程点。
本文介绍了如何利用Autolisp语言在AutoCAD中实现根据设计断面图半自动化生成高程点,简化了原来利用AutoCAD测距量取距离,计算桩号、偏距、高程,再用Cass交互展点画出高程点的生成办法,在提高了准确率的同时也提高了工作效率。
2 Autolisp简介Autolisp是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor(表处理程序)的缩写。
LISP语言具有语法简单,通俗易懂等特点,通过autolisp编程,可以节省工程师很多时间。
AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具[[1]]。
在工程测量领域中,AutoCAD得到了普遍应用,在日常工作中有许多人在研究使用AutoCAD,并画出了很多工程图纸。
然而,人们经常会感觉到作图效率还是不够高,这是因为AutoCAD是一个通用的绘图软件,并不具备专业特色。
AutoCAD开放的结构为不同的使用者留出了广阔的空间,提供了许多二次开发工具,AutoLISP是其中最强大的一个,Autolisp是AutoCAD自带的一门编程语言,无需安装,是为扩展和自定义AutoCAD功能而设计的编程语言,Autolisp易于使用,并且非常灵活,多年来一直是自定义AutoCAD的标准。
Autolisp嵌入AutoCAD内部,它不仅具有一般高级语言的基本结构和功能,而且还具有强大的图形处理和数据交换功能。
应用AutoLISP和DCL对AutoCAD的二次开发
应用AutoLISP和DCL对AutoCAD的二次开发苗现华,吴传山(健雄职业技术学院,江苏太仓215411)摘要:通过实例说明,应用AutoLISP和DCL,能够编写出人机交互强,功能强大的程序,对AutoCAD进行十分有效的二次开发,从而提高绘图效率,并使AutoCAD真正地起到辅助设计作用。
关键词:AutoLISP;DCL;AutoCAD;二次开发中图分类号:TP391.72 文献标识码:A1.概述AutoCAD是当今风靡世界的CAD应用软件,为了提高其绘图效率,增强其设计能力,常会用到AutoLISP及DCL对其进行二次开发[1]。
由于AutoLISP及DCL均附着于AutoCAD软件内,AutoLISP是编写绘图、编辑图形等程序的表处理语言,易学易用且功能强大;DCL是用户对话框设计语言,可设计出简洁、美观且人机交互强的用户对话框。
二者配合使用,对AutoCAD有着强大的二次开发能力。
以双头螺柱为例,说明如何应用AutoLISP和DCL对AutoCAD进行二次开发及开发效果。
2.开发流程2.1 用DCL编写用户对话框界面根据设计意图,编写用户对话框,如图1所示。
图1用户对话框界面用户点击图中单选按钮,选取绘图所需的国标及等级代号,右侧则展现对应螺柱样式的图片。
在图中下拉列表框中选取所需公称直径d和公称长度l,选取或输入所需旋转角度angle,点击“确定”按钮在AutoCAD 界面中绘出所希望的双头螺柱。
对话框文件取名为stlz.dcl,源程序如下:stlz:dialog{label=“双头螺柱”;:row{:boxed_radio_column{label="国标及等级代号";:radio_button{ label="GB/T 897-1988 A";key="k897A";}:radio_button{ label="GB/T 897-1988 B";key="k897B";}:radio_button{ label="GB/T 898-1988 A";key="k898A";}:radio_button{ label="GB/T 898-1988 B";key="k898B";}:radio_button{ label="GB/T 899-1988 A";key="k899A";}:radio_button{ label="GB/T 899-1988 B";key="k899B";}:radio_button{ label="GB/T 900-1988 A";key="k900A";}:radio_button{ label="GB/T 900-1988 B";key="k900B";}}:image{key="kimage";color=-2;width=30;aspect_ratio=1;}}:row{:popup_list{label="公称直径d";edit_width=4;key="kpopd";}:popup_list{label="公称长度l";edit_width=4;key="kpopl";}:popup_list{label="旋转角度angle";edit_width=4;key="kpopa";}:edit_box{edit_width=4;key="ke box";}}spacer_1;ok_cancel;}2.2 制作SLD文件为了实现用户对话框中的八种类型的双头螺柱的图像显示,首先在AutoCAD软件的绘图区域中分别绘制这八种类型的双头螺柱,然后在命令行中输入“mslide”命令,分别创建相应的幻灯片文件,文件分别命名为stlz1. sld~stlz8.sld。
基于AuTOlISP(defun s16()编程语言的AUTOCAD二次开发
(defun s1()(SETQ dcl_id_1(LOAD_DIALOG "C:/zhou.DCL"))(setq do_what_1 2)(while (>= do_what_1 2)(if (= null (new_dialog "s1" dcl_id_1))(progn(princ "\n未能显示对话框。
")(setq dialogshow nil)(exit));end progn);end if(S_IMG_zhou "img_1")(ACTION_TILE "dt_1""(set_tile $key $value)(act_1)(if(> dt_1 130)(done_dialog 4))") (ACTION_TILE "sll_1""(set_tile $key $value)(act_1)(if (< sll_1 sl_1)(done_dialog 2))") (ACTION_TILE "rt_1""(set_tile $key $value)")(ACTION_TILE "ct_1""(set_tile $key $value)")(ACTION_TILE "pick_1""(setq hhh 0)(done_dialog 5)")(ACTION_TILE "at_1""(set_tile $key $value)(act_1)(if (> at_1 90)(done_dialog 3))") (ACTION_TILE "sl_1" "(set_tile $key $value)(act_1)(if (< sll_1 sl_1)(done_dialog 2))") (ACTION_TILE "cancle" "(done_dialog 0)")(ACTION_TILE "accept" "(act_1)(if (/= hhh 0)(done_dialog 6)(setq hhh 1))(done_dialog 1)");(setq do_what_1 (start_dialog))(cond ((= do_what_1 1)(setq pst_1 (list xx_1 yy_1)))((= do_what_1 2)(alert "L1应小于L2\n请重新输入"))((= do_what_1 3)(alert "请输入0到90之间的数"))((= do_what_1 4)(alert "您输入的轴径太大\n请输入0到130之间的数"))((= do_what_1 5)(command "osnap" "end,int,mid")(setq ps_1(getpoint "请您点取p1点:"))(command "osnap" "off")(setq xx_1(car ps_1) yy_1(cadr ps_1)))((= do_what_1 6)(alert "请您点取p1点!")));end cond);end while(unload_dialog dcl_id_1)(if (> do_what_1 0)(draw_1))(setvar"osmode"osmode)(setvar"cmdecho"cmdecho)(setvar"blipmode"blipmode);恢复系统变量,不影响原有操作。
Autolisp在CAD二次开发中的应用 毕业论文
本科毕业论文(设计)题目:应用Auto lisp在南方CASS中批量处理图形数据学院:山西大同大学煤炭工程学院班级:07测绘一班姓名:付智华指导教师:徐广翔职称:副教授完成日期: 2011 年 6 月 15 日山西大同大学2011 届本科毕业论文(设计)选题审批表学院:煤炭工程学院系别:采矿工程系专业(专业方向):测绘工程山西大同大学2011届本科毕业论文(设计)开题报告AutoLisp ExamplesAuto lisp BasicsAuto lisp is the grand daddy of Auto CAD programming tools and you’d be amazed at the amount of Auto lisp programming tools you can find on the Internet. Given a little knowledge you can integrate existing Auto lisp routines into your own and gain tremendous power over your AutoCAD based installation.The first thing to understand is that Auto lisp has a couple of key files and a key function that perform startup operations for you。
The key files are called ACAD。
LSP and ACADDOC。
LSP and the key function is called S::STARTUP and their operations are as summarized here:ACAD。
LSP – This file loads when AutoCAD starts up. Any programming you place within this file will be automatically loaded every time AutoCAD starts。
基于Autolisp的AutoCAD采点功能二次开发
基于Autolisp的AutoCAD采点功能二次开发作者:范大宇来源:《中国新技术新产品》2015年第20期摘要:Autolisp是一种嵌套在AutoCAD内部的编程语言,它是LISP语言和AutoCAD有机结合的产物,Autolisp是针对AutoCAD二次开发而专门设计的编程语言。
在传统车加工手动编程中,首先在AutoCAD中绘制一比一图形,在使用Autolisp中自带的定位点功能,使用鼠标进行采点操作,将显示的坐标X、Y复制到程序文档中,更改坐标轴字母,这样程序中所需要的点位就采集完毕,这样的一个点接一个点的处理方法既效率低下又极易发生错误。
关键词:Autolisp;二次开发;数控车中图分类号:TP391 文献标识码:A1 引言AutoCAD软件作为基础绘图软件,已经大量应用于机械行业和建筑行业。
本文主要论述的是在机械行业中,应用Autolisp对AutoCAD进行二次开发,开发手动采点功能,进而应用在数控程序的编制中。
2 简介通过使用Autolisp对AutoCAD进行二次开发,开发出专门进行采点的程序插件,只需在AutoCAD中的一比一图形上进行鼠标连续点击,对应的点位即保存到固定路径的文件中,对应的数控程序字母,极大的提高的程序编制效率。
3 总体方案3.1 新件文件操作由于该程序将采集点位保存到固定路径的文件中,所以在程序开始部位,我们先要在该路径新件文件。
通过open命令,尝试打开D盘根目录下名字为“cnc.txt”的文件,然后关闭文件;如果该文件不存在,则在D盘根目录下新建一个名字为“cnc.txt”的文件,并且打开文件然后关闭文件。
该操作的子程序名为writef2,如下:当成功进行一次采点操作后,进行第二此采点操作时,需要先对“cnc.txt”文件进行清空操作,这样才能更好方便的进行第二此采点操作。
我们使用的仍然是open命令,挂载的”w”参数在判断出存在“cnc.txt”文件后即进行清空操作。
浅谈AutoLisp对AutoCAD的二次开发
o I T技术论坛0
S I N E&T H OL YIF R TO CE C EC N OG O MA I N N
20 0 8年
第3 1期
浅谈 A tLs 对 A t D的二次开发 uo i p uo A C
杜 伟
( 山东省胜 利油 田地 质科 . tLs A p语 言 概 述
语 言 又 称 为符 号 语 言 、 数 式语 言 。 它 的 语 言 中 , 基 本 的 数 据 函 在 最 类 型 是 符 号 表 达式 , 理 符 号 是 Auoi 处 tLs 特 性之 一 Ls 容 易 定 p的 i p很
量 可具 有 不 同 的 值 。 动态 辖 域 能 简 化程 序 编 码 工 作 , 需 为 编 写 的 每 无
件 的功 能 齐 全 , 能优 良 , 完 成 了 商 品化 和 工 程 化 的 需 求 , 此 在 国 性 并 因 内市 场 占有 很 大 的份 额 。然 而此 类 商 品 化 的 C D 软 件 一 般 都 是通 用 A
化 软 件 , 户 在 应 用时 必 须 依 据 各 自行 业 的特 点 进 行 不 同 程 度 的 二 次 保 证该 程 序所 需 函 数 的 同 时 装 入 。 并 应 在 “ 持 文 件 搜 索 路 径 ” 用 支 中指 开发 , 能 发 挥 出 应有 的效 益 。C D进 口软 件 的 二 次 开发 更 是 具 有 实 定 .S 方 A L P文 件 路径 。 际应 用 价 值 的 科研 课 题 。
【 摘
27 1) 5 0 5
要 】 A 软件 的 强大 功 能 与通 用化 设 计 , 用户 选 择 时 必 须 综合 考 虑 的 一 对 矛 盾 体 。在 此 背景 下 , A CD 是 C D软 件 的 二 次开 发 具 有很 高 的
浅谈基于AutoLISP的AutoCAD二次开发技术
浅谈基于AutoLISP的AutoCAD二次开发技术在以AutoCAD制图的工程应用中,经常需要开发一些符合工程需求的AutoCAD工具。
AutoLISP语言是一种对AutoCAD进行二次开发的灵活手段。
本文通过一个从上到下逐行写文本的简单程序,探讨了基于AutoLISP的AutoCAD二次开发程序设计的基本步骤和具体实现过程。
标签:AutoCAD AutoLISP 二次开发AutoCAD是由美国Autodesk公司开发的通用计算机辅助绘图和设计软件包,它具有易于掌握、使用方便、体系开放等特点。
已广泛应用于机械、建筑、电子、土木工程、轻工等各个领域。
目前AutoCAD最新的版本是AutoCAD2006。
一、AutoLISP及二次开发的概念AutoLISP 语言是嵌入在AutoCAD内部的LISP编程语言,它是LISP语言与AutoCAD有机结合的产物。
AutoLISP的嵌入使AutoCAD真正成为能进行计算机辅助设计、绘图的CAD软件。
在使用AutoCAD制图中,大量操作都是通过鼠标点击控件和键盘输入相应参数组合实现的。
有时在制图过程中会需要做大量重复的操作,这些操作又具有一定的规律。
那么,便可以通过AutoLISP开发出AutoCAD中可以使用的自定义控件,在点击该控件后,大量繁琐的执行过程交由后台执行,用户仅需输入一些必要的参数,即可实现制图效果。
这种方法就是所谓的“二次开发”。
显然,二次开发能够提高工作的效率和减轻工作量。
二、使用AutoLISP进行二次开发的实例及过程剖析(一)题目。
下面通过编写一个从上到下逐行写文本的小程序段来简要分析AutoLISP的开发过程。
题目要求如下:1. 用户只需点击一个自定义工具按钮,系统即会提示用户输入首行文本所在位置、相邻两行文本偏移量、文本高度这三个参数。
其中,首行文本所在位置由鼠标在屏幕上点击获得,文本高度默认值为4。
2. 用户依次输入文本,回车表示结束当行输入。
应用AutoLISP和DCL对AutoCAD的二次开发
<C53=(F?&’’(6
>45?84 @ AH IJK
MSS O"MLL
%ABP8Q @ APMSS%ABR
<C53=(F?&’’(6>45?84@AHI JK
MSSO"MLL
IABP8Q@APMSSIABR
图 $ 编 辑 图 形 等 程 序 的 表 处 理 语 言 ! 易 学 易 用 且 功 能 强 大 #-. ) 是 用 户 对 话 框 设 计语 言 ! 可 设计 出 简 洁$ 美 观 且人 机 交 互强 的 用 户对 话 框 " 二者 配 合 使 用 ! 对 %&’(. %- 有 着 强 大 的二 次 开 发 能 力" 以 双 头 螺 柱为 例 2说 明 如 何 应 用 %&’() *+, 和 -. ) 对 %&’ (.%- 进 行 二 次开 发 及 开发 效 果 " R <=G578> P8 Q@A P=G578AB ;(4(C@O!B D=3’T@USB 59V8;’FC5’=(@"B R R <C(D> <V(V&VF4=9’>45?8 4@ A公 称直 径 3AB8 3=’FD=3’T@$BP8Q@APV(V3ABR <V(V&VF4=9’>45?8 4@ A公 称长 度 4AB8 3=’FD=3’T@$BP8Q@APV(V4A BR <V(V&VF4=9’>45?8 4@A 旋 转角 度 56748AB8 3=’ FD =3’T@$BP8Q@APV(V5ABR <8 3=’ F?(E>83=’FD =3’T@$BP8 Q@AP8 ?(EABR R 9V5; 8CF"B (PF;56;8 4B 图 ! 用 户 对 话框 界 面 " /! 制 作 +)- 文 件 R 为 了 实 现用 户 对 话 框 中 的 八 种 类 型 的 双 头 螺 柱 的 图 像 显 示 2 首 先 在 %&’(. %- 软 件的 绘 图 区域 中 分 别绘 制 这 八种 类 型 的双 头 螺 柱2然 后 在 命 令 行 中 输 入AG9 4=38 A命 令 2分 别 创 建 相 应 的 幻 灯 片文 件 2 文件 分 别 命 名 为 9’4:"/ 943W9’4:L/943 " 制 作幻 灯 片 文件 前 尽 量将 每 种 类型 的 图 形 居中 且 填 满 绘 图 区 45?84@A 双头 螺 柱AB <C(D > <?(E83FC53=(F;(4&G6> 45?84@A国 标 及 等级 代 号AB <C53=(F?&’’ (6>45?84@AH IJK LMNO"MLL %ABP8Q@APLMN%ABR 域" "/ U 编写 ) *+, 程序 用 户 点 击图 中 单 选 按 钮 ! 选 取 绘 图 所需 的 国 标 及 等 级 代 号 ! 右 侧 则 展 现 对 应 螺柱 样 式 的图 片 " 在 图中 下 拉 列表 框 中 选取 所 需 公称 直 径 3 和 公 称 长 度 4 ! 选取 或 输 入 所 需旋 转 角 度 56748! 点 击 % 确 定 & 按钮 在 %&’(. %- 界 面 中 绘 出 所希 望 的 双头 螺 柱 " 对 话 框 文件 取 名 为 9’4:/3;4 !源 程 序 如下 ’ 9’4:<3=54(7>
用LISP语言自定义AutoCAD命令
用LISP语言自定义AutoCAD命令AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能、运行速度和保密性等方面比起ARX等工具要逊色一些,但由于它易学易用,交互性好,灵活性强,对于那些经常使用AutoCAD进行绘图的普通用户来说,不失为一种理想的开发工具。
下面就介绍用AutoLISP 语言自定义的几个AutoCAD绘图命令,可以起到简化操作、提高作图效率的作用。
一、键槽尺寸视图的绘制命令“jct”在绘制轴、齿轮或带轮等零件图时,经常需要画轴上键槽处的剖视图或轮毂键槽的端面视图,比较麻烦;由于键槽的尺寸随轴径的变化而变化,所以我们可以用LISP程序来实现自动绘图。
加载下面的程序,在命令行中键入”jct”并回车,通过人机交互的形式输入有关参数,可自动完成轴上键槽的剖视图和轮毂键槽的端面视图的绘制。
代码示例如下所示。
(defun C:jct ()(setq pt0 (getpoint "\n 请输入视图的中心位置点:"))(initget 7)(setq loop T)(while loop(setq d (getreal "\n请输入键槽处的轴径(12<d<130)(mm):"))(if(or (< d 12) (> d 130))(alert "轴径数据输入错误!\n\n请重新输入!")(setq loop nil));if);while(cond;根据轴径检索键槽尺寸((and (> d 12) (<= d 17)) (setq b 5 t1 3.0 t2 2.3));b表示键槽的宽度((and (> d 17) (<= d 22)) (setq b 6 t1 3.5 t2 2.8));t1表示轴上键槽的深度((and (> d 22) (<= d 30)) (setq b 8 t1 4.0 t2 3.3));t2表示轮毂上键槽的高度((and (> d 30) (<= d 38)) (setq b 10 t1 5.0 t2 3.3))((and (> d 38) (<= d 44)) (setq b 12 t1 5.0 t2 3.3))((and (> d 44) (<= d 50)) (setq b 14 t1 5.5 t2 3.8))((and (> d 50) (<= d 58)) (setq b 16 t1 6.0 t2 4.3))((and (> d 58) (<= d 65)) (setq b 18 t1 7.0 t2 4.4))((and (> d 65) (<= d 75)) (setq b 20 t1 7.5 t2 4.9))((and (> d 75) (<= d 85)) (setq b 22 t1 9.0 t2 5.4))((and (> d 85) (<= d 95)) (setq b 25 t1 9.0 t2 5.4))((and (> d 95) (<= d 110)) (setq b 28 t1 10.0 t2 6.4))((and (> d 110) (<= d 130)) (setq b 32 t1 11.0 t2 7.4)))(command "circle" pt0 "d" d)(command "zoom" "a")(setq s1 (ssget "l" ))(setq di (-(* (/ d 2.0) (/ d 2.0)) (* (/ b 2.0) (/ b 2.0)))dx (sqrt di)dy (/ b 2.0)pt1 (list (+ (car pt0) dx) (+ (cadr pt0) dy)))(initget "Zc Lc");Zc表示画轴键槽的剖视图,Lc表示画轮毂键槽的端面视图(setq zrl (getkword "\n 画轴键槽的剖视图还是轮毂键槽的端面视图(Z/L)?"))(if (= zrl "Zc")(progn;计算轴键槽上点的坐标(setq pt2 (list (+ (car pt0) (-(/ d 2.0) t1)) (+ (cadr pt0) dy))pt3 (polar pt2 (- (/ pi 2.0)) b)pt4 (polar pt3 0 (- dx (- (/ d 2.0) t1)))));progn);if(if (= zrl "Lc")(progn;计算轮毂键槽上点的坐标(setq pt2 (list (+ (car pt0) (+(/ d 2.0) t2)) (+ (cadr pt0) dy))pt3 (polar pt2 (- (/ pi 2.0)) b)pt4 (polar pt3 (- pi) (- (+ (/ d 2.0) t2) dx))));progn);if(command "pline" pt1 pt2 pt3 pt4 "");画键槽(setq s2 (ssget "l"))(command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")(command "ltscale" 8)(command "line" (polar pt0 (- pi) (+ (/ d 2.0) 10));画中心线(polar pt0 0 (+ (/ d 2.0) 10)) "")(command "line" (polar pt0(-(/ pi 2.0)) (+ (/ d 2.0) 10))(polar pt0 (/ pi 2.0) (+ (/ d 2.0) 10)) "")(command "layer" "s" 0 "")(if (= zrl "Zc")(progn(setq s3 (entsel "\n 请选择修剪的目标:"))(command "trim" s2 "" s3 "");修剪形成键槽(command "hatch" "U" "45" "2" "n" s1 s2 ""));画轴上键槽处剖视图的剖面线);if(if (= zrl "Lc")(progn(setq s4 (entsel "\n 请选择修剪的目标:"))(command "trim" s2 "" s4 "");修剪形成键槽(command "rotate" s1 s2 "" pt0 90));将轮毂键槽的端面视图旋转90度);if);end defun二、螺纹孔剖视图的绘制命令“lwk”在绘制机械零件图时,经常要画螺纹孔的剖视图,同样由于螺纹孔的有关尺寸都随螺纹的公称直径而变化,我们可以用下面的程序自动完成其剖视图的绘制。
Autolisp在CAD二次开发中的应用
Autolisp在CAD二次开发中的应用摘要:Auto LISP语言是Auto CAD中最大的一种编程工具,基于Auto LISP的编程工具,数量大的让人惊讶。
将一些小程序嵌套于AUTO LISP 内部, 使LISP 语言和AUTO CAD 有机结合,能有效地提高AutoCAD的绘图功能。
通过对Auto LISP语言的分析与研究,探讨了基于Auto LISP的AutoCAD 参数化处理数据的程序设计的基本步骤。
本文设计了如何用Auto LISP语言如何绘制典型机械零件图形,并且详细阐述了其实现过程。
实践表明,Auto LISP语言功能强大,易学易用,AutoCAD二次开发的重要工具。
关键词:Auto lisp语言; 程序设计; 二次开发随着科学技术的不断发展和社会的不断进步,计算机也越来越普遍的在各个行业中得到推广和应用。
实践证明在利用CAD绘制零件图技术在质量和速度上都产生了一个质的飞跃,使机械设计工作上了一个大台阶。
但是目前许多设计人员大多只能利用AUTO CAD软件,一笔一画地绘出所需的设计图纸,是设计人员大大部分时间都花费在繁琐的计算和绘图中,设计工作的重复性较大,工作效率较低。
如果设计人员能够对AUTO CAD进行二次开发,通过对AUTO LISP 进行编程,在CASS中加入一些用户需要的功能,从而使CASS在绘图中更具有实用化。
Auto LISP 语言是嵌入在Auto CAD内部的LISP编程语言,它是LISP语言与Auto CAD有机结合的产物。
Auto LISP的嵌入使Auto CAD真正成为能进行计算机辅助设计、绘图的软件。
VLISP是Auto LISP的换代产品。
VLISP对语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象交互。
同时,通过实现反应器函数,还扩展Auto LISP响应事件的能力。
Visual Lisp具有一个交互式和智能控制台,包括有一个项目窗口、代码分色的文本编辑器、调试器、源程序窗口及许多其他特性。
应用AutoLISP对AutoCAD进行二次开发时的研究
1 函数 的使 用
由于 A t I 语言是 函数型语言 , uL P oS 它的一切功能
都 由函数实现 。因此 , 行 A t IP程 序 主要就运 行 于 A tC D环境 下 的程 序 设计 语言 。 uo A 它 是 、uo A A t D内嵌 的 编程 工 具 , 整 体 的一 部 分 。 C 是 使用 A t IP进行 A m A uo S L u C D二 次 开发 , 要 的是掌 重
Oc.2 0 t 08
应 用 A t IP对 A tC D进 行 uo S L uo A 二 次 开发 时 的研究
郭天 娇
( 吉林工程技术师范学院 信息工程学院, 吉林 长春 10 5 ) 30 2
[ 摘 要 ] uoIP语 言是 A t A At S L uo D用 户广泛使用 的二次 开发工具 , C 本文 结合笔 者 的开发体会 , 出了 提
数等标准 函数都 比较 容易理解 , 而有时 当这些 函数 不能满足要求时 , 就要使 用 自定义函数 , 中 df 其 en u 函数就可以帮助我们将一组表达式组合 到一个 函数 或命令 中, 以实现特定的功能。例如 :
( e n c \ ml ) df :h ( u
在利用 A t I 进行二次开发的过程中, uL P oS 有四个
Se e a r b e h e o d De eo m e to t CAD t tLI P v r lP o lmsi t eS c n v lp n fAu o n wi Au o S h
G O Ta j o U i n— i a
( g r ai nier gSho, gnTahr ist eo n i e n h om t nE gnen col J i eces ntu E gn r g o i it f ei
基于AutoLISP语言CAD二次开发功能实现
基于AutoLISP语言的CAD二次开发浅析及功能实现摘要:autocad 是工程建设普遍使用的一种功能强大的绘图软件,而且可以进行用户的二次开发。
本文介绍了基于autolisp语言的cad二次开发过程,并例举了部分功能实现的代码和调用过程,以期节约时间,提高cad绘图效率。
关键词:autolisp语言,autocad二次开发,坐标点提取1.autolisp语言autolisp 语言嵌套于autocad内部,它是lisp语言与autocad 有机结合的产物,是为二次开发autocad而专门设计的编程语言。
autolisp采用了和commonlisp 最相近的语法和习惯约定,它具有commonlisp 的特性,又针对autolisp 增加了许多功能。
它可以把autolisp程序和autocad的绘图命令结合起来,使设计和绘图完全融为一体,方便了对屏幕图形的实时修改,参数化设计和交互设计,为在绘图领域应用人工智能提供了方便。
autolisp语言嵌入autocad之后,autocad就不再只是交互式的图形绘制软件,而成为了真正能够进行计算机辅助设计绘图的cad软件。
2. autolisp语言结构autolisp 数据类型丰富,包括:整型、实型、字符串、表、文件描述符、autocad 的图元名、autocad 的选择集等。
autolisp 处理的对象是符号表达式,简称表达式。
表达式相当于其他编程语言中程序的语句,是由原子或表构成的。
原子可以细分为数原子,串原子和符号原子。
多数情况下,autolisp 表达式以表的形式存在,其格式如下所示:(函数名 [参数]……)每个表达式以左括号开始,并由函数名及参数组成,左括号后的第一个元素必须是函数名。
参数的数量可以是任意多个,也可以是0个,这取决于具体函数,每个参数也可能是表达式。
表达式以右括号结束,每一个表达式的返回值都能被外层表达式使用,最后计算的值被返回到调用的表达式。
AutoCAD二次开发所用的autolisp函数
AutoCAD二次开发所用的autolisp函数。
一、数学运算功能函数1.l(十数值数值…)返回:累计实数或整数数值1.2(一数值数值…)返回:差值1.3(*数值数值…)返回:所有数值乘积1.4(/数值数值…)返回:第一个数值除以第二个以后数值的商1.5(l十数值)返回:数值十ll. 6(1—数值)返回:数值一ll.7(abs 数值)返回:数值的绝对值1.8(atan数值)返回:反正切值1.9(cos角度)返回:角度的余弦值,角度值为弧度1.10(exp数值)返回:数值的指数1.11(expt底数指数)返回:底数的指数值1.12(fix 数值)返回:将数值转换为整数值1.14(gcd数值1 数值2)返回:两数值的最大公因数1.15(log 数值)返回:数值的自然对数值1.16(max数值数值…)返回:数值中的最大值1.17(min数值数值…)返回:数值中的最小值1.18 pi 常数∏,其值约为3.14159261.19(rem 数值1数值2)返回:M数值的相除的余数l.20(sin 角度)返回:角度的正旋值,角度值为弧度1.21(sqrt数值)返回:数值的平方根二、检验与逻辑运算功能函数2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式22.3(<表达式1 表达式2) 比较表达式1是否<小于表达式22.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式22.5(>表达式1 表达式2) 比较表达式1是否>大于表达式22.6(>= 表达式1 表达式2) 比较表达式1是否大于等于表达式22.7 (~数值)返回:数值的位not值,(1的补码)2.8 (and 表达式1 表达式2…)返回:逻辑and的结果2.9(boole函数整数整数…)返回:位式布尔运算2.10(eq表达式1 表达式2)比较表达式1与表达式2是否相同,适用列表比较(实际相同)2.11(equal 表达式1表达式2[差量])比较表达式1与表达式2是否相同,差量可省略(内容相同)三、转换运算功能函数3.l(angtof字符串[模式])返回:角度值的字符串转成实数3.2(angtos角度[模式[精度]])返回:角度转成的字符串值3.3(atof字符串)返回:字符串转成实数值3.4 (atoi字符串)返回:字符串转成整数值3.5 (cvunit数值原始单位转换单位)返回:数值转换单位后的值转换根据acad.nut文件3.6(distof字符串[模式])返回:根据模式将字符串转成实数值3.7(itoa整数)返回:整数转成字符串3.8(rtos数值模式[精度])返回:实数转成字符串3.9 (trans 点原位置新位置[位移]) 返回:转换坐标系统值四、列表处理功能函数4.1 (append列表列表……) 结合所有列表成一个列表4.2(assoc关键元素联合列表)根据关键元素找寻联合列表中关系信息4.3 (car 列表)返回列表中的第一个元素,通常用来求X坐标4.4(cadr列表)返回列表中的第二个元素,通常用来求y坐标4.5(caddr列表)返回列表中的第三个元素,通常用来求Z坐标4.6(cdr列表)返回:除去第一个元素后的列表4.7(cons 新元素列表)返回:将新元素添加到列表4.8(foreach名称列表表达式)返回:将列表的每一元素对应至名称再根据表达式执行响应4.9(length 列表)返回:列表内的元素数量4.10(list元素元素…)返回:将所有元素合并为一列表4.11(listp元素)返回:判断元素是否为一串4.12(mapcar函数列表1列表2…)返回:将列表1、列表2列表的元素配合函数,求得新列表4.13(member 关键元素列表)返回:根据关键元素(含似后的列表4.14(nth n 列表)返回:列表的第n个元素4.15(reverse 列表)返回:将列表元素根据顺序颠倒过来的列表4.16(subst新项旧项列表)返回:替换新旧列表后的列表五、字符串、字符、文件处理函数5.l(ascii字符串)返回:字符串第一个字符的“ASCII”码5.2 (chr整数)返回:整数所对应的ASCII单一字符串5.3(close 文件名称)关闭文件5.4(open 文件名模式)返回:打开文件代码,准备读取或写入信息5.5(read 字符串)返回:列表中的字符串的第一组元素5.6(read-char[文件代码])返回:通过键盘或文件中读取单一字符5.7(read-line [文件代码])返回:经由键盘或文件中读取一行字符串5.8(strcase字符串[字样])返回:转换字符串大小写5.9(strcat字符串1字符串2…)返回:将各字符串合并为一个字符串5.10(strlen字符串)返回:字符串构成的字符数(即字符串长度)5.11(substr字符串起始长度)返回:取出于字符串…5.12(wcmatch字符串格式)返回:T或nil,将字符串与通用字符进行比较5.13(write-char数值[文件代码])返回:将一ASCII字符写到文件或屏幕15.14(write-line字符串[文件代码])返回:将字符串写到文件或屏幕上六、等待输入功能函数6.l (getangle [基点] [提示])请求输入十进制角度数值,响应一个弧度值提示及参考点可有可无6.2(getcorner基点[提示])请求输入另一矩形框对角点坐标6.3(getdist [基点][提示])请求输入一段距离6.4(getint [提示])请求输入一个整数值6.5(getkword [提示]请求输入“关键词”6.6(getorient [基点][提示])请求输入十进制角度,响应一弧度值不受angbase、angdir影响6.7(getPoint [基点][提示])请求输入一个点的坐标6.8(getreal [提示]请求输入一个实数6.9(getstring [提示])请求输入一个字符串6.10(initget [位]字符串)设定下次getxxx函数的有效输入七、几何运算功能函数7.l(angle 点1 点2)取得两点的角度弧度值7.2(distance 点1 点2)取得两点的距离7.3(inters 点1 点2 点3 点4[模式])取得两条线的交点7.4(osnap点模式字符串)按照捕捉模式取得另一坐标点7.5(polar 基点弧度距离)按照极坐标法取得另一坐标点7.6(textbox 对象列表)取得文字字符串的两个对角点坐标八、对象处理功能函数8.l(entdel对象名称)删除或取消删除对象8.2(entget对象名称[应用程序列表])取出对象名称的信息列表8.3 (entlast) 取出图形信息中的最后一个对象8.4(entmake对象列表)建立一个新的对象列表8.5(entmod对象列表)根据更新的信息列表更新屏幕上元体8.6(entnext [对象名称])找寻图面中的下一个对象8.7(entsel [提示])请求选取一个对象,响应包含对象名称及选点坐标的列表;8.8(entupd对象名称)更新屏幕上复元体图形8.9(handent图码)返回:图码的元体名称8.10(nentsel[提示])返回:BLOCK所含副元体对象信息列表8.11(nentselp [提示][点])返回:BLOCK所含副元体对象信息似4*4矩形表示)九、选择集、符号表处理函数9.l(ssadd [对象名称][选择集])将对象加入选择集或建立一新选择集9.2(ssdel对象名称选择集)将对象自选择集中移出9.3(ssget [模式][点1][点2]取得一个选择集9.4(ssget”X” [过滤列表])取得根据过滤列表所指定范围的选择集9.5(sslenth选择集)计算选择集的对象个数9.6(ssmemb对象名称选择集)响应对象名称是否包含于选择集内9.7(ssname选择集索引值)根据索引值取出选择集中的对象名称9.8(tblnext符号表名称[T])检视符号表,有效的符号表:”LAYER”、”LTYPE”、”VIEW”、”STYLE”、”BLOCK”9.9(tblsearch符号表名称符号)在符号表中搜寻符号十、AutoCAD相关查询、控制功能函数10.l(command ”AutoCAD命令”…)超重量级函数,调用执行AutoCAD命令10.2(findfile文件名)返回:该文件名的路径及文件名10.3(getfiled标题内定档名扩展名旗号)通过标准AutoCAD文件对话DCL对话框获得文件10.4(getenv”环境变量”)取得该环境变量的设定值,以字符串表示10.5(getvar”系统变量”)取得该系统变量的设定值,以字符串表示10.6(setvar”系统变量”值)设定该系统变量的值10.7(regapp应用类项)将目前的AutoCAD图形登记为一个应用程序名称十一、判断式、循环相关功能函数11.1(If <比较式><表达式1> [表达式2] 检算比较式结果,如果为真,执行<表达式1>,否则执行<表达式2>11.2( repeat 次数[<表达式><表达式>…])重复执行N次表达式11.3(While <比较式><表达式>…) 当条件成立则执行表达式内容11.4(cond<比较式1><表达式1>多条件式的if整合功能<比较式2><表达式2><比较式3><表达式3>)11.5 ( prong 表达式1 表达式2…) 连接其中的表达式为一组,常用于配合if、cond 等函数十二、函数处理、定义、追踪与错误处理功能函数12.l(*error* 字符串)程序错误时的警示信息12.2(alert 字符串)以对话框式显示出警告字符串12.3(apply 功能函数列表)将功能函数与列表结合后执行12.4(defun名称自变量列表表达式_.)自定函数或子程序12.5(eval表达式)返回:表达式的执行结果12.6(exit)强制退出目前的应用程序12.7(lambda 自变量表达式)定义未命名的函数12.8(progn表达式1 表达式2…)连接其内的表达式为一组,常用于配合if、cond等函数12.9(quit)强制退出目前的应用程序12.10(tablet 代码[列1列2列3方向])取用或建立对数字板的校调12.11(trace 函数…)对函数设定追踪标记,辅助检错12.12(untrace函数…)对函数设定解除追踪标记十三、显示、打印控制功能函数13.l(gfaphscr)作图环境切换到图形画面13.2(grclear)暂时清除模前的屏幕画面13.3(grdraw起点终点颜色[亮显])暂时性的画出一条线13.4(grread[追踪])由输入设备读取追踪值13.5(grtext位置字符串[亮显])将字符串显示在状态列或屏幕菜单上13.6(grvecs向量列表[转置矩阵])暂时性的画出多条线13.7(menucmd字符串);提供在AlltOLISP中调用各菜单13.8(Prinl[表达式[文件代码]]将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开13.9(pinc[表达式[文件代码]]除句柄字符则不以”\”为前缀展外开其余同Prinl13.10(print[表达式[文件代码]]除表达式会往下一新行列出,及空一格外其余同prinl13.11(prompt信息)将信息显示于屏幕的命令区,并随后响应一个nil信息13.12(redraw[对象名称[模式]])重绘整张图或根据对象名称重绘该图形13.13(terpri) 在屏幕上显示新列13.14(textscr) 作图环境切换到文字画面13.15(textpage)清除文字画面文字类似DOS的cls命令13.16(vports)返回:窗口组态列表十四、符号、元素、表达式处理功能函数14.l(atom元素)如果元素不是列表,响应T,否则为nil14.2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表14.3(boundp表达式)返回:T或nil,响应表达式是否有值存在14.4(minusp元素)返回:T或n儿元素是否为负值14.5(not元素)返回:T或n儿判定元素是否为ni114.6(null元素)返回:T或nil判定元素是否被赋予nil值14.7(numberp元素)返回:T或nil,元素是否为整数或实数14.8(quote表达式)响应表达式未检算前状态,同“…”功能14.9(set符号表达式)将表达式结果设定给带单引号‟符号14.10(setq符号1 表达式1[符号2表达式2]…)设定表达式结果给各符号14.11(type元素)返回:元素的信息型态14.12(zerop元素)返回:T或nil,元素是否为0值十五、ADS、ARX、AutoLISP加载与卸载函数15.l(ads)返回:目前加载ADS程序列表15.2(arx)返回:目前加载ARX程序列表15.3(arxload应用程序[出错处理]))返回:加载ARX程序15.4(arxunload应用程序[出错处理]))返回:卸载ARX程序15.5(ver) 返回:目前AutoLISP版本字符串15.6(load LSP文件名[加载失败])加载AutoLISP文件(*.lsp)15.7 (xload应用程序[错处理])加载ADS应用程序15.8 (xunloa应用程序[出错处理])卸载ADS应用程序十六、内存空间管理函数16.l(alloc数值)以节点数值设定区段大小16.2(expand数值)以区段数值配置节点空间16.3(gc)强制收回废内存16.4(mem)显示目前的内存使用状态16.5(xdroom对象名称)返回对象扩展信息允许使用的内存空间16.6(xdsize列表)返回对象扩展信息所占用的内存空间十七、其它重要的功能函数17.l(acad_colordlg颜色码旗号)显示出标准AutoCAD颜色选择对话框17.2(acad_helpdlg求助文件名主题)显示出标准AutoCAD求助对话框17.3(acad_strlsort字符串列表)作字符串列表排序17.4(bherrs) 取得bhatch与bpcly失败所产生的错误信息17.5(bhatch点[选择集[向量]])根据Pick point选点方式调用bhatch命令,绘制选集区域的剖面线17.6(bpoly点[选择集[向量]])根据Pick point选点方式调用bpoly命令并产生一定域Pol yline17.7(cal计算式字符串)执行如CAL计算功能十八、ADS、ARX外部定义的3D函数18.1(align自变量1 自变量2....)执行如ALIGN命令各选项顺序18.2(c:3dsin模式3DS文件名)导入3DS文件18.3(C:3dsout模式3DS文件名)输出3DS文件18.4(c:background模式[选项])设定渲染背景18.5(C:fog模式[选项])设定渲染的雾效果18.6(C:light模式[选项])设定渲染的灯光控制18.7(c:lsedit模式【选项1】设定渲染的景物控制18.8(C:lslib模式[选项])管理景物图库18.9(c:matilb模式材质材质库名)管理材质数据库18.10(c:mirror3d 自变量1 自变量2……)执行如MIRROR3D命令18.11(C:psdrap模式)根据模式设定值(0或1),传唤psdrap命令18.12(C:psfill对象名称图案名称[自变量1[自变量2]])以POStSCript图案填满18.13(c:psin文件名位置比例)插入一个Postscript(*.eps)文件18.14(c:render[渲染文件])执行渲染效果18.15(C:rfileopt格式自变量1 自变量2 自变量3…)设定执行渲染选项18.16(c:replay影像文件名影像类别[选项])展示影像文件TGA、BMP、TIF 18.17(C:rmat模式选项)控管材质建立、贴附、编辑、分离18.18(c:rotate3d自变量1 自变量2…)执行如ROTATE3D命令各选项顺序18.19(C:rpref模式选项[设定])渲染环境设定18.20(c:saveimg影像文件名影像类别[选项])储存图像文件TGA、BMP、TIF 18.21 (c:scene模式[选项]) SCENE场景管理18.22(C:setuv模式选集自变量1 自变量2…)SETUV贴图模式管理18.23(C:showmat自变量1)显示对象的材质贴附信息18.24(C:solprof自变量1 自变量工..)建立3D实体的轮廓影像18.25(C:StatS[渲染信息文件])显示渲染信息统计信息十九、ADS、ARX外部定义的数据库相关函数19.l(c:aseadmin自变量1 自变量2…)管理外部数据库19.2(c:aseexportt自变量1 自变量2…)输出信息19.3 (c:aselinks自变量1 自变量2…)连接对象与信息19.4(c:aserow自变量1 自变量2…)管理外部信息表格19.5(c:aseselect自变量1 自变量2…)建立外部信息与对象选集19.6 (c:asesqled自变量1 自变量2…) 执行SQL程序。
autocad二次开发
AutoCAD二次开发简介AutoCAD是一款功能强大的计算机辅助设计(CAD)软件,广泛应用于建筑、机械、电气等行业。
除了AutoCAD本身提供的功能外,用户还可以通过二次开发来扩展和定制AutoCAD的功能,以满足特定的需求。
AutoCAD二次开发的优势AutoCAD二次开发的优势在于可以根据用户的具体需求进行定制化开发,如自动化绘图、数据分析、工作流程优化等,提高工作效率和准确性。
与使用传统方法进行手动操作相比,二次开发可以大大简化工作流程,减少重复性劳动,节省了时间和人力资源。
AutoCAD二次开发的方法AutoCAD二次开发的主要方法包括使用AutoLISP、Visual Basic for Applications(VBA)、.NET等编程语言进行开发。
AutoLISPAutoLISP是AutoCAD内建的一种简单的解释性编程语言,用户可以通过AutoLISP开发自定义命令、函数和程序。
使用AutoLISP可以实现自动绘图、自动标注、数据提取等功能。
开发过程相对简单,但扩展性和性能有限。
VBAVBA是一种基于Microsoft Visual Basic的编程语言,用户可以通过VBA进行二次开发,进行更复杂的任务,如自动化CAD操作、数据处理等。
VBA具有良好的可扩展性和性能,并且易于学习和使用。
.NET使用.NET开发AutoCAD插件是一种相对较新和强大的二次开发方法,可以使用多种编程语言,如C#、等。
通过.NET开发,用户可以实现更高级的功能和交互,如集成数据库、Web服务等。
.NET开发需要一定的编程基础,但其灵活性和功能强大,使得更多复杂的任务可以得以实现。
AutoCAD二次开发的应用实例AutoCAD二次开发在各个领域都得到了广泛应用,以下是一些常见的应用实例:1.自动化绘图:通过二次开发,可以实现自动生成平面图、剖面图、立面图等,提高绘图效率和准确性。
2.数据提取与分析:通过二次开发,可以从大量的图纸中提取所需的数据和信息,并进行进一步的分析和统计。
浅谈AutoLisp对AutoCAD的二次开发
法之一。 但必须注意如下几点:
(1)若已存在 ACAD.LSP 须改为其它名字,否则无法编辑此文件。
(2)保证 ACAD.LSP 在 Auto CAD 目录下。
随着 ACAD.LSP 中收集的 AutoLisp 函数越多, 其装入时间越长。
为 减 少 AutoCAD 的 启 动 时 间 , 可 以 不 把 程 序 的 编 码 放 在 ACAD.LSP
某些工作。 但是一旦退出了图形程序,AutoCAD 就会恢复它本来的系
统设置而把 AutoLisp 程序删除。 因此,通常我们应该把它们输入到一
个文本文件中,在需要时再调入并执行。
AutoLisp 程 序 要 输 入 到 具 有 固 定 扩 展 名 为.LSP 的 磁 盘 程 序 文 件
中 。 AutoLisp 程 序 文 件 可 以 驻 留 在 任 何 驱 动 器 的 任 何 目 录 下 。 进 入
保证该程序所需函数的同时装入。 并应在“支持文件搜索路径”中指
定.LSP 文件路径。
(4)每个函数尽量 保 证 是 独 立 存 在 的 ,可 以 为 其 他 程 序 调 用 ,从 而
减少总的编码量;另外、这样做还可以为其它函数构造模块。
(5)使 用 动 态 辖 域 从 调 用 函 数 得 到 变 量 值 ,一 个 函 数 从 调 用 函 数 直
下输入程序函数名 〔也可以用下列语句:(Command"PRONAME")〕,即
可启动它。 PRONAME 装入器装入实际的 Proname 程序,PRONAME 一
旦装入反过来又取代了 PRONAME 装入器,还可以为像一个常用的自
定义函数编写一个装入器,这样做的优点是:
(1) 占 用 的 空 间 要 少 得 多 。
用AutoLISP二次开发AutoCAD
用AutoLISP二次开发AutoCAD
陈羽中
【期刊名称】《电脑知识与技术》
【年(卷),期】2005(000)012
【摘要】利用AutoLISp的二次开发功能,开发适合本专业的绘图工具,以提高绘图效率.
【总页数】3页(P156-157,173)
【作者】陈羽中
【作者单位】攀钢集团设计研究院有限公司,四川,攀枝花,617063
【正文语种】中文
【中图分类】TP391
【相关文献】
1.AutoLISP/VLISP在AutoCAD二次开发中的应用 [J], 赵俊龙
2.基于AutoLISP的AutoCAD与Excel数据交换的二次开发程序设计 [J], 马晓明;权洁;陈骋
3.基于AutoLISP的AutoCAD二次开发研究 [J], 崔联合;于华艳;刘江;万文龙
4.Autolisp语言二次开发AutoCAD与市政道路常用图的快速绘制的研究 [J], 高会刚
5.基于AutoLISP的AutoCAD二次开发技术及其应用研究 [J], 余志伟
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
";
:row{ :edit_box{ label="密度ρ key="rho"; fixed_width=true; width=5; }
";
:text{ label="kg/m3"; } }
} } :row{ :column{ :row{ :edit_box{ label="热容 c key="c"; fixed_width=true; width=5; alignment=centered; } :text{ label="J/(kg·K)"; } } :row{ :edit_box{ label="合金液相线温度 T_L"; key="T_L"; fixed_width=true; width=5; alignment=centered; } :text{ label="K"; } }
图3
加载用户自定义的菜单文件
(5)绘制对话框――DCL 语言 第一步:打开 Visual LISP 编辑器 操作同图 2。 第二步:创建用户自定义对话框文件 打开 Visual LISP 编辑器后,在文本框中输入生成用户自定义对话框的代码,写好后将文件保存,扩展 名为.dcl。例如: solidification_coefficient:dialog { label="计算凝固系数 K"; :text{ label="说明:根据合金的热物理特性计算凝固系数 K"; } :boxed_row{
:edit_box{ label="即 mm/s(1/2)"; key="K"; fixed_width=true; width=5; alignment=left; } } :row{
:button{ label="计算"; key="begin"; fixed_width=true; width=5; } ok_only; } } } 重要的一步:工具菜单选项文件支持文件搜索路径(要包含上述所建各类文件的路径) (6)编译及维护 AutoLISP 程序,形成独立应用程序 在 Visual LISP 中,用户可以编译自己的程序,并创建一个单独的可供其他用户使用的可执行模块。 Visual LISP 可将 AutoLISP 程序文件编译成可执行的程序模块以提高程序运行效率和源代码的安全性。 Visual LISP 提供了一套编译器来解决这些问题。通过这个编译器,用户可以将源代码编译成可执行机器码 文件,即 FAS 文件。源代码在编译后,可以直接在 Auto CAD 中加载运行,运行效率提高了,而且程序源 代码是保密的,甚至于源代码中的字符串与符号也会被 Visual LISP 的编译器加密。 此外,Visual LISP 还可以将更复杂的 AutoLISP 应用封装进 Visual LISP 可执行文件(VLX)中。VLX 文件中还可以包括其他的资源文件,例如 VBA 和 DCL 文件以及编译过的 AutoLISP 文件。
label="输入合金的热物性参数和凝固温度"; :row{ :column{ :row{ :edit_box{ label="导热率λ key="lambda"; fixed_width=true; width=5; } :text{ label="W/(m·K)"; } } :row{ :edit_box{ label="结晶潜热 L"; key="L"; fixed_width=true; width=5; } :text{ label="J/kg"; } }
(4)添加用户自定义菜单 当我们开发出的程序越来越多的时候,用工具按钮的形式来执行它们会占用绘图的空间,而且也不便 于管理。这种情况下就有必要将众多的程序分类,相同种类的程序写入同一个菜单文件中,便于将来查找 和执行。具体的开发步骤为: 第一步:打开 Visual LISP 编辑器
图 2 打开 Visual LISP 编辑器 第二步:创建用户自定义的菜单文件 打开 Visual LISP 编辑器后,在文本框中输入生成用户自定义菜单的代码,写好后将文件保存,扩展名 为.mnu。例如: ***MENUGROUP=MYLISP ;;用户自定义菜单组名 MYLISP ***pop1 ;;第一个菜单 [中间包] ;;第一个菜单名称 [ 初 等 函 数 曲 线 绘 制 ] ^C^C^P(load "curve of function")(load "csin")(load "cparabola")(curve_of_function) ;;命令的名称、加载操作和执行操作 [->复合函数曲线绘制] ;;子菜单名称,->表示生成的是子菜单 [抛物线与正弦曲线的叠加] ^C^C^P(load "cpara_sine") (cparasine) [抛物线与余弦曲线的叠加] ^C^C^P(load "cpara_cos") (cparacos) [--] ;;各命令之间的横线 [<-圆环面积与内径的关系曲线(&C)] ^C^C^P(load "cirque") (cirque) ;;<-表示子菜单结束 [挡板内外面积比的计算] ^C^C^P(load "stotal")(load "sdio")(stotal) ***pop2 ;;第二个菜单 "ccos")(load
用 AutoLISP 对 AutoCAD 进行二次开发
一、什么是 CAD 的二次开发?(为什么需要对 CAD 进行二次开发) 我们在设计、绘图时采用 AutoCAD、ProE、Solidwork、UG 等设计软件,在复杂问题或特殊用途的设 计中,各种软件的原有功能往往难以解决问题,例如 CAD 里没有直接绘制正弦曲线和抛物线等曲线的命 令。因此,只是会使用各软件的基本功能是不够的,根据我们的特殊用途进行软件的用户化定制和二次开 发,往往能够大大提高工作效率和技术水平。 二、什么是 AutoLisp ?如何用其进行二次开发? AutoLISP 是由 Autodesk 公司开发的一种 LISP 程序语言, LISP 是 List Processor 的缩写。 通过 autolisp 编程,可以节省工程师很多时间。AutoLISP 语言作为嵌入在 AutoCAD 内部的具有智能特点的编程语言, 是开发应用 AutoCAD 不可缺少的工具。 当前 AutoCAD 的二次开发工具主要有: VisualLisp (它是 AutoLisp 的集成开发环境) 、 VBA 、 ObjectARX 和 .NET API 等,这里只介绍 AutoLisp 。 下面由浅入深地介绍一下如何应用 AutolLisp 进行二次开发。 最简单的应用是在命令行中编写和执行 lisp 语句,进行简单的计算、绘图、查询等操作。 稍复杂些的就要把语句(代码)放到扩展名为 lsp 的文件中,用的时候先加载到 CAD 中,然后输入自 定义的函数名执行。 当开发的程序越来越多,就需要进行有效的管理,使我们能方便的找到和应用这些程序。到那个程度 的时候就需要用到用户自定义的工具按钮、菜单和对话框了。图1Biblioteka 根据程序数量选择二次开发形式
(1)在命令行中编写和执行程序 例 1: (+ 2 3) 例 2: (setq a 2) (setq b 3) (+ a b) 例 3: (setq a 2)(setq b 3)(+ a b) 例 4:(setq p1 (list 0 0))(setq p2 (list 200 200))(command “line” p1 p2 “”) ;;语句之间不空格 例 5:(setq p1 (list 0 0)) (setq p2 (list 200 200)) (command “line” p1 p2 “”) ;;语句之间空格 ;; 表示语句(程序代码)的注释 (2)用 lisp 文件编写和执行程序
第一步:在文本中编写和保存 AutoLISP 程序,文件扩展名为.lsp (defun c:sin(/ lp lpx lpy N x step) ;; c:和自定义函数名 sin 之间不能有空格 (initget 1) (setq lp (getpoint "\n Left point:") lpx (car lp) lpy (cadr lp)) (initget 7) (setq N (getint "\Nnumber of cyles:")) (setq x 0 step 0.02) (command "pline" ) (While (< x (* 2 N pi)) (command (list (+ (car lp) x) (+ (cadr lp)(sin x))) ) (setq x (+ x step)) ) (command "line" lp (list (+ lpx (* 2 N pi)) lpy) "") (command "line" lp (list lpx (+ lpy 2))(list lpx (- lpy 2)) "") ;;注意这里用的是空的双引号“” ,中 间不空格 (command) ) 第二步:AutoLISP 程序的加载和运行 在命令行中输入 appload(或 ap) ,在弹出的“加载/卸载应用程序”对话框中选择第一步保存的*.lsp 文件。单击“加载” “关闭” 。 执行自定义函数前先将“对象捕捉”功能关闭。运行自定义函数的过程和执行 CAD 标准函数(命令) 是一样的,只要在命令行中输入函数名即可。 (3)添加用户工具按钮 工具按钮能够快速、高效启动 AutoLisp 的应用程序。为了更方便的管理和应用我们的 lisp 应用程序。 我们要学会创建用户自定义工具栏,并向新工具栏中添加新的工具按钮,点击这些按钮便可以很方便地执 行我们自己定义的应用程序。 第一步:创建新工具栏 将鼠标移动到任意一个工具按钮上,单击鼠标右键。 在弹出的菜单最下端找到“自定义(C)...”对话框,左键单击。弹出“自定义用户界面”对话框。右键 单击工具栏图标新建一个用户自定义工具栏,命名这个新工具栏。 第二步:向新工具栏添加按钮 在“自定义用户界面”对话框的左下角的命令列表栏中单击“新建”按钮建立一个新命令。按住左键 不放,将新的命令按钮拖到第一步新建的工具栏内。这样工具栏里便添加了第一个命令,用此方法可以给 工具栏添加多个新按钮。 第三步:定制工具按钮属性 新的工具按钮刚添加到工具栏内的时候是不能执行命令的,需要给它添加属性。 在“自定义用户界面”对话框的右侧可以编辑按钮的图像和属性。其中最重要的是“特性”里的“宏” 一栏。 将上面 pwx.lsp 文件的路径和命令名输入到 “宏” 后面的文本框内, 例如: ^C^C^P(load"/F:/Autolisp Program/My Lisp/sin.lsp");sin;^P 单击确定退出“自定义用户界面”对话框。这时在 CAD 的工具栏中会多出一个用户刚才自定义的新 按钮。单击它便可以执行相应的程序。