找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 865|回复: 0

[文章]:Autolisp编程两例

[复制链接]
发表于 2002-12-19 11:56:57 | 显示全部楼层 |阅读模式

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

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

×
Autolisp编程两例
梁秀娟 赵兴民

       AutoCAD具有强大的绘图功能,可用于绘制各种专业图件,尤其适用于二次开发(使用Autolisp语言、C语言等),是勘测设计和科学研究的最佳制图软件之一。

      制图软件不同,对图件的编辑有不同的影响。对成果图的整饰,笔者认为还是在AutoCAD下进行为好。例如,可将Excel, Surfer, Grapher等软件绘制的图件调入AutoCAD 环境下进行再处理,最终输出令人满意的图件。

       目前各单位已对AutoCAD 进行了不同程度的开发,但仍有时候不能尽如人意,比如用CAD做声波曲线和静力触探曲线等。此时可以用LISP语言自编一些实用的小程序,解决此类难题。下面介绍两例小程序。

       1 用AutoCAD 绘制声波曲线的Autolisp 程序

       (defun C:px1()(setq hb (getreal"\n 波速1米等于图面多少毫米?"))(setq vb (getreal"\n 孔深1米等于图面多少毫米?"))(setq n 1)(while (= n 1)(setq p0 (getpoint"\n用鼠标拾取孔口点 p0?"))(command "ucs" "o" p0)(setq y1 (getreal"\n 输入测点深度?"))

(setq x1 (getreal"\n 输入测点波速?"))

(setq x1 (* x1 hb))

(setq y1 (* y1 vb))

(setq y1 (* y1 -1))

(setq p1 (list x1 y1))

(setq y2 (getreal"\n 输入下一点深度?"))

(while (/= y2 -1)

(setq x2 (getreal"\n 输入起下一点波速?"))

(setq x2 (* x2 hb))

(setq y2 (* y2 vb))

(setq y2 (* y2 -1))

(setq p2 (list x2 y2))

(command "line" p1 p2 ^c )

(setq p1 p2)

(setq y2 (getreal"\n 输入下一点深度?"))

)

(setq n (getreal"\n 绘制下一个孔吗(0/1)?"))

)

(command "ucs" "" )

)

应用时在AutoCAD 操作屏幕的命令行中装入该程序,然后按着屏幕上的提示一步步的进行直到结束。该程序还可以用来做标贯曲线等曲线。

 

       2 用AutoCAD 绘制静力触探曲线的Autolisp 程序

       (defun c:jtx()(setq nme (getstring"\n 输入数据文件名f=?"))(setq tex (open nme "r"))(setq hb (getreal "\n ps=1MPa相当 acad 几毫米hb?"))(setq vb (getreal "\n 孔深1米相当 acad 几毫米vb?"))(setq h 0.1)(setq p0 (getpoint "\n 用鼠标拾取孔口一点p0=?"))

(command "ucs" "o" p0)

(setq a1 (read-line tex))

(setq b1 (read a1))

(setq x1 (* b1 hb))

(setq y1 (* h vb -1))

(setq p1 (list x1 y1))

(while (/= tex nil)

(setq h (+ 0.1 h))

(setq a2 (read-line tex))

(setq b2 (read a2))

(setq x2 (* b2 hb))

(setq y2 (* h vb -1))

(setq p2 (list x2 y2))

(command "line" p1 p2 ^c)

(setq p1 p2)

)

(command "ucs" "")

(close tex)

)

操作条件:静力触探数据文件已经存在,为文本格式。

      操作方法:首先装入静力触探曲线程序,然后按着屏幕提示直接读入已有的数据文件,即能自动画出曲线。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-26 05:16 , Processed in 0.157998 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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