- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用LISP语言实现在平面图中自动画出桥梁墩柱标识
使用LISP语言实现在平面图中自动画出桥梁墩柱标识 摘 要:以往在平面图中画墩柱标识是一件费时费力,生产力低下的工作,本文讨论了如何使用LISP语言实现该项工作,以极大的节省时间,提高共效率。
关键词: LISP桥梁墩柱
中图分类号:TU997 文献标识码: A
1.以前工作状况
在平面图中画桥梁墩柱的标识是一件大量的繁琐的重复性的工作,以往的做法是:
依据路基宽度确定墩柱的间距和位置,依据桥梁的斜交角度确定是双柱墩还是三柱墩,然后把每一种角度的墩柱标识各做成一个块(如图一),再分别一个一个的粘贴进平面图,再旋转该块而成(如图二)。非常繁琐而且需要大量的时间。(当然以上方法仅适用于普通桥梁的标准墩柱标识,对于特殊要求的墩柱型式还是以桥梁组提供的为准。以下LISP语言实现的也仅是画出标准墩柱标识。)
图一
图二
2.LISP语言及编程方法
LISP语言的先天特性就是可以处理AutoCAD中大量重复性的工作,以节省时间和提高效率,下面我们就来看看该怎么实现这个自动画墩柱的程序呢?
我一直认为编程最好的方法就是分解法,把要实现的目标分解成若干个模块,然后一步一步的去实现。这有利于减少整个工作的难度,有利于增加或者减少程序功能,有利于出现问题时的溯源以便于查错纠错,而且可以提高不少工作效率。
这个程序也是这样,首先我依据需求和平时做这项工作的特性,理出大致的程序结构,分别为:
{主程序:负责调用记录系统变量和恢复系统变量,调用功能实现子模块;
判断程序:判断各变量状态;
功能实现子程序:使用判断程序和画出墩柱程序,依据各种状态按要求实现程序功能;
画出墩柱程序。}
3.自动画桥墩的具体实现
3.1主程序:
这里记录了各个系统变量状态,由于本程序需要使用visual函数,所以需要预先加载visual函数接口,调用了所需的AutoCAD线型,调用了功能实现子程序,且程序运行结束后需恢复各系统变量。程序实现如下:
(defun c:qd()
(setvar “cmdecho” 0)
(command “undo” “be”)
(setq osmode (getvar “osmode”))
(setvar “osmode” 0)
(vl-load-com)
(if(not(tblsearch “ltype” “dashed”))(command “-linetype”“load” “dashed” ““ ““))
(setq f (ssget ‘((0 . “LWPOLYLINE”))))
(get_length f)
(command “_copy” f ““ ‘(0 0 ) ‘(0 0))
(command “_erase” f ““)
(command “_ucs” “w”)
(setvar “osmode” osmode)
(command “undo” “e”)
(princ)
)
3.2画出墩柱程序:
使用功能实现子程序所确定的位置画出墩柱。
(defun DrawC(yuanx / )
(entmake (list (cons 0”CIRCLE”)
(cons 100 “AcDbEntity”)
(cons 100 “AcDbCircle”)
(cons 8 “桥墩”)
(cons 6 “DASHED”)
(cons 48 0.01)
(list 10 (car yuanx) (cadr yuanx) 0.0)
(cons 40 0.8)
(cons 62 5)
))
(entmake (list (cons 0”CIRCLE”)
(cons 100 “AcDbEntity”)
(cons 100 “AcDbCircle”)
(cons 8 “桥墩”)
(cons 6 “DASHED”)
(cons 48 0.01)
(list 10 (car yuanx) (cadr yuanx) 0.0)
(cons 40 0.85)
(cons 62 5)
))
)
3.3判断程序和功能实现子程序:
由于本程序属于比较单一和简单的功能实现集,所以在后来的调试完成时,我把判断程序和功能实现子程序合并成了一个模块。
在该模块中,使用主程序所确定的选择集,首先需要用户输入路基的宽度,以确定可使用半幅桥梁墩柱的总宽度。
依据索引值取出选择集中的图元,然后再把图元转对象
文档评论(0)