在测量绘图中Autolisp应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在测量绘图中Autolisp应用

在测量绘图中Autolisp应用   摘要:所谓的Autolisp是由Autodesk公司所开发出来的一种程序语言,属于LISP的一种,LISP是List Processor的缩写。工程师通过对autolisp编程的使用能够节省大量的时间。本文主要通过编程开发的实例来对Autolisp在测量绘图当中的应用方式以及应用思路进行介绍。   关键词:Autolisp 二次开发 程序加载   中图分类号: P202 文献标识码: A 文章编号:       一、Autolisp简介与基本计算方法   1、简介   在Auto CAD内部当中,Autolisps是对计算机表处理的一种编程语言。它本身是和Common Lisp语法约定比较相近的,但也只是包含了Common Lisp当中的一个子集而已,在此基础上面还增加了专门针对于Auto CAD特点的多种函数,这些特点都让Autolisp成为了CAD当中最为主要的基础开发工具之一,同时也让Auto CAD能够具备有良好的开放性。   程序和数据都采用符号表达式是Lisp语言的特点之一,也就是说,Lisp程序的数据处理还包括另一个Lisp程序,所以对于Lisp语言的编程是十分灵活的,从本质上来说也就是对不同的函数进行调用而已。   一系列的符号表达式,组成了Autolisp程序,该程序编程的灵活体现在另一个方面就是既可以把一个符号表达式分别写在不同的行列当中,又能够将多个不同的表达式写在同一行列上面。   2、基本计算方法   Autolisp本身的语言结构和其他的高级语言是有所区别的,而当中比较常见的有Basic、Pascal以及C语言等等,这些语言采用的是“中缀表示法”。而Autolisp语言结构使用的却是“前缀表示法”,这种表示法是把运用符摆在了第一个元素的位置上面,后面的是其它的窜书。   例如我们将变量X赋值为3那么用其他的高级语言表示也就是X=3,但是Autolisp的表示却是(Setq×3),两者的差别显而易见。又例如我们知道了两点坐标,现在要求它的平距,用高级语言表示为S=Sqrt((X2-X1)∧2+((Y2-Y1)∧2),但是对于上述用Autolisp语言表示则是(Setq S Sqrt(+expt((-X2X1)2)expt((-Y2Y1)2)))。    二、一个实例编程   从目前的测绘部门来说对于宗地测量的应用是比较多的,而宗地测量当中标出要测量的宗地每一个拐点或者是角点的坐标是一个非常重要的因素。有的时候,在测量的过程当中地形地貌或者是历史遗留问题都会对测量过程造成影响。有的宗地界址相当复杂,其中存在着多个拐点或者是角点,如果要对坐标点全部都进行标注,无论从时间还是从资源的角度来说都是相当巨大的浪费,如果线条再出现更为复杂的情况,那么标注的工作就会更为庞杂,有一点的疏忽都有可能造成差错,这样给绘图的工作造成了很大的阻碍。   在这样的情况之下,我们能够运用Autolisp语言来对程序进行编写,要解决这样的问题就变得容易很多。我们随意的打开一个文本编辑软件对下面所示的程序代码进行编写,然后保存为.lsp文件即可。    (defun C:CXZDY()   (command”layer” ”s” ”zj” nil)   (command”text” ”s” ”hj” nil)   (princ”\r选封闭界址线”)   (setq a {ssget))   (setq b(ssname a 0))   (setq c(entget b))   (setq d(list))   (foreach n c (if(= 10 (car n)) (setq d(cons (cdr n)d))))   (reverse d)   (foeeach n d   (setp p (getpoint n”选择坐标标记住(ESC键退出\\右键退):\r”))   (while (/= p nil)    (setp j (angle n p))    (setp m (max (car n) (last n)))    (setp l (+ 12.15 (* 1.45(-(strlen (stos m 2 3))5))))   (setp lt(getvar ”ltscale”))    (if (or (and (= j 0) (= j (* pi 0.5)))   (progn   (command “line” n p””)   (command “line” p setp pl (polar p 0 (* it l)))””)   (setq p2(polar p (*pi 0.25) (* it

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档