CN106844921B - 三维场景实现管线连接中间件模型与两端管线对接的方法 - Google Patents
三维场景实现管线连接中间件模型与两端管线对接的方法 Download PDFInfo
- Publication number
- CN106844921B CN106844921B CN201710019303.1A CN201710019303A CN106844921B CN 106844921 B CN106844921 B CN 106844921B CN 201710019303 A CN201710019303 A CN 201710019303A CN 106844921 B CN106844921 B CN 106844921B
- Authority
- CN
- China
- Prior art keywords
- pipeline
- point
- middleware model
- pipeline connection
- points
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/14—Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种三维场景实现管线连接中间件模型与两端管线对接的方法,所述方法为:1、在三维场景的管线平面上获取管线的待处理的点数据集;2、对所述的点数据集进行分情况判断并得到应选择哪种角度类型的管线连接中间件模型;3、对所述的待处理的点数据集进行分情况判断并获得出管线连接中间件模型的旋转角度;4、将步骤2和步骤3获取的结果存入对应的图层数据集中,进行管线连接中间件模型与两端管线的对接。本发明在三维场景的管线平面中可以准确的实现管线连接中间件模型与两端管线对接。
Description
技术领域
本发明涉及一种三维场景实现管线连接中间件模型与两端管线对接的方法,尤其是在三维场景的管线平面上选取管线连接中间件模型的角度类型以及将该模型旋转至对应的角度来与两端管线进行对接的方法。
背景技术
在三维场景中,当把管网数据导入到应用***中时,管线与管线之间的连接点存在着二通、三通等特征点,并且在三维的场景中,还存在的方向、旋转角度以及两管线连接角度问题。如果上面的三个条件之一在三维场景中出错,则在***中显示的则也是错的。如图1所示由于方向、角度和旋转角度出错,导入***后出错的结果。
在图1中,凸出来的部分的二通管,本来其应该是向右转的,但是由于在把管网数据导入到***中,没有考虑其方向,所以出错。导致二通的头部向左。
当操作人员往三维场景上添加管线连接中间件模型时,因为管线连接中间件模型的初始对齐方向基本是水平横向的,因此没有与管线准确相连,而是有所偏离,这样就造成三维场景上的显示错误,很不美观。
发明内容
本发明要解决的技术问题,在于提供一种三维场景实现管线连接中间件模型与两端管线对接的方法,在三维场景的管线平面中可以准确的实现管线连接中间件模型与两端管线对接。
本发明是这样实现的:一种三维场景实现管线连接中间件模型与两端管线对接的方法,所述方法包括如下步骤:
步骤1、在三维场景的管线平面上获取管线的待处理的点数据集;
步骤2、对所述的点数据集进行分情况判断并得到应选择哪种角度类型的管线连接中间件模型;
步骤3、对所述的待处理的点数据集进行分情况判断并获得出管线连接中间件模型的旋转角度;
步骤4、将步骤2和步骤3获取的结果存入对应的图层数据集中,进行管线连接中间件模型与两端管线的对接。
进一步地,所述步骤1具体为:
步骤1.1、定义一个待处理的点数据集合points,获取所要进行处理的管线连接中间件模型点要素中的SmX坐标和SmY坐标,并将SmX坐标和SmY坐标生成一个新的二维点pointA并添加到points中;
步骤1.2、获取与该管线连接中间件模型相连的所有管线要素,对管线连接中间件模型点要素的要素类型进行判断,如果该要素类型为“变径”,则将与之相连的管线要素中变量“口径”的值大的一条管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中,并且往points中添加一个新的二维点Point2D;如果管线连接中间件模型点要素的要素类型为“管堵”,则将唯一一条与该管线连接中间件模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中,并且往points中添加一个新的二维点Point2D;如果管线连接中间件模型点要素的要素类型为其他类型,则将每一条与该管线连接中间件模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中;
步骤1.3、将添加完成的points作为待处理的点数据集。
进一步地,所述步骤2具体为:
步骤2.1、对步骤1中生成的待处理点数据集points做具体的判断,如果points中的管线连接中间件模型点要素的要素类型为“变径”,则管线连接中间件模型的角度类型为180°;否则进入步骤2.2;
步骤2.2、对管线连接中间件模型的角度类型进行具体计算:按顺序提取points中的三个点要素,分别为管线连接中间件模型点要素:Point2D
aPoint2D=pointList[0],管线连接中间件模型相连管线1的端点:Point2DbPoint2D=pointList[1],管线连接中间件模型相连管线2的端点:Point2D cPoint2D=pointList[2],对三个点的X,Y坐标通过向量获得出两条管线的夹角余弦值pipLineCosine,再通过数学公式:(ArcCos(pipLineCosine)*180)/π计算出两条管线的夹角角度,最后通过该夹角角度所属的角度区间得出应该选择的管线连接中间件模型角度结果。
进一步地,所述步骤3具体为:
步骤3.1、对步骤1中生成的待处理点数据集points做具体的判断,如果管线连接中间件模型点要素的要素类型为“三通”,则不能用象限判断来获取旋转角度,而是通过相连管线的夹角判断来获得旋转角度;如果管线连接中间件模型点要素的要素类型不为“三通”,则通过象限判断后获得旋转角度,如果管线连接中间件模型点要素的要素类型为“阀门”,则在获得出旋转角度之后需要进一步加上90度或者减去90度得到最终结果;否则即为最终结果;
步骤3.2、根据步骤3.1的不同情况分别做不同操作:如果管线连接中间件模型点要素的要素类型为“三通”,则判断三条相连管线相互之间的夹角,如果其中一条管线与其他两条管线的夹角都为90°,则选取该条管线为旋转参考边,将该管线不与管线连接中间件模型相连的一端端点以及管线连接中间件模型点要素进行获得旋转角度;如果管线连接中间件模型点要素的要素类型不为“三通”,则判断是否为“管堵”,如果为“管堵”,则直接将唯一一条相连管线作为旋转参考边;否则判断两条相连管线各自所处的象限,根据所处象限以及与水平方向,水平纵向的夹角来确定旋转参考边,将该旋转参考边管线中不与管线连接中间件模型相连的一端端点以及管线连接中间件模型点要素进行获得旋转角度;
步骤3.3、将步骤3.2中得到的旋转参考边管线一端端点point2D和管线连接中间件模型点要素aPoint2D进行计算:如果point2D的Y坐标大于aPoint2D的Y坐标,则旋转参考边管线在一二象限内,旋转角度计算公式为:180+ArcTan(point2D.Y-aPoint2D.Y,point2D.X-aPoint2D.X)*180/π;否则旋转参考边管线在三四象限内,旋转角度计算公式为:ArcTan(aPoint2D.Y-point2D.Y,aPoint2D.X-point2D.X)*180/π;如果管线连接中间件模型点要素的要素类型为“阀门”且计算得出的旋转角度小于等于90°,则最终旋转角度结果为计算结果加上90°,如果管线连接中间件模型点要素的要素类型为“阀门”且计算得出的旋转角度大于90°,则最终旋转角度结果为计算结果减去90°;如果管线连接中间件模型点要素的要素类型不为“阀门”,则通过计算得出的结果即为最终的旋转角度结果。
进一步地,步骤4具体为:将步骤2获得的管线连接中间件模型角度类型结果,和步骤3得到的管线连接中间件模型的旋转角度结果写入到对应的图层要素集中,操作人员根据两个结果即可对管线连接中间件模型与两端管线进行对接操作。
本发明具有如下优点:本发明通过对点数据集进行分情况判断并得到应选择哪种角度类型的管线连接中间件模型;对所述的待处理的点数据集进行分情况判断并获得出管线连接中间件模型的旋转角度;并将获取的结果存入对应的图层数据集中,进行管线连接中间件模型与两端管线的对接;从而在三维场景的管线平面中可以准确的实现管线连接中间件模型与两端管线对接。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1现有二通管导入***后出错的结构示意图。
图2为本发明方法流程示意图。
图3为本发明的步骤1的详细流程示意图。
图4为本发明的步骤2的详细流程示意图。
图5为本发明的步骤3和步骤4的详细流程示意图。
图6为实施例一的旋转角度计算方法详细分析与设计流程示意图。
图7为实施例二的旋转角度计算方法详细分析与设计流程示意图。
图8为实施例三的旋转角度计算方法详细分析与设计流程示意图。
图9为实施例四的旋转角度计算方法详细分析与设计流程示意图。
具体实施方式
请参阅图2所示,一种三维场景实现管线连接中间件模型与两端管线对接的方法,所述方法包括如下步骤:
步骤1、在三维场景的管线平面上获取管线的待处理的点数据集;
步骤2、对所述的点数据集进行分情况判断并得到应选择哪种角度类型的管线连接中间件模型;
步骤3、对所述的待处理的点数据集进行分情况判断并获得出管线连接中间件模型的旋转角度;
步骤4、将步骤2和步骤3获取的结果存入对应的图层数据集中,进行管线连接中间件模型与两端管线的对接。
步骤1的具体步骤:
1.1定义一个待处理点数据集合List<Point2D>points,获取所要进行处理的管线连接中间件模型点要素中的SmX坐标和SmY坐标,并将SmX坐标和SmY坐标生成一个新的二维点Point2D pointA并添加到points中;
1.2获取与该管线连接中间件模型相连的所有管线要素,对管线连接中间件模型点要素的要素类型进行判断,如果该要素类型为“变径”,则将与之相连的管线要素中变量“口径”的值较大的一条管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中,并且往points中添加一个二维点new Point2D(0,0);如果该管线连接中间件模型点要素的要素类型为”管堵”,则将唯一一条与该模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中,并且往points中添加一个二维点new Point2D(0,0);如果该管线连接中间件模型点要素的要素类型为其他类型,则将每一条与该模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中。
1.3将生成好的points作为待处理的点数据集。
步骤2的具体步骤:
2.1对步骤1中生成的待处理点数据集points做具体的判断,如果points中的管线连接中间件模型点要素的要素类型为“变径”,则管线连接中间件模型的角度类型为180°;否则需要对角度类型进行计算;
2.2根据2.1步骤,如果管线连接中间件模型点要素的要素类型不为“变径”,则做具体计算:按顺序提取points中的三个点要素,分别为管线连接中间件模型点要素(两条管线的夹角)Point2D aPoint2D=pointList[0](表示点数据集中的第一个数据),中间件相连管线1的端点Point2D bPoint2D=pointList[1],中间件相连管线2的端点Point2DcPoint2D=pointList[2],对三个点的X,Y坐标通过向量算法计算出两条管线的夹角余弦值pipLineCosine,再通过数学公式:(ArcCos(pipLineCosine)*180)/π计算出两条管线的夹角角度,最后通过该夹角角度所属的角度区间得出应该选择的管线连接中间件模型角度结果。
步骤3的具体步骤:
3.1对步骤1中生成的待处理点数据集points做具体的判断,如果管线连接中间件模型点要素的要素类型为“三通”,则不能用象限判断来计算旋转角度,而应该通过相连管线的夹角判断来计算旋转角度;如果管线连接中间件模型点要素的要素类型不为“三通”,则通过象限判断后计算旋转角度,如果管线连接中间件模型点要素的要素类型为“阀门”,则在计算出旋转角度之后需要进一步计算得出最终结果;否则即为最终结果
3.2根据步骤3.1的不同情况分别做不同操作:如果管线连接中间件模型点要素的要素类型为“三通”,则判断三条相连管线相互之间的夹角,如果其中一条管线与其他两条管线的夹角都为90°,则选取该条管线为旋转参考边,将该管线不与管线连接中间件模型相连的一端端点以及管线连接中间件模型点要素进行旋转角度计算;如果管线连接中间件模型点要素的要素类型不为“三通”,则判断是否为“管堵”,如果为“管堵”,则直接将唯一一条相连管线作为旋转参考边;否则判断两条相连管线各自所处的象限,根据所处象限以及与水平方向,水平纵向的夹角来确定旋转参考边,将该旋转参考边管线中不与管线连接中间件模型相连的一端端点以及管线连接中间件模型点要素进行旋转角度计算;
3.3将步骤3.2中得到的旋转参考边管线一端端点(Point2D point2D)和管线连接中间件模型点要素(Point2D aPoint2D)进行计算:如果point2D的Y坐标大于aPoint2D的Y坐标,则旋转参考边管线在一二象限内,旋转角度计算公式为:180+ArcTan(point2D.Y-aPoint2D.Y,point2D.X-aPoint2D.X)*180/π;否则旋转参考边管线在三四象限内,旋转角度计算公式为:ArcTan(aPoint2D.Y-point2D.Y,aPoint2D.X-point2D.X)*180/π。如果管线连接中间件模型点要素的要素类型为“阀门”且计算得出的旋转角度小于等于90°,则最终旋转角度结果为计算结果加上90°,如果管线连接中间件模型点要素的要素类型为“阀门”且计算得出的旋转角度大于90°,则最终旋转角度结果为计算结果减去90°;如果管线连接中间件模型点要素的要素类型不为“阀门”,则通过计算得出的结果即为最终的旋转角度结果;
步骤4的具体步骤:将步骤2获得的管线连接中间件模型角度类型结果,和步骤3得到的管线连接中间件模型的旋转角度结果写入到对应的图层要素集中,操作人员根据两个结果即可对管线连接中间件模型与两端管线进行对接操作。
下面结合一具体实施例对本发明做进一步说明:
参阅图3所示,步骤1的具体步骤:
1.1定义一个待处理点数据集合List<Point2D>points,获取所要进行处理的管线连接中间件模型点要素中的SmX=118.959573262301坐标和SmY=25.8726265962318坐标,并生成一个新的二维点Point2D pointA=new Point2D(SmX,SmY)并添加到points中;
1.2获取与该管线连接中间件模型相连的所有管线要素,对管线连接中间件模型点要素的要素类型进行判断,该管线连接中间件模型点要素的要素类型为“弯头”,则将每一条与该模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点Point2D pointB=new Point2D(118.959600614754,25.8731157757925),Point2D pointC=new Point2D(118.959516638785,25.8721508590648)添加到points中。
1.3将生成好的points作为待处理的点数据集
参阅图4所示,步骤2的具体步骤:
2.1对步骤1中生成的待处理点数据集points做具体的判断,points中的管线连接中间件模型点要素的要素类型为“弯头”,则需要对角度类型进行计算;
2.2根据2.1步骤,管线连接中间件模型点要素的要素类型为“弯头”,则做具体计算:按顺序提取points中的三个点要素,分别为管线连接中间件模型点要素(两条管线的夹角)Point2D aPoint2D=pointList[0],中间件相连管线1的端点Point2D bPoint2D=pointList[1],中间件相连管线2的端点Point2D cPoint2D=pointList[2],对三个点的X,Y坐标通过向量算法计算出两条管线的夹角余弦值pipLineCosine=-0.99804072265220156,再通过数学公式:(ArcCos(pipLineCosine)*180)/π计算出两条管线的夹角角度为176.41279230077595°,最后通过该夹角角度所属的角度区间得出应该选择的管线连接中间件模型为180°的模型;
参阅图5所示,步骤3的具体步骤:
3.1对步骤1中生成的待处理点数据集points做具体的判断,管线连接中间件模型点要素的要素类型为“弯头”,则通过象限判断后计算旋转角度,且该角度为最终结果
3.2根据步骤3.1的不同情况分别做不同操作:管线连接中间件模型点要素的要素类型为“弯头”,则判断两条相连管线各自所处的象限分别为第一象限,第三象限,根据所处象限以及与水平方向,水平纵向的夹角来确定旋转参考边,将该旋转参考边管线中不与管线连接中间件模型相连的一端端点pointC(118.959516638785,25.8721508590648)以及管线连接中间件模型点要素pointA(118.959573262301,25.8726265962318)进行旋转角度计算
3.3将步骤3.2中得到的旋转参考边管线一端端点(pointC(118.959516638785,25.8721508590648))和管线连接中间件模型点要素(pointA(118.959573262301,25.8726265962318))进行计算:pointC的Y坐标小于pointA的Y坐标,则旋转参考边管线在三四象限内,旋转角度计算公式为:ArcTan(aPoint2D.Y-point2D.Y,aPoint2D.X-point2D.X)*180/π=ArcTan(25.8726265962318-25.8721508590648,118.959573262301-118.959516638785)*180/π=83°。管线连接中间件模型点要素的要素类型为“弯头”,则通过计算得出的结果83°即为最终的旋转角度结果。
象限判断详细分析:
假设:三维场景的管线平面,以水平横向为X轴,以水平纵向为Y轴,将管线平面分为四个象限,中间件模型点要素默认处于两轴交点,即数轴原点。
具体步骤:
1.获取待处理点数据集合List<Point2D>pointList
2.按顺序提取点数据:
Point2D aPoint2D=pointList[0](模型夹角端点)
Point2D bPoint2D=pointList[1](管线1端点)
Point2D cPoint2D=pointList[2](管线2端点)
3.按顺序提取点数据的X,Y坐标:
double X1=aPoint2D.X;
double Y1=aPoint2D.Y;
double X2=bPoint2D.X;
double Y2=bPoint2D.Y;
double X3=cPoint2D.X;
double Y3=cPoint2D.Y;
4.根据X1,Y1,X2,Y2,X3,Y3的大小关系判断,具体分为一下集中情况:
1)((X2>X1&&Y2>Y1)&&(X3>X1&&Y3>Y1))||((X2<X1&&Y2<Y1)&&(X3<X1&&Y3<Y1))
则两条相连管线同在第一象限或者第三象限,再对两条管线各自与X轴的夹角正切值(tan)大小进行比较:
如果Math.Abs((Y2-Y1)/(X2-X1))>Math.Abs((Y3-Y1)/(X3-X1)),则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
2)((X2<X1&&Y2>Y1)&&(X3<X1&&Y3>Y1))||((X2>X1&&Y2<Y1)&&(X3>X1&&Y3<Y1))
则两条相连管线同在第二象限或者第四象限,再对两条管线各自与X轴的夹角正切值(tan)大小进行比较:
如果Math.Abs((Y2-Y1)/(X2-X1))<Math.Abs((Y3-Y1)/(X3-X1)),则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
3)((X2>X1&&X3>X1)&&((Y2<Y1&&Y3>Y1)||(Y2>Y1&&Y3<Y1)))
则两条相连管线一条在第一象限,一条在第四象限,再对两条管线的Y轴值大小进行比较:
如果Y2>Y3
则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
4)((X2<X1&&X3<X1)&&((Y2<Y1&&Y3>Y1)||(Y2>Y1&&Y3<Y1)))
则两条相连管线一条在第二象限,一条在第三象限,再对两条管线的Y轴值大小进行比较:
如果Y2<Y3
则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
5)((Y2>Y1&&Y3>Y1)&&((X2<X1&&X3>X1)||(X2>X1&&X3<X1)))
则两条相连管线一条在第一象限,一条在第二象限,再对两条管线的X轴值大小进行比较:
如果X2<X3
则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
6)((Y2<Y1&&Y3<Y1)&&((X2<X1&&X3>X1)||(X2>X1&&X3<X1)))
则两条相连管线一个在第三象限,一个在第四象限再对两条管线的X轴值大小进行比较:
如果X2>X3
则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
7)((X2>X1&&Y2>Y1)&&(X3<X1&&Y3<Y1))||((X2<X1&&Y2<Y1)&&(X3>X1&&Y3>Y1))
则两条相连管线一个在第一象限,一个在第三象限,再对两条管线各自与X轴的夹角正切值(tan)大小进行比较:
如果Math.Abs((Y2-Y1)/(X2-X1))<Math.Abs((Y3-Y1)/(X3-X1)),则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线
8)((X2<X1&&Y2>Y1)&&(X3>X1&&Y3<Y1))||((X2>X1&&Y2<Y1)&&(X3<X1&&Y3>Y1))
则两条相连管线一个在第二象限,一个在第四象限,再对两条管线各自与X轴的夹角正切值(tan)大小进行比较:
如果Math.Abs((Y2-Y1)/(X2-X1))>Math.Abs((Y3-Y1)/(X3-X1)),则选择管线1为旋转参考边管线,否则选择管线2为旋转参考边管线。
角度类型计算算法详细分析:
假设:三维场景的管线平面,以水平横向为X轴,以水平纵向为Y轴,将管线平面分为四个象限,中间件模型点要素默认处于两轴交点,即数轴原点。
具体步骤:
1.获取待处理点数据集合List<Point2D>pointList
2.按顺序提取点数据:
Point2D aPoint2D=pointList[0](模型夹角端点)
Point2D bPoint2D=pointList[1](管线1端点)
Point2D cPoint2D=pointList[2](管线2端点)
double pipLineCosine;//管线余弦值
double angle=0;//中间件模型角度类型
3.按顺序提取点数据的X,Y坐标:
double E1=aPoint2D.X;double N1=aPoint2D.Y;
double E2=bPoint2D.X;double N2=bPoint2D.Y;
double E3=cPoint2D.X;double N3=cPoint2D.Y;
4.用向量算法计算出两条管线的夹角余弦值:
pipLineCosine=((E2-E1)*(E3-E1)+(N2-N1)*(N3-N1))/(Math.Sqrt((E2-E1)*(E2-E1)+(N2-N1)*(N2-N1))*Math.Sqrt((E3-E1)*(E3-E1)+(N3-N1)*(N3-N1)));
5.算出两条管线的夹角:
aCos=(ArcCos(pipLineCosine)*180)/π
6.根据管线的夹角选择所属的模型类型:
当0<aCos且aCos<=40时
中间件模型角度类型为angle=30°;
当40<aCos且aCos<=50时
中间件模型角度类型为angle=45°;
当50<aCos且aCos<=70时
中间件模型角度类型为angle=60°;
当70<aCos且aCos<=100时
中间件模型角度类型为angle=90°;
当100<aCos且aCos<=120时
中间件模型角度类型为angle=120°;
当120<aCos且aCos<=140时
中间件模型角度类型为angle=135°;
当140<aCos且aCos<=160时
中间件模型角度类型为angle=150°;
当160<aCos且aCos<=180时
中间件模型角度类型为angle=180°;
参阅图6所示,当旋转参考边管线为与第一象限时,旋转角度为θ
θ=180°+∠CAD
=180°+arctan∠CAD*180/π
=180°+arctan(|N1–Y1|/|E1–X1|)*180/π
因为:N1>Y1且E1>X1
所以:|N1–Y1|/|E1–X1|=(N1–Y1)/(E1–X1)
因此,旋转角度θ=180°+arctan((N1–Y1)/(E1–X1))*180/π
参阅图7所示,当旋转参考边管线为与第二象限时,旋转角度为θ
θ=180°+∠CAE
=180°+arctan∠CAE*180/π
因为:∠CAE+∠CAD=180°
所以:arctan∠CAE+arctan∠CAD=0
arctan∠CAE=-arctan∠CAD
因此,旋转角度θ=180°-arctan∠CAD*180/π
=180°-arctan(|N1–Y1|/|E1–X1|)*180/π
因为:N1>Y1且E1<X1
所以:|N1–Y1|/|E1–X1|=(N1–Y1)/(-(E1–X1))
因此,旋转角度θ=180°-arctan((N1–Y1)/(-(E1–X1)))*180/π
=180°-arctan(-(N1–Y1)/(E1–X1))*180/π
=180°+arctan((N1–Y1)/(E1–X1))*180/π
参阅图8所示,当旋转参考边管线为与第三象限时,旋转角度为θ
θ=∠CAD
=arctan∠CAD*180/π
=arctan(|N1–Y1|/|E1–X1|)*180/π
因为:N1<Y1且E1<X1
所以:|N1–Y1|/|E1–X1|=(-(N1–Y1))/(-(E1–X1))
因此,旋转角度θ=arctan((-(N1–Y1))/(-(E1–X1)))*180/π
=-arctan((-(N1–Y1))/(E1–X1))*180/π
=arctan((N1–Y1)/(E1–X1))*180/π
参阅图9所示,当旋转参考边管线为与第四象限时,旋转角度为θ
θ=∠CAW
=arctan∠CAW*180/π
因为∠CAW+∠CAD=180°
所以:arctan∠CAW+arctan∠CAD=0
arctan∠CAW=-arctan∠CAD
所以旋转角度θ=-arctan∠CAD*180/π
=-arctan(|N1–Y1|/|E1–X1|)*180/π
因为:N1<Y1且E1>X1
所以:|N1–Y1|/|E1–X1|=(-(N1–Y1))/(E1–X1)
因此,旋转角度θ=-arctan((-(N1–Y1))/(E1–X1))*180/π
=arctan((N1–Y1)/(E1–X1))*180/π
由上述四种情况分析得出一下结论:
假设中间件模型点数据为A(X1,Y1),旋转参考边管线一端端点为B(X2,Y2)
则当Y1>Y2时
旋转角度公式为θ=180°+arctan((N1–Y1)/(E1–X1))*180/π
否则
旋转角度公式为θ=arctan((N1–Y1)/(E1–X1))*180/π。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (4)
1.一种三维场景实现管线连接中间件模型与两端管线对接的方法,其特征在于:所述方法包括如下步骤:
步骤1、在三维场景的管线平面上获取管线的待处理的点数据集;
步骤2、对所述的点数据集进行分情况判断并得到应选择哪种角度类型的管线连接中间件模型;
步骤3、对所述的待处理的点数据集进行分情况判断并获得出管线连接中间件模型的旋转角度;
步骤4、将步骤2和步骤3获取的结果存入对应的图层数据集中,进行管线连接中间件模型与两端管线的对接;
所述步骤1具体为:
步骤1.1、定义一个待处理的点数据集合points,获取所要进行处理的管线连接中间件模型点要素中的SmX坐标和SmY坐标,并将SmX坐标和SmY坐标生成一个新的二维点pointA并添加到points中;
步骤1.2、获取与该管线连接中间件模型相连的所有管线要素,对管线连接中间件模型点要素的要素类型进行判断,如果该要素类型为“变径”,则将与之相连的管线要素中变量“口径”的值大的一条管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中,并且往points中添加一个新的二维点Point2D;如果管线连接中间件模型点要素的要素类型为“管堵”,则将唯一一条与该管线连接中间件模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中,并且往points中添加一个新的二维点Point2D;如果管线连接中间件模型点要素的要素类型为其他类型,则将每一条与该管线连接中间件模型相连的管线要素的两个端点中不等于步骤1.1中生成的二维点pointA的端点添加到points中;
步骤1.3、将添加完成的points作为待处理的点数据集。
2.根据权利要求1所述的三维场景实现管线连接中间件模型与两端管线对接的方法,其特征在于:所述步骤2具体为:
步骤2.1、对步骤1中生成的待处理点数据集points做具体的判断,如果points中的管线连接中间件模型点要素的要素类型为“变径”,则管线连接中间件模型的角度类型为180°;否则进入步骤2.2;
步骤2.2、对管线连接中间件模型的角度类型进行具体计算:按顺序提取points中的三个点要素,分别为管线连接中间件模型点要素:Point2D aPoint2D=pointList[0],管线连接中间件模型相连管线1的端点:Point2D bPoint2D=pointList[1],管线连接中间件模型相连管线2的端点:Point2D cPoint2D=pointList[2],对三个点的X,Y坐标通过向量获得出两条管线的夹角余弦值pipLineCosine,再通过数学公式:(ArcCos(pipLineCosine)*180)/π计算出两条管线的夹角角度,最后通过该夹角角度所属的角度区间得出应该选择的管线连接中间件模型角度结果。
3.根据权利要求2所述的三维场景实现管线连接中间件模型与两端管线对接的方法,其特征在于:所述步骤3具体为:
步骤3.1、对步骤1中生成的待处理点数据集points做具体的判断,如果管线连接中间件模型点要素的要素类型为“三通”,则不能用象限判断来获取旋转角度,而是通过相连管线的夹角判断来获得旋转角度;如果管线连接中间件模型点要素的要素类型不为“三通”,则通过象限判断后获得旋转角度,如果管线连接中间件模型点要素的要素类型为“阀门”,则在获得出旋转角度之后需要进一步加上90度或者减去90度得到最终结果;否则即为最终结果;
步骤3.2、根据步骤3.1的不同情况分别做不同操作:如果管线连接中间件模型点要素的要素类型为“三通”,则判断三条相连管线相互之间的夹角,如果其中一条管线与其他两条管线的夹角都为90°,则选取该条管线为旋转参考边,将该管线不与管线连接中间件模型相连的一端端点以及管线连接中间件模型点要素进行获得旋转角度;如果管线连接中间件模型点要素的要素类型不为“三通”,则判断是否为“管堵”,如果为“管堵”,则直接将唯一一条相连管线作为旋转参考边;否则判断两条相连管线各自所处的象限,根据所处象限以及与水平方向,水平纵向的夹角来确定旋转参考边,将该旋转参考边管线中不与管线连接中间件模型相连的一端端点以及管线连接中间件模型点要素进行获得旋转角度;
步骤3.3、将步骤3.2中得到的旋转参考边管线一端端点point2D和管线连接中间件模型点要素aPoint2D进行计算:如果point2D的Y坐标大于aPoint2D的Y坐标,则旋转参考边管线在一二象限内,旋转角度计算公式为:180+ArcTan(point2D.Y-aPoint2D.Y,point2D.X-aPoint2D.X)*180/π;否则旋转参考边管线在三四象限内,旋转角度计算公式为:ArcTan(aPoint2D.Y-point2D.Y,aPoint2D.X-point2D.X)*180/π;如果管线连接中间件模型点要素的要素类型为“阀门”且计算得出的旋转角度小于等于90°,则最终旋转角度结果为计算结果加上90°,如果管线连接中间件模型点要素的要素类型为“阀门”且计算得出的旋转角度大于90°,则最终旋转角度结果为计算结果减去90°;如果管线连接中间件模型点要素的要素类型不为“阀门”,则通过计算得出的结果即为最终的旋转角度结果。
4.根据权利要求1所述的三维场景实现管线连接中间件模型与两端管线对接的方法,其特征在于:步骤4具体为:将步骤2获得的管线连接中间件模型角度类型结果,和步骤3得到的管线连接中间件模型的旋转角度结果写入到对应的图层要素集中,操作人员根据两个结果即可对管线连接中间件模型与两端管线进行对接操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710019303.1A CN106844921B (zh) | 2017-01-11 | 2017-01-11 | 三维场景实现管线连接中间件模型与两端管线对接的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710019303.1A CN106844921B (zh) | 2017-01-11 | 2017-01-11 | 三维场景实现管线连接中间件模型与两端管线对接的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844921A CN106844921A (zh) | 2017-06-13 |
CN106844921B true CN106844921B (zh) | 2020-05-19 |
Family
ID=59118525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710019303.1A Active CN106844921B (zh) | 2017-01-11 | 2017-01-11 | 三维场景实现管线连接中间件模型与两端管线对接的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844921B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111079306B (zh) * | 2019-12-27 | 2023-08-01 | 广州燃气集团有限公司 | 用于管道连接的管件的计算方法、***、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149668B2 (en) * | 2001-09-12 | 2006-12-12 | Siemens Aktiengesellschaft | Visualization of workpieces during simulation of milling processes |
CN102867077A (zh) * | 2012-07-05 | 2013-01-09 | 西安理工大学 | 基于bim的地铁综合管线调整方法 |
CN102945294A (zh) * | 2012-10-12 | 2013-02-27 | 西安理工大学 | 基于bim的地下综合管线非标准矩形连接件的确定方法 |
CN104574505A (zh) * | 2014-12-30 | 2015-04-29 | 华东师范大学 | 一种三维管线自动连通建模方法 |
-
2017
- 2017-01-11 CN CN201710019303.1A patent/CN106844921B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149668B2 (en) * | 2001-09-12 | 2006-12-12 | Siemens Aktiengesellschaft | Visualization of workpieces during simulation of milling processes |
CN102867077A (zh) * | 2012-07-05 | 2013-01-09 | 西安理工大学 | 基于bim的地铁综合管线调整方法 |
CN102945294A (zh) * | 2012-10-12 | 2013-02-27 | 西安理工大学 | 基于bim的地下综合管线非标准矩形连接件的确定方法 |
CN104574505A (zh) * | 2014-12-30 | 2015-04-29 | 华东师范大学 | 一种三维管线自动连通建模方法 |
Non-Patent Citations (1)
Title |
---|
三维建模技术及其在城市地下管网***建设中的应用;赖承芳;《中国优秀硕士学位论文全文数据库 基础科学辑》;20131015;A008-10 * |
Also Published As
Publication number | Publication date |
---|---|
CN106844921A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104898947B (zh) | 一种基于鼠标位置实现gdi电子矢量地图缩放及平移的方法 | |
WO2008010488A1 (fr) | dispositif de traitement d'image et procédé de traitement d'image | |
CN106934842B (zh) | 闭合区域的识别方法和装置 | |
CN106844921B (zh) | 三维场景实现管线连接中间件模型与两端管线对接的方法 | |
CN103902343A (zh) | 一种基于Delaunay三角网精度控制的瓦片地图下载与拼接方法 | |
EP2286387B1 (en) | Method and apparatus for 3d path | |
CN109794943A (zh) | 一种拐角过渡路径及确定方法 | |
CN106777604B (zh) | 一种圆管三通构建方法 | |
CN106012721A (zh) | 一种道路路线平面线形设计的“两点”线元法 | |
JP4959518B2 (ja) | 3次元cgオブジェクト干渉チェックプログラム | |
CN113870403B (zh) | 用于图像渲染的信息处理方法及装置 | |
CN114741764B (zh) | 一种铁路隧道衬砌断面图纸的解析方法 | |
CN107145652B (zh) | 一种用于bim任意坐标转换系转换施工坐标系的方法 | |
CN102537382A (zh) | 一种三偏心蝶阀密封面尺寸干涉的简易判定方法 | |
CN113205086B (zh) | 一种基于椭圆拟合的圆截面弯管类零件特征参数识别方法 | |
王国勋 et al. | Tool interference checking for five axis NC machining of sculptured surfaces | |
CN113836674A (zh) | 管线段三维空间干涉检测及最短距离点获取算法 | |
WO2020094023A1 (zh) | 一种道路抽稀的算法 | |
CN114329666A (zh) | 用于解析并导入三维管材刀路的方法、装置、处理器及其计算机可读存储介质 | |
CN108073775B (zh) | 一种绘制弯头及管网连通设备的方法及绘制装置 | |
CN109887013B (zh) | 基于pca的点云配准最终确定方法及*** | |
CN111008484A (zh) | 一种二维户型图转三维场景图的处理方法 | |
CN105138642A (zh) | 一种基于html5的动态标绘方法及装置 | |
JP2007328550A (ja) | 配管の設計方法 | |
CN110031073B (zh) | 多通管件重量确定方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |