APP下载

一种用AutoLISP程序绘制独立地物的方法

2018-08-22赵龙

科学与财富 2018年20期
关键词:编程

赵龙

摘 要:在地图上无法按照比例表示的一些地物,统称为独立地物。它一般高出于其他建筑物,具有明显的方位意义,对地图定向、判断方位等意义较大。独立地物因无法依真型显示,所以大都用几何符号来表示。在地图上,独立地物符号必须精确的表示地物位置,符号要规定定位点,便于定位。AutoLISP语言是嵌套在AutoCAD内部,将LISP语言和AutoCAD有机结合的产物。它具有强大的开发功能,运用AutoLISP语言编写程序可以方便、快捷的绘制自己所需要的独立地物符号。

关键词:AutoLISP;AutoCAD;编程;独立地物符号

LISP(List Processing Language)语言是人工智能领域中广泛采用的一种程序设计语言,是一种计算机表处理语言。LISP语言处理的对象是符号表达式,因此也被成为符号式语言。LISP语言的程序和数据都是以符号表达式的形式来表示的,因此,一个LISP程序可以把另一个LISP程序作为它的数据来处理。LISP语言语法简单,数据类型丰富,编写程序比较方便,灵活性较高。LIPS语言的内部数据结构非常适合用表来表示,并且表中还可以嵌套其他的表,这种构成表的符号表达式放在一对括号中。利用LISP语言很容易定义和调用用户编写的函数,这使得LISP语言的编程十分灵活。AutoLISP语言嵌套于AutoCAD内部,它是LISP语言和AutoCAD有机结合的产物。AutoLISP是为二次开发AutoCAD专门设计的编程语言。AutoLISP语言嵌入AutoCAD之后,AutoCAD不再只是交互式的图形绘制软件,而成为了真正能够进行计算机辅助设计、绘图的CAD软件。

AutoLISP具有以下显著特点:

(1)在普通LISP语言的基础上,AutoLISP语言扩充了许多适用于CAD应用的特殊功能,它是一种只能以解释方式运行于AutoCAD内部的程序设计语言。

(2)在AutoLISP语言中,许多成分都是以函数的形式给出的,其中没有语句概念或其他语法结构。执行AutoLISP程序实质上就是执行一些函数,再调用另一些函数。

(3)AutoLISP把数据和程序统一表达为表结构,就可以把程序当做数据来处理,也可以把数据当做程序来执行。

(4)AutoLISP语言中的程序运行过程就是对函数的求值过程,是在对函数的求值过程中实现了函数的功能。

(5)AutoLISP语言的功能函数强大,除了具有一般性的功能函数外,还有为数不少的控制配合AutoCAD的特殊函数。而且AutoLISP可执行所有的AutoACD指令,并使用所有的AutoCAD系统变量。

(6)AutoLISP语言是一种解释型语言,程序不需要再做编译,“即写即测”,“即测即用”,可以立即在AutoCAD中得到相应的成果。

(7)AutoLISP语言的主要控制结构采用递归方式。递归方式的使用,使得程序設计简单易懂。

使用AutoLISP语言编制一些实用绘图程序,可以保障绘图的精度、提高绘图效率。独立地物是地形图(尤其大比例地形图)的重要地物元素,在地形图绘制中独立地物的数量往往较多,独立地物精确合理的绘制是地形图绘制基本要求。一般情况下,绘图软件往往能够提供多数独立地物符号的绘制方法,但对一些较为特殊或生僻的独立地物符号,绘图软件有时没有绘制这种符号的功能。

下面介绍用AutoLISP语言编程,绘制《中国海图图式》中“海港航标灯桩”的方法,该程序将绘制一个外接圆直径为3mm的红色实心五角星,定位点在五角星中心。

(1)新建一个记事本文件,文件名改为HGDZ.lsp(注意:扩展名必须为.lsp),保存该文件;

(2)将下列代码输入到该文件中:

(defun C:wjx()

(setq pt0 (getpoint "\n插入点:"))

(setq sc (getint "\n输入比例因子:"))

(setq pt1 (polar pt0 (angtof "90") (* sc 1.5)))

(setq pt2 (polar pt1 (angtof "-108") (* sc 1.0898)))

(setq pt3 (polar pt2 pi (* sc 1.0898)))

(setq pt4 (polar pt3 (angtof "-36") (* sc 1.0898)))

(setq pt5 (polar pt4 (angtof "-108") (* sc 1.0898)))

(setq pt6 (polar pt5 (angtof "36") (* sc 1.0898)))

(setq pt7 (polar pt6 (angtof "-36") (* sc 1.0898)))

(setq pt8 (polar pt7 (angtof "108") (* sc 1.0898)))

(setq pt9 (polar pt8 (angtof "36") (* sc 1.0898)))

(setq pt10 (polar pt9 pi (* sc 1.0898)))

(command "color" "T" '(255,0,0))

(command "pline" pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 "c")

(setq s1 (entlast))

(command "_bhatch" "p" "solid" "s" s1 "" "")

(3)在AutoCAD中选择菜单栏“工具”→“AutoLISP” →“加载应用程序”菜单命令,弹出“加载/卸载应用程序”对话框,找到步骤(1)创建的HGDZ.lsp,单击“加载”按钮,此时AutoCAD显示已成功加载HGDZ.lsp。

(4)AutoCAD加载上述代码文件后,在命令行输入:wjx,命令行提示“插入点:”,在这个提示下输入坐标或单击鼠标左键在图中拾取定位点坐标,按回车后命令行提示“输入比例因子:”,输入比例因子并回车,同时绘制“海港航标灯桩”,如下图所示:

结论

AutoLISP语言具有强大的开发功能,可以将复杂的绘图操作编写成程序,并通过用户命令的形式实现参数化绘图功能,有助于绘图人员更精确、高效的完成绘图工作。

参考文献

[1]周乐来,马婧.AutoCAD 2008 VisualLISP二次开发入门到精通[M].北京:机械工业出版社,2008.4.

猜你喜欢

编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
宏程序编程的几种应用
数据库中VB编程的应用