autolisp实用编程四例.docx
8页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 本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!第8页 共8页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页第 8 页 共 8 页。





