CN104463928B - 利用Region类代替AutoCAD面域进行图形计算的方法 - Google Patents
利用Region类代替AutoCAD面域进行图形计算的方法 Download PDFInfo
- Publication number
- CN104463928B CN104463928B CN201410775243.2A CN201410775243A CN104463928B CN 104463928 B CN104463928 B CN 104463928B CN 201410775243 A CN201410775243 A CN 201410775243A CN 104463928 B CN104463928 B CN 104463928B
- Authority
- CN
- China
- Prior art keywords
- region
- domain
- autocad
- face domain
- face
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000004364 calculation method Methods 0.000 title claims abstract description 40
- 238000010276 construction Methods 0.000 claims abstract description 28
- 230000006870 function Effects 0.000 claims abstract description 16
- 238000012952 Resampling Methods 0.000 claims abstract description 7
- 238000000205 computational method Methods 0.000 claims abstract description 3
- 238000009825 accumulation Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 230000003321 amplification Effects 0.000 claims 1
- 238000003199 nucleic acid amplification method Methods 0.000 claims 1
- 230000015572 biosynthetic process Effects 0.000 abstract description 3
- 230000008676 import Effects 0.000 description 5
- 101710097688 Probable sphingosine-1-phosphate lyase Proteins 0.000 description 3
- 101710105985 Sphingosine-1-phosphate lyase Proteins 0.000 description 3
- 101710122496 Sphingosine-1-phosphate lyase 1 Proteins 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000000263 scanning probe lithography Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种利用Region类代替AutoCAD面域进行图形计算的方法,包括以下步骤:S1,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述线图形对象;S2,组建面域构造函数,将步骤S1重采样得到的点集P输入面域构造函数,完成Region类面域的构造;S3,基于Region类面域实现相关图形计算方法。本发明可通过自交的线对象构造面域;可通过局部未闭合的线对象构造面域;可通过回头线对象构造面域。
Description
技术领域
本发明涉及一种AutoCAD图形计算方法(包括:面积计算、布尔运算等),特别是涉及一种利用Region类代替AutoCAD面域进行图形计算的方法。
背景技术
AutoCAD面域是使用形成闭合环的对象创建的二维闭合区域,环可以是直线、多段线、圆、圆弧、椭圆、椭圆弧和样条曲线的组合,组成环的对象必须闭合或通过与其他对象共享端点而形成闭合的区域,可以通过多个环或者端点相连形成环的开曲线来创建面域。面域除了包括封闭的边界形状,还包括边界内部的平面,就像一个没有厚度的平面。
由于AutoCAD提供的面域构造功能不支持局部未闭合线、自相交线、回头线,也不直接提供点与面域之间的位置关系判断功能。日常工程图纸的绘制难免会出现以上情况,当以上情况给计算结果带来的影响可以忽略不计时,由于AutoCAD自带面域构造功能的局限性,将会使得众多基于AutoCAD面域的图形计算方法无法高效、顺利地完成。
Region类:指示由矩形或由路径构成的图形形状的内部,无法继承此类。命名空间为System.Drawing。从.NET Framework 2.0开始就有了Region类。基于Region类可以进行区域与区域之间的交集、并集、差集布尔运算,亦可以直接用来判断一个点或者一个对象是否在另个区域内部。但是,目前还没有利用Region类代替AutoCAD面域进行图形计算的相关报道。
发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种利用Region类在AutoCAD中代替AutoCAD自带面域进行相关图形计算的方法。
为了实现本发明的上述目的,本发明提供的一种利用Region类代替AutoCAD面域进行图形计算的方法,包括以下步骤:
S1,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述线图形对象;
S2,组建面域构造函数,将步骤S1重采样得到的点集P输入面域构造函数,完成Region类面域的构造;
S3,基于Region类面域实现相关图形计算方法。
在本发明的一种优选实施方式中,所述步骤S1具体包括以下步骤:
S21,定义类型为AcadEntity的图形对象obj,定义类型为AcadSelectionSet的选择集Sset;
S22,通过AcadSelectionSet.SelectOnScreen()方法在AutoCAD绘图区域选择对象,通过对Sset选择集遍历查找,逐一读取选择集里的图形对象:
S23,如果obj(i).objectName为“AcDbPolyLine”,则通过obj(i).Coordinates方法逐一读取多段线的节点坐标构建点集P;
如果obj(i).objectName为曲线,包括AcDbCircle、AcDbARC、AcDbELLIPSE及AcDbSPLINE,则通过调用AutoCAD内置命令“_divide”对所述曲线对象进行曲线分割处理,分割处理完成后各曲线对象形成了一系列有序的点队列,点队列里的点的类型为AcadPoint,通过AcadPoint.Coordinates方法逐一读取点队列里的坐标值构建点集P。
在本发明的一种优选实施方式中,所述面域函数的构造方法包括以下步骤:
S31,定义类型为PointF()的点集P,给点集P赋值;
S32,定义类型为GraphicsPath的多边形Grphs,调用GraphicsPath的AddPolygon方法生成Grphs;
S33,初始化面域Region(),输入多边形Grphs,完成面域的构造。
在本发明的一种优选实施方式中,所述有关面域的图形计算包括面积计算、布尔运算及点与面域的位置关系判断。
在本发明的一种优选实施方式中,所述面积计算的方法为:通过面域的Region.GetRegionScans方法对Region面域进行矩阵变换,分解成多个小矩形的集合,最后通过各小矩形的面积累加得到面域的面积;
其中,在进行矩阵变换时,GetRegionScans方法在处理边界数据时视为整型对待,因此处理结果会损失精度,为了保证面积计算的准确性,在构造面域时,将点集P的值放大N倍,最后将计算结果缩小N*N倍,所述N为正整数。
在本发明的一种优选实施方式中,所述N=10000。
在本发明的一种优选实施方式中,所述布尔运算包括交集、并集及差集计算,其中,交集计算采用交集Region.Intersect(Region)方法,并集计算采用并集Region.Union(Region)方法,差集计算采用差集Region.Xor(Region)方法。
在本发明的一种优选实施方式中,所述点与面域的位置关系判断方法为:采用Region.IsVisible(PointF)方法。
综上所述,由于采用了上述技术方案,本发明的有益效果是:可以通过自相交的线对象构造面域;可以通过局部未闭合的线对象构造面域;可以通过回头线对象构造面域;可以完成复杂线对象的布尔运算;可以直接判断点与面域的位置关系。
附图说明
图1是本发明局部未闭合线对象面域构造实例示意图;
图2是本发明自相交线对象面域构造实例示意图;
图3是本发明回头线对象面域构造实例示意图;
图4是本发明面域交集计算实例示意图;
图5是本发明面域并集计算实例示意图;
图6是本发明面域差集计算实例示意图;
图7是本发明点与面域的位置关系判断实例示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
本发明提供了一种利用Region类代替AutoCAD面域进行图形计算的方法,包括以下步骤:
S0,在VS中建立VB.NET类库dll程序集(本发明基于VS集成开发环境,编程语言采用VB.NET,编程方式为AutoCAD COM,采用的AutoCAD的版本可以为但不限于AutoCAD2008),例如可以命名为RegionToCAD.Dll,在所述类库解决方案中引用.Net程序集System.drawing.dll,引用Com库AutoCAD 2008Type Library和AutoCAD/ObjectDBXCommon 17.0Type Library,完成引用后在所述类库中导入以下命名空间,如下所示:
Imports System.Drawing.Drawing2D
Imports System.Drawing
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
S1,编写功能模块,在AutoCAD工程图纸中获取线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述线图形对象。圆、圆弧、椭圆、椭圆弧、样条曲线等曲线对象需要进行曲线分割处理,离散成一系列有序点队列,逐次采集点队列里各点的坐标值,实现曲线对象的点集形式表达。功能模块的实现具体包括以下步骤:
S21,定义类型为AcadEntity(AutoCAD COM图形对象)的图形对象obj,定义类型为AcadSelectionSet(AutoCAD COM选择集)的选择集Sset;
S22,通过AcadSelectionSet.SelectOnScreen()(AutoCAD COM选择模型空间对象)方法在AutoCAD绘图区域选择对象,通过对Sset选择集遍历查找,即obj(i)=SSet.Item(i),逐一读取选择集里的图形对象:
S23,如果obj(i).objectName(AutoCAD COM获取对象类型)为“AcDbPolyLine”(AutoCAD COM多段线),则通过obj(i).Coordinates(AutoCAD COM多段线节点坐标)方法逐一读取多段线的节点坐标构建点集P;
如果obj(i).objectName为曲线,包括AcDbCircle(AutoCAD COM圆)、AcDbARC(AutoCAD COM圆弧)、AcDbELLIPSE(AutoCAD COM椭圆或者椭圆弧)及AcDbSPLINE(AutoCADCOM样条曲线),则通过调用AutoCAD内置命令“_divide”对所述曲线对象进行曲线分割处理,分割处理完成后各曲线形成了一系列有序的点队列,点队列里的点的类型为AcadPoint(AutoCAD COM点类型),通过AcadPoint.Coordinates方法逐一读取点队列里的坐标值构建点集P。
需要说明的是,本发明的线图形对象可以局部不闭合、可以包含回头线、可以自相交等。
S2,组建面域构造函数,将重采样得到的点集P输入面域构造函数,完成Region类面域的构造。在本实施方式中,面域构造函数的构造方法包括以下步骤:
S31,定义类型为PointF()(表示在二维平面中定义点的浮点x和y坐标的有序对,是System.Drawing的成员)的点集P,给点集P赋值,赋值方式为P(1).X=?,P(1).Y=?,……,P(n).X=?,P(n).Y=?,其中n代表点的个数。
S32,定义类型为GraphicsPath(表示一系列相互连接的直线和曲线,是System.Drawing.Drawing2D的成员)的多边形Grphs,调用GraphicsPath的方法AddPolygon(添加多边形)生成多边形,即Grphs=GraphicsPath.AddPolygon(P)。
S33,初始化面域Region(),即myRegion As New Region(),myRegion.MakeEmpty(),输入数据完成面域构造,例如得到myRegion.Union(Grph)。
S3,基于Region类面域实现相关图形计算。在本实施方式中,与面域有关的图形计算包括面积计算、布尔运算及点与面域的位置关系判断。其中,面积计算的方法为:将Region类面域进行矩阵变换,分解成多个小矩形的集合,最后通过各小矩形的面积累加得出面域的面积。其中,在进行矩阵变换时,GetRegionScans方法在处理面域边界数据时视为整型对待,因此处理结果会损失精度,为了保证面积计算的准确性,在面域构造时,将点集P的值放大N倍,在本实施方式中,N=10000。最后将计算结果缩小N*N倍,N为10的正整数倍。
矩阵变换方法为RectFs=myRegion.GetRegionScans(Mymatrix),其中变量RectFs类型为RectangleF(),GetRegionScans(返回RectangleF结构的数组。RectangleF,存储的一组浮点数,共四个,表示一个矩形的位置和大小,是System.Drawing的成员)是Region类的自带方法,变量Mymatrix的类型为Matrix(封装表示几何变换的3x 3仿射矩阵,是System.Drawing.Drawing2D的成员),RectFs即为面域变换后的小矩阵集合。通过RectFs(i).Height与RectFs(i).Width方法即可获取长、宽值,长*宽即可得到各矩形的面积。其中,i为小矩形集合的序号。
布尔运算包括交集、并集及差集计算,其中,交集计算采用交集Region.Intersect(Region)(Region类求交集)方法,并集计算采用并集Region.Union(Region)(Region类求并集)方法,差集计算采用差集Region.Xor(Region类求差集)(Region)方法。
点与面域的位置关系判断方法为:采用myRegion.IsVisible(PointF)(IsVisible:测试指定的PointF结构是否包含在此Region中)方法。
将类库RegionToCAD.Dll编译封装,在AutoCAD中通过“Netload”命令加载类库RegionToCAD.Dll,加载完成后调用类库中定义的函数和方法,即可完成线对象面积、交集、差集、并集以及点与面域的位置关系判断计算过程。计算的结果如图1到图7所示。
经过我们的实验表明,Region类在构造面域时,能够有效地抵抗背景技术中提到的AutoCAD在构造面域时所面临的问题。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (7)
1.一种利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,包括以下步骤:
S1,获取AutoCAD线图形对象,并对线图形对象重采样,以坐标点集P的方式表达所述线图形对象,所述线图形对象包括局部不闭合、回头线、自相交的线图形,具体包括以下步骤:
S21,定义类型为AcadEntity的图形对象obj,定义类型为AcadSelectionSet的选择集Sset;
S22,应用AcadSelectionSet.SelectOnScreen()方法在AutoCAD绘图区域选择对象,通过对Sset选择集遍历查找,逐一读取选择集里的图形对象;
S23,如果obj(i).objectName为“AcDbPolyLine”,则通过obj(i).Coordinates方法逐一读取多段线的节点坐标构建点集P,其中,i代表对象的序号;
如果obj(i).objectName为曲线,包括AcDbCircle、AcDbARC、AcDbELLIPSE及AcDbSPLINE,则通过调用AutoCAD内置命令“_divide”对所述曲线对象进行曲线分割处理,分割处理完成后各曲线对象则行成了一系列有序的点队列,点队列里的点的类型为AcadPoint,通过AcadPoint.Coordinates方法逐一读取点队列里的点的坐标值构建点集P;
S2,组建面域构造函数,将步骤S1重采样得到的点集P输入面域构造函数,完成Region类面域的构造;
S3,基于Region类面域实现相关图形计算方法。
2.根据权利要求1所述的利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,所述面域函数的构造方法包括以下步骤:
S31,定义类型为PointF()的点集P,给点集P赋值;
S32,定义类型为GraphicsPath的多边形Grphs,调用GraphicsPath的AddPolygon方法生成Grphs;
S33,初始化面域Region(),输入多边形Grphs,完成面域构造。
3.根据权利要求1所述的利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,所述与面域有关的图形计算包括面积计算、布尔运算及点与面域的位置关系判断。
4.根据权利要求3所述的利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,所述面积计算的方法为:通过面域的Region.GetRegionScans方法对Region面域进行矩阵变换,分解成多个小矩形的集合,最后通过各小矩形的面积累加得到面域的面积;
其中,在进行矩阵变换时,由于GetRegionScans方法在处理面域边界数据时视为整型对待,因此处理结果会损失精度,为了保证面积计算的准确性,在构建面域时,将点集P的值放大N倍,最后将计算结果缩小N*N倍,所述N为正整数。
5.根据权利要求4所述的利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,所述N=10000。
6.根据权利要求3所述的利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,所述布尔运算包括交集、并集及差集计算,其中,交集计算采用Region.Intersect(Region)方法,并集计算采用Region.Union(Region)方法,差集计算采用Region.Xor(Region)方法。
7.根据权利要求3所述的利用Region类代替AutoCAD面域进行图形计算的方法,其特征在于,所述点与面域的位置关系判断方法为:采用Region.IsVisible(PointF)方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410775243.2A CN104463928B (zh) | 2014-12-15 | 2014-12-15 | 利用Region类代替AutoCAD面域进行图形计算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410775243.2A CN104463928B (zh) | 2014-12-15 | 2014-12-15 | 利用Region类代替AutoCAD面域进行图形计算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104463928A CN104463928A (zh) | 2015-03-25 |
CN104463928B true CN104463928B (zh) | 2018-01-05 |
Family
ID=52909910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410775243.2A Active CN104463928B (zh) | 2014-12-15 | 2014-12-15 | 利用Region类代替AutoCAD面域进行图形计算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104463928B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101275917A (zh) * | 2007-03-30 | 2008-10-01 | 大日本网目版制造株式会社 | 缺陷检查装置、图形描绘装置及图形描绘系统 |
CN101593223A (zh) * | 2008-05-28 | 2009-12-02 | 北京数码大方科技有限公司 | 用于cad的图库管理方法 |
CN101923467A (zh) * | 2010-08-13 | 2010-12-22 | 沈阳黎明航空发动机(集团)有限责任公司 | Cad软件、ug软件与cae软件之间的模型传输方法 |
CN102184300A (zh) * | 2011-05-23 | 2011-09-14 | 镇江科大船苑计算机网络工程有限公司 | 标牌矩形图形计算机绘图方法 |
-
2014
- 2014-12-15 CN CN201410775243.2A patent/CN104463928B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101275917A (zh) * | 2007-03-30 | 2008-10-01 | 大日本网目版制造株式会社 | 缺陷检查装置、图形描绘装置及图形描绘系统 |
CN101593223A (zh) * | 2008-05-28 | 2009-12-02 | 北京数码大方科技有限公司 | 用于cad的图库管理方法 |
CN101923467A (zh) * | 2010-08-13 | 2010-12-22 | 沈阳黎明航空发动机(集团)有限责任公司 | Cad软件、ug软件与cae软件之间的模型传输方法 |
CN102184300A (zh) * | 2011-05-23 | 2011-09-14 | 镇江科大船苑计算机网络工程有限公司 | 标牌矩形图形计算机绘图方法 |
Non-Patent Citations (2)
Title |
---|
几个基于ObjectARX.net的GIS功能算法;李阳东 等;《测绘与空间地理信息》;20090225;第11-15页 * |
基于ObjectARX.net的AutoCAD二次开发及应用;李玉强;《山西建筑》;20070420;第361-362页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104463928A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhou et al. | Edge bundling in information visualization | |
US7586490B2 (en) | Systems and methods for three-dimensional sketching | |
Rypl et al. | From the finite element analysis to the isogeometric analysis in an object oriented computing environment | |
CN102521878B (zh) | 可编程三维人体建模和人体测量系统和方法 | |
Xian et al. | Automatic cage generation by improved obbs for mesh deformation | |
CN105761303A (zh) | 在3d建模组件上创建包围盒 | |
CN103559705B (zh) | 一种比较不同植物形态相似度的计算机方法 | |
Owens et al. | Modeling dense inflorescences | |
CN110262566A (zh) | 基于合作的基因调控方法和网络 | |
CN103914865A (zh) | 形成几何图案的面的组 | |
Limberger et al. | Advanced visual metaphors and techniques for software maps | |
CN116127599A (zh) | 一种基于勘探数据的三维地质bim建模方法和装置 | |
You et al. | Dynamic dense CRF inference for video segmentation and semantic SLAM | |
CN110757806A (zh) | 一种面向3d打印的双类形状密铺方法及系统 | |
CN104463928B (zh) | 利用Region类代替AutoCAD面域进行图形计算的方法 | |
Li et al. | Cage-free local deformations using green coordinates | |
Vestartas et al. | Design tools and workflows for braided structures | |
CN112395660A (zh) | 使用虚拟模型和基于图形的模拟为制造资源的操作区建模 | |
Rosetea et al. | Genetic graph drawing | |
Akaydın et al. | Adaptive grids: an image-based approach to generate navigation meshes | |
Allison et al. | Managing variable-dimension structural optimization problems using generative algorithms | |
Weibel et al. | Measuring the sim2real gap in 3d object classification for different 3d data representation | |
Ngan et al. | Fast and efficient FPGA implementation of connected operators | |
Thaller et al. | Procedural mesh features applied to subdivision surfaces using graph grammars | |
Maag | A collision detection approach for maximizing the material utilization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240320 Address after: No. 6 Qingzhu East Road, Dazhulin Street, Yubei District, Chongqing, 400000 Patentee after: Chongqing Institute of Surveying and Mapping Science and Technology (Chongqing Map Compilation Center) Country or region after: China Address before: 400020 Jiangbei District, Chongqing electric measuring Village No. 231 Patentee before: CHONGQING SURVEY INSTITUTE Country or region before: China |