找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 699|回复: 2

[分享]:AutoLisp编写工程地质剖面图小工具

[复制链接]
发表于 2004-11-16 13:05:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
AutoLisp编写工程地质剖面小工具
  在我院应用的CAD工程地质制图系统中,通常采用的各种高级语言编制的程序,一般是通过编制数据文件,生成CAD图形数据交换文件(一般为*.SCR或*.DXF)达到绘制CAD图纸的目的。这种方法往往显得不符合我们的绘图习惯,也很不直观。为此,我们利用AutoLisp语言开发绘制工程地质剖面图组件,在实际应用中取得了较好的效果。

  其实,绘图过程就是各种工程地质剖面图组件的拼接过程。一幅工程地质剖面图,一般而言不外乎以下几个组件:图幅图签、剖面图框架(如标尺、桩号等)、勘探信息(如钻孔、平硐等)、地质构造、图例花纹、各种地质线条等。如果我们分别对不同组件编写不同的绘制工具,并把他们有机地、相互关联地放置在一起,就绘制出了一幅工程地质图纸。因此,开发出一套绘制各种工程地质组件的程序,具有一定的实用价值。

  AutoLisp语言内嵌于AutoCAD,编写的小程序可以方便地在 AutoCAD界面下进行人机对话。例如下列程序代码段通过输入几个数据即可实现绘制一个简单的钻孔。

(defun c:zk()
(setq pt0 (getpoint "/n请输入钻孔位置:"))
(setq blc (getreal "/n请输入比例尺:"))
(steq ks (getreal "/n请输入孔深(m):"))
(setq ksx (* (/ ks blc) 1000))
(setq pt1 (list (- (car pt0) 0.5) (cadr pt0)))
(setq pt2 (list (- (car pt0) 0.5) (- (cadr pt0) ksx)))
(setq pt3 (list (+ (car pt0) 0.5) (- (cadr pt0) ksx)))
(setq pt4 (list (+ (car pt0) 0.5) (cadr pt0)))
(command "PLINE" pt1 pt2 pt3 pt4 "")

  我们在用AutoLisp编制上述小工具时,遇到了一些问题,也有些心得体会,愿与大家交流,权作抛砖引玉。

  1 常用数据应建立磁盘文件进行保存,如工程名称、比例尺、剖面方向等,需要在不同的Autolisp甚至于不同的图纸间通用,因此需建立磁盘文件进行保存。相关的函数有read-line、wrtie-line等进行磁盘读写操作;rtos、atof等进行数值与字符串的转换。

  2 尽量应用表格进行编写,可以使程序简洁并增加可读性。事实上,一个AutoLisp程序本身就是一个表或若干表的集合。而各种数据组成的表又是AutoLisp的数组,在某种程度上,这种表比其它高级语言的数组更容易操作,因为AutoLisp提供了丰富的表操作语言,如(subst newitem olditem list);从list表中搜寻olditem并以newitem代替。(reverse list);返回元素被倒置后的list表等等。而且AutoLisp在获得实体信息时就是以表的形式进行存放的;在编写节理玫瑰图、绘制岩土层代号、获取钻孔信息等都会用到各种结构的表。

  3 应用Setvar、getvar改变AutoCAD系统变量。如在某些应用中,由于OSNAP、ORTHO等的状态对图形绘制有加大影响。修改系统变量,程序结束时再改回去,这是一种很好的编程习惯。

  4 建立下拉菜单和图标菜单。大量的工具编写完成后,可以组织编写一个图标菜单,应用时就显得非常方便。下拉菜单的编写比较方便,r12版修改Acad.mnu,R14版修改Acad.mns,一般就是增加一段[pop]代码即可。图标菜单也大同小异,但除了增加一段[icon]代码,还需绘制图标。绘制图标可用各种栅格图象编辑器,建议还是用AutoCAD R14版内置的图标编辑器比较方便。具体操作是:把光标移动到ACAD的图标菜单上,点击鼠标右键,选择编辑,把一个个彩色的点拼成图形即可,在绘制时其右方的一个小窗口可看到效果,完成后再另存为需要的文件名。一般只需绘制16*16点阵的小图标即可,除非你习惯于采用大图标菜单。

  5 如何使每次启动AutoCAD都自动调入AutoLisp程序,而不需重新手工调入,可以修改ACAD的SYSTEM目录下的Acad.mnl文件,在适当位置增加下列语句:用(load [path] filename)则在启动ACAD时自动调入filename.lsp文件,如选用Autoload则只在第一次使用时调入。

  6 有时需要在ACAD环境下直接编辑文本文件,可以由AutoLisp调用,具体如(winapp "notepad.exe" filename) 即可。对于输入大量数据(如用于节理统计等)建立的数据文件,在AutoLisp运行过程中直接打开发现错误的文件进行修改,可以减少界面切换,加快绘图过程。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-17 18:30:08 | 显示全部楼层
能发出这些小工具吗?让我也学习一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-19 19:27:16 | 显示全部楼层
好东西呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 15:21 , Processed in 0.167331 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表