利用Region类代替AutoCAD面域进行图形计算的方法技术

技术编号:11198591 阅读:134 留言:0更新日期:2015-03-26 05:23
本发明专利技术公开了一种利用Region类代替AutoCAD面域进行图形计算的方法,包括以下步骤:S1,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述图形对象;S2,组建面域构造函数,将步骤S1重采样得到的点集P输入面域构造函数,完成Region类面域的构造;S3,基于Region类面域实现相关图形计算方法。本发明专利技术可通过自交的线对象构造面域;可通过局部未闭合的线对象构造面域;可通过回头线对象构造面域。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种,包括以下步骤:S1,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述图形对象;S2,组建面域构造函数,将步骤S1重采样得到的点集P输入面域构造函数,完成Region类面域的构造;S3,基于Region类面域实现相关图形计算方法。本专利技术可通过自交的线对象构造面域;可通过局部未闭合的线对象构造面域;可通过回头线对象构造面域。【专利说明】利用Reg1n类代替AutoCAD面域进行图形计算的方法
本专利技术涉及一种AutoCAD图形计算方法(包括:面积计算、布尔运算等),特别是涉及一种利用Reg1n类代替AutoCAD面域进行图形计算的方法。
技术介绍
AutoCAD面域是使用形成闭合环的对象创建的二维闭合区域,环可以是直线、多段线、圆、圆弧、椭圆、椭圆弧和样条曲线的组合,组成环的对象必须闭合或通过与其他对象共享端点而形成闭合的区域,可以通过多个环或者端点相连形成环的开曲线来创建面域。面域除了包括封闭的边界形状,还包括边界内部的平面,就像一个没有厚度的平面。 由于AutoCAD提供的面域构造功能不支持局部未闭合线、自相交线、回头线,也不直接提供点与面域之间的位置关系判断功能。日常工程图纸的绘制难免会出现以上情况,当以上情况给计算结果带来的影响可以忽略不计时,由于AutoCAD自带面域构造功能的局限性,将会使得众多基于AutoCAD面域的图形计算方法无法高效、顺利地完成。 Reg1n类:指示由矩形或由路径构成的图形形状的内部,无法继承此类。命名空间为 System.Drawing。从.NET Framework 2.0 开始就有了 Reg1n 类。基于 Reg1n 类可以进行区域与区域之间的交集、并集、差集布尔运算,亦可以直接用来判断一个点或者一个对象是否在另个区域内部。但是,目前还没有利用Reg1n类代替AutoCAD面域进行图形计算的相关报道。
技术实现思路
本专利技术旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种利用Reg1n类在AutoCAD中代替AutoCAD自带面域进行相关图形计算的方法。 为了实现本专利技术的上述目的,本专利技术提供的一种利用Reg1n类代替AutoCAD面域进行图形计算的方法,包括以下步骤: SI,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述图形对象; S2,组建面域构造函数,将步骤SI重采样得到的点集P输入面域构造函数,完成Reg1n类面域的构造; S3,基于Reg1n类面域实现相关图形计算方法。 在本专利技术的一种优选实施方式中,所述步骤SI具体包括以下步骤: S21,定义类型为AcadEntity的图形对象obj,定义类型为AcadSelect1nSet的选择集Sset ; S22,通过 AcadSelect 1nSet.SelectOnScreen ()方法在 AutoCAD 绘图区域选择对象,通过对Sset选择集遍历查找,逐一读取选择集里的图形对象: S23,如果 obj (i).0bjectName 为“AcDbPolyLine”,则通过obj (i).Coordinates 方法逐一读取多段线的节点坐标构建点集P ; 如果obj (i).0bjectName 为曲线,包括 AcDbCircle, AcDbARC, AcDbELLIPSE 及AcDbSPLINE,则通过调用AutoCAD内置命令“_divide”对所述曲线对象进行曲线分割处理,分割处理完成后各曲线对象形成了一系列有序的点队列,点队列里的点的类型为AcadPoint,通过AcadPoint.Coordinates方法逐一读取点队列里的坐标值构建点集P。 在本专利技术的一种优选实施方式中,所述面域函数的构造方法包括以下步骤: S31,定义类型为PointFO的点集P,给点集P赋值; S32,定义类型为 GraphicsPath 的多边形 Grphs,调用 GraphicsPath 的AddPolygon 方法生成 Grphs ; S33,初始化面域Reg1nO,输入多边形Grphs,完成面域的构造。 在本专利技术的一种优选实施方式中,所述有关面域的图形计算包括面积计算、布尔运算及点与面域的位置关系判断。 在本专利技术的一种优选实施方式中,所述面积计算的方法为:通过面域的Reg1n.GetReg1nScans方法对Reg1n面域进行矩阵变换,分解成多个小矩形的集合,最后通过各小矩形的面积累加得到面域的面积; 其中,在进行矩阵变换时,GetReg1nScans方法在处理边界数据时视为整型对待,因此处理结果会损失精度,为了保证面积计算的准确性,在构造面域时,将点集P的值放大N倍,最后将计算结果缩小N*N倍,所述N为正整数。 在本专利技术的一种优选实施方式中,所述N = 10000。 在本专利技术的一种优选实施方式中,所述布尔运算包括交集、并集及差集计算,其中,交集计算采用交集Reg1n.1ntersect (Reg1n)方法,并集计算采用并集Reg1n.Un1n (Reg1n)方法,差集计算采用差集Reg1n.Xor (Reg1n)方法。 在本专利技术的一种优选实施方式中,所述点与面域的位置关系判断方法为:采用Reg1n.1sVisible (PointF)方法。 综上所述,由于采用了上述技术方案,本专利技术的有益效果是:可以通过自相交的线对象构造面域;可以通过局部未闭合的线对象构造面域;可以通过回头线对象构造面域;可以完成复杂线对象的布尔运算;可以直接判断点与面域的位置关系。 【专利附图】【附图说明】 图1是本专利技术局部未闭合线对象面域构造实例示意图; 图2是本专利技术自相交线对象面域构造实例示意图; 图3是本专利技术回头线对象面域构造实例示意图; 图4是本专利技术面域交集计算实例示意图; 图5是本专利技术面域并集计算实例示意图; 图6是本专利技术面域差集计算实例示意图; 图7是本专利技术点与面域的位置关系判断实例示意图。 【具体实施方式】 下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。 本专利技术提供了一种利用Reg1n类代替AutoCAD面域进行图形计算的方法,包括以下步骤: S0,在VS中建立VB.NET类库dll程序集(本专利技术基于VS集成开发环境,编程语言采用VB.NET,编程方式为AutoCAD COM,采用的AutoCAD的版本可以为但不限于AutoCAD 2008),例如可以命名为Reg1nToCAD.D11,在所述类库解决方案中引用.Net程序集 System, drawing, dl I,引用 Com 库 AutoCAD 2008Type Library 和 AutoCAD/ObjectDBXCommon 17.0Type Library,完成引用后在所述类库中导入以下命名空间,如下所示: Imports System.Drawing.Drawing2D Imports Sys本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201410775243.html" title="利用Region类代替AutoCAD面域进行图形计算的方法原文来自X技术">利用Region类代替AutoCAD面域进行图形计算的方法</a>

【技术保护点】
一种利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,包括以下步骤:S1,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述图像对象;S2,组建面域构造函数,将步骤S1重采样得到的点集P输入面域构造函数,完成Region类面域的构造;S3,基于Region类面域实现相关图形计算方法。

【技术特征摘要】

【专利技术属性】
技术研发人员:周志军陈翰新向泽君张平朱清海刘远凯何德平潘成军谢征海周召兵冯永能刘洪海王昌翰张凤英杨本廷朱伟冉瑞华廖中林刘洋河肖兴国滕德贵岳仁宾黄建潘攀邱友荣范华锋邹方猛秦亚华田世华胡一勤吴昊覃渝余亨源陈剑坤沈翠陈小丽刘小云刘超吴秀娟徐娟
申请(专利权)人:重庆市勘测院
类型:发明
国别省市:重庆;85

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1