网站大量收购闲置独家精品文档,联系QQ:2885784924

在AutoCAD中应用VBA技术自动绘制等高线.docVIP

在AutoCAD中应用VBA技术自动绘制等高线.doc

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

在AutoCAD2000中应用VBA技术 自动绘制等高线 王永新 福州市土地管理局计算机中心 350004 摘要: 应用AutoCAD进行地形图的计算机辅助制图能够极大地提高工作效率,但其没有自动生成等高线的功能,本人用VBA技术,将外业采集的离散点通过建立三角网,在三角形边上内插等高点的方式,能够在AutoCAD中实现等高线的自动绘制。 内容: VB是最为常用的支持ActiveX Automation技术的开发工具,其语法简单、功能强大。VBA是VB的子集,由于AutoCAD2000的VBA是嵌入在AutoCAD内部的,共享AutoCAD内存空间,可以很好地与AutoCAD沟通。运用VBA技术自动绘制等高线将极大地提高绘图效率,缩短项目的周期。 平面等高线自动绘制有很多方法,其中较为简单和比较常用的是三角网法。用三角网方法绘制等高线包括四个主要过程:根据离散分布的数据点(离散点)建立不规则的三角形网;在三角形边上内插等高点;找等高线的起迄点并追踪全部等高点;连接等高点绘成光滑曲线。下面介绍三角网法绘制等高线具体的算法过程。 建立三角网 假设在AutoCAD模型空间的平面上已经有n个离散点,点的类型为具有3D坐标的Point实体。为了保证等值点内插的精度,要使形成的每个三角形尽可能呈锐角三角形,并保证各个三角形之间互不交叉且不重复。具体联结的方法是: 1、确定第一个三角形 设L为每次自动连成的三角形编号,K为每次用来扩展的三角形编号。首先设L=1,从n个离散点中找出左下角的点赋给Ver(L,1),作为第一个三角形的第一个顶点,找出距离该点最近的点赋给Ver(L,2),作为第一个三角形的第二个顶点,找出距离这两点连线中点最近且不和这两点在一条直线上的点赋给Ver(L,3),作为第一个三角形的第三个顶点。这样,就形成一号三角形的顶点信息,K=1。 2、三角形扩展 由第一号三角形向外扩展,直到将全部的离散点连成三角网的过程是:首先从K号三角形的第一条边(Ver(K,1)、Ver(K,2))向外扩展,为了避免三角形的交叉,以第一条边为界,显然,位于顶点Ver(K,3)同侧的离散点必须被排除,(见图1),利用直线判别正负区的原理可以实现这一要求。为此,首先建立正负区判别式: F(X,Y)=Y–A · X–B 式中: A=(Y2 –Y1)/(X2–X1) B=(Y1X2–Y2X1)/(X2–X1) X1、Y1和X2、Y2分别为扩展边两端点的坐标。 〉0 离散点位于正区 显然, F(X,Y)= = 0 离散点位于该直线上 〈 0 离散点位于负区 将K号三角形的第三个顶点Ver(K,3)的坐标代入F(X,Y),结果赋给M1,然后将其余离散点的坐标也代入F(X,Y),结果赋给M2,凡M1=M2或M2=0的离散点都被排除,对符合判别条件的离散点,利用三角形边角关系的余弦定理:c2=a2+b2-2abcosC,找出与扩展边上的两点组成的角在所有的三角形中为最大,该点就作为新的三角形的第三个顶点Ver(L,3),此时的 L=L+1。为了避免三角形的交叉和重复,对该顶点还要进行一次检查判断,其方法是根据三角形的任一边最多只能为两个三角形共用这一条件,进行全等比较。即判断新的三角形的三条边是否已分别被前面形成的三角形共用过两次,如果是,则此三角形无效,此时L=L-1。否则,为有效三角形。K号三角形的第一条边扩展完后,就可转向其它两条边重复上述扩展工作,每当形成一个新的三角形时,必须使L=L+1。直至K号三角形的三条边都做完扩展工作以后,再取出另一个三角形(K=K+1)来继续做新三角形的扩展工作,当K=L并且L≠1时,表示全部三角形扩展结束,这时三角网就形成了。 依据上述原理和方法,自动联结三角网的程序设计流程图见附图1。 在三角形边上内插等高点 建立了三角网信息后,接着找出位于离散点间等高点的平面位置。显然等高点的内插都是在三角形边上进行的。下面讨论任一三角形的空间情况:平面三角形1’2’3’对应于空间三角形123,三角形的三个顶点1、2、3的高程值分别为Z1、Z2、Z3,图2中B1B2线为空间等高线,b1b2线为投影等高线,两者之间的距离为等高线的高程值,用Z表示,则有: Z=|B1b1|=|B2b2| 平面三角形1’2’3’上是否有等高点取决于空间三角形123是否与高程为Z的水平面相交。即为了在三角形边上内插等高点, 首先采用下式,判别该边有无等高点通过: (Z –Z1)·(Z–Z2)≥0时,则该边无等高点,否则必有等高点。 (Z –Z1)·(Z–Z3)≥0时,则该边无等高点,否则必有等高点。 (Z –

文档评论(0)

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

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

1亿VIP精品文档

相关文档