autolisp实用编程四例
更新时间:2023-11-15 03:32:01 阅读量: 教育文库 文档下载
- autolisp推荐度:
- 相关推荐
autolisp实用编程四例
江苏 崔华明
autocad是一个功能强大的通用图形设计软件,其内嵌的autolisp语言为用户进行二次开发提供了方便。下面就介绍几则用autolisp编写的实用程序,这些程序相当于新增的autocad命令,可以弥补autocad本身的一些不足,为日常使用带来方便。
1.快速更改文本的大小
在标准的autocad中,要更改已有文本的大小,需要使用change命令。该命令的缺陷是:即使只更改文本的大小,也要重新确认文本的插入点、字型、倾斜角等一系列参数。也就是说,除输入文本的新高度值外,还需要按5次回车键才能完成一个文本的更改!而且每次只能修改一个文本。这对于同时更改多个文本的大小非常不便。本文的autolisp程序使这一工作变得十分方便和快捷。使用方法如下:
在autocad的command提示下,打入命令: cth
autocad将提示“selectobjects:”,这时可以使用autocad允许的任意方式选择目标。对于有多个文本需要更改的情况,使用窗口选择比较方便,而且你不用担心选择窗口中包含了非文本目标,程序能够自动在选择的目标中查找出文本实体,并只对文本进行更改。
选择目标后,autocad提示“newtextheight:”,这时输入一个新的文本高度值然后回车,则所有选中的文本被更改成新设定的高度。
2.延伸直线的长度
在实际使用中,常常要将一条直线延伸指定的长度。通常的做法是:在需要延伸的直线的端点画一个辅助圆,圆的半径等于直线要延伸的长度,然后使用extend命令将直线延伸到与圆相交,最后删除辅助圆。
本文的autolisp程序将使你非常容易地实现这一点。你只需选择要延伸的直线并输入要延伸的长度即可,其余的工作由程序自动完成。使用方法如下:
在autocad的command提示下,打入命令: stl
然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。该程序将自动在离选择点较近的直线端点,按指定的长度延伸直线。
3.快速画直线
在画给定坐标点的直线时,需要通过键盘输入坐标值。这样的情况下当然是利用右边的数字键盘输入
较为方便。但若直接使用autocad的line命令画直线,在x和y两个坐标值之间需要输入一个逗号“,”作为分隔,而数字键盘区又没有该逗号,所以仍然不方便。
本文的autolisp画直线程序只要求用户输入坐标值,而由程序自动调用line命令画出直线,因此用户不用离开数字键盘区就能完成工作。使用方法如下:
在autocad的command提示下,打入命令: xlin
然后根据提示依次输入x和y坐标。若要结束画线,在程序提示输入x坐标时直接打回车即可。
4.围绕圆弧写一段文本
有时为了美观的需要,希望能够围绕一段圆弧来写文本文字,本文的程序提供了这一功能。使用方法如下(粗体字表示autocad的提示,尖括号“ΙΛ"中的部分是需要用户输入的内容):
command:atxt
startpointoftext:Ι指定文本的起点Λ
textheight:Ι指定文本的高度值Λ
selectarc:Ι选择圆弧Λ
text:Ι输入文本Λ
输入以上相关内容后,程序自动围绕指定的圆弧写文本。如果当前的文本字型有固定高度,则程序不提示“textheight:”。
本文给出的程序只适合写英文文本,由于汉字是双字节,所以若要写汉字,需要对程序作一些修改。需要修改的地方为程序中第二个if函数,用下面的代码替换原来的if函数:
(if(Κtsize0)
(command″text″″c″ptsiztr(substrtxtcnt2))
(command″text″″c″pttr(substrtxtcnt2)) )
紧接该函数,在其后再增加一行代码:
(setqcnt(+cnt1))
修改后的程序支持中文文本(不支持中、英文混合书写)。
5.程序使用说明
以上每个功能的autolisp程序既可以以独立的文本文件形式存放,也可以合并在一个文本文件中。若以acad.lsp作为程序文件名,并将文件放在autocad支持文件所在的路径中,则在启动autocad时系统会自动加载该文件。否则需要通过系统菜单或load函数加载autolisp程序文件,然后才能使用。load函数的调用格式是:在autocad的command:命令提示状态下,打入:
(loadΙautolisp文件名Λ)
在Ιautolisp文件名Λ中可以包含dos路径,但需要注意的是:在autolisp中,反斜杠“ι”有特殊的定义,因此要使用正斜杠或连续两个反斜杠来表示dos路径中的反斜杠。如:
(load″acadιιcad1.lsp″)
扩展名lsp可以省略。
6.autolisp程序
以上四个功能的autolisp程序如下,该程序已在acadr13forwindows、中文windows95环境下调试通过。它适用于autocad10.0以上的dos和windows版本。
;更改文本高度程序
(defunc:cth(/sstxsizenindexenttypeoldsizenewsizeent1)
(setqss(ssget))
(setqtxsize(getdist″ιnnewtextheight:″))
(setqn(sslengthss))
(setqindex0)
(repeatn
(setqent(entget(ssnamessindex)))
(setqindex(+1index))
(setqtype(assoc0ent))
;检查选择的实体是否为文本
(if(Κ″text″(cdrtype))(progn
(setqoldsize(assoc40ent))
(setqnewsize(cons(caroldsize)txsize))
(setqent1(substnewsizeoldsizeent))
(entmodent1)) ) )
(princ) )
;延伸直线的长度程序
(defunc:stl(/eentpt1pt2madis)
(setqe(entsel″ιnselectline:″))
;取得选中实体的数据
(setqent(entget(care)))
(setqpt1(cdr(assoc10ent))pt2(cdr(assoc11ent)))
;找出离选择点最近的直线的端点
(if(ΙΚ(distance(cadre)pt1)(distance(cadre)pt2))
(setqptpt1m10a(anglept2pt1))
(setqptpt2m11a(anglept1pt2)) )
(setqdis(getdistpt″ιnstretchlength:″))
(setqpt(polarptadis))
(setqe(subst(consmpt)(assocment)ent))
(entmode)
(princ) )
;快速画直线程序
(defunc:xlin(/xy)
(setvar″cmdecho″0)
(command″line″)
(setqxt)
(while(/Κxnil)
(setqx(getreal″ιnenterx:″))
(if(/Κxnil)(progn
(setqy(getreal″entery:″))
(command(listxy))) ) )
(commandλ)
(princ) )
;围绕圆弧写文本程序
(defunc:atxt(/ospt1styetsizesizarctxtrlendiahfintangcntssnangpttr)
(setqos(getvar″osmode″))
(setqpt1(getpoint″ιnstartpointoftext:″))
(setqsty(getvar″textstyle″))
(setqe(tblsearch″style″sty))
(setqtsize(cdr(assoc40e)))
(setqsiztsize)
;检查当前的文本字型是否为固定高度
(if(Κtsize0)
(setqsiz(getdistpt1″ιntextheight:″)) )
(setvar″osmode″4)
(setqarc(getpoint″ιnselectarc:″))
(setvar″osmode″os)
(setqtxt(getstring1″ιntext:″))
(setqr(distancearcpt1))
(setqlen(strlentxt))
(setqdia(*(/(*sizlen)(*2.0pir))360.0))
(setqhf(/(*diapi)180.0))
(setqint(/hflen))
(setqang(anglearcpt1))
(setqcnt0)
(setqss(ssadd))
(while(Ιcntlen)
(setqnang
正在阅读:
autolisp实用编程四例11-15
The simplescalar tool set, version 2.005-16
乡镇社保所怎么改革01-13
CIIA2019真题-103-14
常用溶剂的性能介绍及挥发速度 - 图文04-16
2015文言文翻译训练09-19
2010TS闭卷A_定稿06-07
第六讲 文言翻译(同步练)01-10
中国最新主要铁路干线(26p)04-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- autolisp
- 编程
- 实用
- 主要经济业务的核算
- 1总包单位对分包单位的总技术交底(飓成)
- 德语语法 关系从句
- 浅析快递企业的成本控制--以申通快递为例
- 九年级数学中考练习6
- 防洪防汛安全责任制
- 赴丹麦葛莱体育学院的学习总结--黄大林
- 节目主持人概论重点
- 认识长方形和正方形教学设计、反思
- 第五章 FET三极管及其放大管考试试题
- 《记忆》 - 华中科技大学校长李培根在2010届毕业典礼上的致辞
- 2015年医师定期考核题库中医专业1000题
- 关于意识形态领域突出问题“大摸底、大整改、大督查”活动实施方案
- 一年级奥数天天练试题及答案
- 小升初古诗词填空题大全题目
- 施工组织课程设计1
- 企业会计信息失真的博弈分析
- 《统计学》期中考试试卷
- 学校先进基层党组织事迹材料-精品文档
- 《窃书为雅罪》读后感 - 中国古代因何无知识产权法