- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
巧用AutoLisp提高房产测量工作效率
姚益飞
1前言
房产测量主要是采集和表述房屋和房屋用地的有关信息,为房产产权、产籍管理、房地产开发利用、交易、征收税费,以及城镇规划建设提供数据的资料。它是关系到民生的重要工作,这就要求在日常工作中做到细致认真,保证数据质量可靠。而面对繁琐复杂的工作,充分利用电脑提高我们的工作效率就是首选。本文主要讨论lisp语言编程提高房产测量工作效率。
2AutoLisp语言简介
AutoLisp语言完全嵌套在AutoCAD内部,同AutoCAD有机地结合成一体,它既具备一般高级语言的基本结构和功能,又具备一般高级语言所没有的图形处理能力。可直接调用几乎全部AutoCAD的命令,从而进行AutoCAD的二次开发。利用AutoLisp开发AutoCAD的一个典型例子就是实现参数化绘图的程序设计。
3AutoLisp常用函数介绍
3.l getangle?,?请求输入十进制角度数值。
3.2 getdist?,请求输入一段距离。
3.3 getkword?,请求输入“关键词”。
3.4 getPoint?,请求输入一个点的坐标。3.5 getstring?,请求输入一个字符串。
3.6 rtos?,实数转成字符串。
3.7 strcat?,将各字符串合并为一个字符串。
3.8 entlast,?取出图形信息中的最后一个对象。
3.9 command?,调用执行?AutoCAD命令。
3.10 If?,检算比较式结果。
3.11 While?,??当条件成立则执行表达式内容。
3.12 setq,设定表达式结果给各符号。
3.13 Prinl,将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开。
4房产测量相关工作简介
房产测量中我们需要绘制图形,查询和标注面积,标注房号等。
5程序示例
点击工具/AutoLISP/Visual Lisp编辑器,进入lisp语言编辑界面,新建一个lsp文件,以下介绍几个常用的小程序。
本文程序在AutoCAD2004中运行通过。
5.1绘制1:200图形
(defun c:1()
(setq bl 200)
(setq p1 (getpoint \n用鼠标指定房屋左下角点:))
(initget (+ 2 4))
(setq s1 (getdist P1 \n请输入边长(边长为零时输入结束):))
(while s1
(if (/= s1 0)
(progn (setq a1 (getangle \n请输入方向(右/0 上/90 左/180 下/270,其他角度参照):))
(IF (= a1 0) (setq a1 0 b1 0)
(IF (= a1 270) (setq a1 (* 1.5 PI))
(IF (= a1 180) (setq a1 PI)
(IF (= a1 90) (setq a1 (/ PI 2))))))
(setq p2 (polar p1 a1 (/ (* s1 1000) bl)))
(command layer s 画线 )
(command pline p1 w 0.2 p2 c)))
(setq wx (car p1) wy (cadr p1) yx (car p2) yy (cadr p2))
(setq hx (/ (+ wx yx) 2) hy (/ (+ wy yy) 2))
(setq s1 (rtos s1 2 2))
(IF (= A1 (* 1.5 PI)) (SETQ A1 90 HX (+ 1.5 HX))
(IF (= A1 0) (SETQ A1 0 HY (+ HY 1.5))
(IF (= A1 PI) (SETQ A1 0 HY (- HY 1.5))
(IF (= A1 (/ PI 2)) (SETQ A1 90 HX (- HX 1.5))))))
(command layer s text )
(command text (list hx hy) 2.5 a1 s1)
(command layer s 画线 )
(initget (+ 2 4))
(setq s1 (getdist P2 \n请输入边长(结束时按ENTER键):))
(setq p1 p2)))
在打印比例为1:1时,打出的即位单位为米的1:200的图形,如需其他比例尺可将(setq bl 200)中的200改为相应得比例尺,或者将bl设为变量,从界面输入比例尺。
5.2单个封闭区域面积的查询和标注
(defun c:2 ()
(setvar cmdecho 0)
(command _.undo be)
(setq pt (getpoint \n请点取要标注的范围内一
原创力文档


文档评论(0)