- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AutoCAD图形中封闭区域面积获取
AutoCAD图形中封闭区域面积获取摘要:以吴江农村河道清淤测量为例,介绍计算两次河道断面测量所形成的AutoCAD图形中任意封闭区域面积的方法,以及用VB如何从AutoCAD中获取相关数据,从而实现清淤工程量的计算。
关键词:AutoCAD 面积 VB
中图分类号:TV85 文献标识码:A 文章编号:
1 引言
在吴江农村河道清淤测量中,采用断面法计算清淤工程量,首先得到用AutoCAD生成的两次河道断面测量成果所形成的断面图的面积。要取得封闭区域的面积,采用人工的方法耗时较长且易出错,用编程的方法则易于实现,而AutoCAD应用程序支持ActiveX Automation技术,其他应用程序(如VB)就可以通过其开放对象模型(Object)对其进行操作。通过对象的方法和属性可以实现对象的操作及状态信息的收集或改变,从而实现VB与AutoCAD之间的数据交互。
2 VB访问AutoCAD对象
AutoCAD中的ActiveX Automation是微软公司ActiveX规范的具体应用。它通过基于ActiveX的自动化对象,为其他应用程序提供了访问AutoCAD内部功能的方法,是AutoCAD最新的开发接口。在运行时,AutoCAD与其他应用程序之间的关系是服务器与客户的关系,开发人员使用支持ActiveX规范的编程语言(如VB等)就能通过访问AutoCAD的对象模型,把AutoCAD的强大功能集成到应用程序中。AutoCAD的对象模型是一种树型结构模型,在顶层是Application对象(即AutoCAD 本身),其他对象均为Application对象的子对象。在Application对象下面是Preferences(设置)和Document(文档)对象。从AutoCAD图形中得到断面图的面积,主要用到了Document对象Object.SendCommand(Command)方法,其功能是从VB中把Command字符串里包含的AutoCAD命令传递给AutoCAD,并使AutoCAD执行这个命令。因此,VB调用SendCommand()方法使AutoCAD程序执行BOUNDARY命令,形成多段线实体或一个面域,然后用查询实体(面域)面积的方法,VB就能得到计算出的面积。
3 计算封闭区域面积的方法
AutoCAD可由Area命令和List命令用来获取面积,其中Area命令用来计算弧、圆、椭圆、填充图案、优化多段线、多段线、面域或平面闭合样条曲线或指定区域的面积,并将计算的结果保存在AutoCAD的系统变量Area中;List命令用于显示选择对象的面积、周长等相关信息。但是,Area命令和List命令都要求被计算的对象要是一个实体并能形成一个封闭区域或是一个面域,并且List命令只在屏幕上显示。而吴江农村河道清淤测量中两次生成的断面曲线虽闭合,但不是同一实体(面域),因而不能直接用Area命令或List命令得到面积。解决这个问题的方法就是采用AutoCAD中的BOUNDARY命令,它的功能是根据形成封闭区域的现有实体创建一个面域或多段线。系统变量HPBOUND 控制 BHATCH 和 BOUNDARY 创建的对象类型,当HPBOUND =0时创建一个面域,HPBOUND =1时则创建一条多段线。如果对象创建成功,就新增一个面域或者一个多段线实体,此时,图形里实体的数量就比执行BOUNDARY命令前多一个;否则,图形里的实体数量保持不变。这样,计算一个封闭区域面积的步骤为:①先设置系统变量HPBOUND =1,然后执行BOUNDARY命令,用BOUNDARY命令的“内部点”方式,在要计算面积的封闭区域内用鼠标任意点取一点,创建一个多段线实体;②将生成的多段线实体赋给某一变量,查询变量的Area属性就能得到生成多段线实体的面积;③删除该多段线实体。
实际河道断面图中,看似封闭的区域很有可能未封闭,而BOUNDARY命令对所选区域创建多段线实体是否成功只在屏幕上显示,并不回传给所调用的宿主程序。因此,VB程序通过查询实体面积就有可能失败。要避免这种情况,可以通过判断执行BOUNDARY命令前后图形里的实体数量是否相等,来判断创建多段线实体是否成功。如果成功,则现有实体数量比原有实体数量多一个,那就直接查询生成的实体面积,否则提示用户创建不成功。以下是计算两次测量形成的河道断面图面积的核心代码:
With AcadApp.ActiveDocument
‘设置当前边界创建的对象为多段线
.SetVariable(“HPBOUND”,1)
‘保存现有实体数量
iCount =.ModelSpace.Count
‘防止干扰,关闭对象捕捉功能
.O
文档评论(0)