AutoCAD下几个特殊编辑功能的开发.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AutoCAD下几个特殊编辑功能的开发

AutoCAD下几个特殊编辑功能的开发 提交日期:2003-01-08?? 浏览: 910   AutoCAD作为强大而专业的工程绘图软件,提供了丰富的矢量图编辑工具,但也有一些常用的特殊编辑功能没有提供,给交互式绘图工作中的图形编辑带来了不便。例如, 在绘制地理图时, 经常遇到绘制铁路线;在手动矢量化过程中,为精确调整矢量图与底图的符合程度, 需要增加或减少多义线节点。这些功能AutoCAD缺省时无法实现,如果通过编程让计算机自动完成上述功能,则既可提高工作效率又可减轻工程设计人员的劳动强度。 AutoCAD软件提供了许多开放式接口,允许用户通过这些接口对AutoCAD进行二次开发,为AutoCAD增加新功能,以满足用户的工作需要。LISP语言程序就是常用的一种,在AutoCAD R14中,将编写的LISP程序(函数)加入到ACADr14.LSP 文件中,这些函数就如同AutoCAD的基本命令一样,非常方便。下面开发的几个LISP函数程序分别实现了绘制铁路线型、多义线节点的增加、删除操作等特殊编辑功能。 绘制铁路线型 1.程序设计思路 在AutoCAD的线型库文件ACAD.LIN、ACADISO.LIN分别新增实线段与空白段之比为1∶1、名为“Railway” 的线型,描述格式如下: 在ACAD.LIN中增加: *Railway,Railway — — A,1,-1 在ACADISO.LIN中增加: *Railway,Railway — — A,15,-15 通过对选定多义线设置线宽(铁路线宽),原点拷贝,将由拷贝生成的多义线设置为新建的“铁路”图层,颜色设为“白色”,线型设为“Railway”,线宽为原线宽的0.7倍,这样原多义线与叠加在其上的宽度稍窄的白色虚线就构成了形象逼真的铁路线。 2.程序代码 (defun c:tlx() (setvar “cmdecho” 0) (setq ss (ssget ‘((0 .“LWPOLYLINE”)))) (if (equal ss NIL) (exit) ; 没有选择对象或已取消 ) (setq tlkd (getstring“请输入铁路线宽度:”)) (command “pedit” ss “width” tlkd “”) (command “copy” ss “” “0,0” “0,0” “”) (command “layer” “m” “铁路” “L” “Railway” “” “”) (command “layer” “s” “铁路” “c” “255” “” “”) (setq sset (ssget “L”)) (command “pedit” sset “width” (setq tlkd1 (* (atof tlkd) 0.7)) “L” “ON” “”) (setq ename1 (ssname sset 0) ent1 (entget ename1)) (setq ent11 (nth 5 ent1)) (setq ent11 (subst (cons 8 “铁路”) ent11 ent1)) (entmod ent11) (setq ent12 (nth 6 ent11)) (setq ent12 (subst (cons 6 “Railway”) ent12 ent11)) (entmod ent12) ) 增加多义线节点 1. 程序设计思路 选定多义线,通过设置“最近点”捕捉方式精确定位所增加节点的位置。提取多义线的定义数据表中的节点坐标,通过检测添加点到相邻两节点距离之和是否等于两节点间距离的方法,判断添加节点所在的位置。把添加点的坐标插入数据表中与之相邻的两节点坐标之间,并对多义线的定义数据表进行更新,以达到增加节点的目的。 2. 程序代码 (defun c:add_V() ; add_Vertex.lsp ; 要求用户选定多义线 (princ “\nSelect LWPolylines: ”) (setq ss (ssget ‘((0 . “LWPOLYLINE”)))) (if (equal ss NIL) (exit)) ; 没有选择对象或已取消 ; 获得单个多义线 (setq ename (ssname ss 0) ent (entget ename) listlength (length ent) elementcounter 1) (setq e2 (entsel“请增加一个节点:”)) (setq ent11 (nth 1 e2)) (setq ent11 (osnap ent11 “nea”)) ;最近点精确捕捉 (s

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档