版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一直在用OCC作項(xiàng)目,但這方面的中文資料很少,看來OCC在中國(guó)還不是十分普及;后來,項(xiàng)目中使用OCC和DirectX結(jié)合使用,取得了很好的效果; 隨著OCC6.3版本的推出,Open CASCADE在速度方面已有了很大的改變。以下為一些OCC的基礎(chǔ)知識(shí),愿與各位OCC愛好者共同學(xué)習(xí);一:OCC中的基礎(chǔ)類:gp_Pnt在OCC中,gp_Pnt表示一個(gè)頂點(diǎn),gp_Vec表示一個(gè)向量,可以用兩個(gè)頂點(diǎn)來生成一個(gè)向量。比如:gp_Pnt P1(0,0,0);
2、60; gp_Pnt P2(5,0,0); gp_Vec V1 (P1,P2);向量有一個(gè)方法.IsOpposite(),可以用來測(cè)試兩個(gè)向量的方向是相對(duì)還是平行;比如: &
3、#160; gp_Pnt P3(-5,0,2);gp_Vec V2 (P1,P3); &
4、#160; Standard_Boolean result =V1.IsOpposite(V2,Precision:Angular(); 另外向量還有一些重要方法:-Sta
5、ndard_Real Magnitude() const;計(jì)算向量的大?。?Standard_Real SquareMagnitude() const;計(jì)算向量的平方;-向量的加減乘除操作;-向量的單位化;-通過一個(gè)點(diǎn),線,面得出其鏡像的向量;-向量的旋轉(zhuǎn),平移,縮放;具體的函數(shù)名稱可以看OCC的頭文件說明; 有時(shí)需要決定一組空間點(diǎn)是位于一個(gè)點(diǎn);一條直線,或一個(gè)平面,或一個(gè)空間:OCC中提供了相應(yīng)的算法;比如:TColgp_Array1OfPnt array (1,5); / sizing array
6、 array.SetValue(1,gp_Pnt(0,0,1); array.SetValue(2,
7、gp_Pnt(1,2,2); array.SetValue(3,gp_Pnt(2,3,3);
8、60; array.SetValue(4,gp_Pnt(4,4,4);
9、160; array.SetValue(5,gp_Pnt(5,5,5); 1 / 45 &
10、#160; &
11、#160; GProp_PEquation PE (array,1.5 );
12、;
13、; if (PE.IsPoint() /是否是同一個(gè)點(diǎn) gp_Lin L;
14、 if (PE.IsLinear() L = PE.Line(); /是否位于一條直線上;
15、0; if (PE.IsPlanar() /是否在一個(gè)平面內(nèi); if (PE.IsSpace() gp_Dir類:此類用來描述3D空間中的一個(gè)單位向量;常用方法:(1):IsEqual(const gp_Dir& Other,const Standard_Real AngularTolerance) const;兩個(gè)單位向量是否相
16、等;(2):IsNormal(const gp_Dir& Other,const Standard_Real AngularTolerance) const;兩個(gè)單位向量的夾角是否是PI/2;(3):IsOpposite(const gp_Dir& Other,const Standard_Real AngularTolerance) const;兩個(gè)單位向量是否方向相反;(4):IsParallel(const gp_Dir& Other,const Standard_Real AngularTolerance) const;兩個(gè)單位向量夾角O或PI;(5):Angl
17、e(const gp_Dir& Other) const;求兩個(gè)向量之間的夾角;(6):void CrossCross(const gp_Dir& V1,const gp_Dir& V2) ;計(jì)算三個(gè)向量之間的叉積;(7):Standard_Real Dot(const gp_Dir& Other) const;計(jì)算點(diǎn)積;(8):Standard_Real DotCross(const gp_Dir& V1,const gp_Dir& V2) const;計(jì)算叉積再點(diǎn)積;(9):gp_Dir Reversed() const;得到反方向,
18、0;在OCC中用 gp_Lin2d 類,來生成一個(gè)二維空間的直線,有它的原點(diǎn)和單位向量; gp_Ax2d 類:通過原點(diǎn)和X方向單位和Y方向單位建立一個(gè)二維坐標(biāo)系;利用sense參數(shù)可以決定是右手系還是左手系;可以利用平移、旋轉(zhuǎn)、縮放、鏡像來更改坐標(biāo)系;類似地,gp_Ax3類:用來描述一個(gè)3D空間的坐標(biāo)系。而gp_Ax2類用來表示一個(gè)二維空間坐標(biāo)系;可以為右手系,也可以是左手系; 二、曲線類GeomAPI和GeomConvert包:GeomAPI開發(fā)包提供了一個(gè)幾何體的可編程應(yīng)用程序接口;比如:求點(diǎn)P和曲線C的距離D: D = Geom
19、API_ProjectPointOnCurve(P,C);或者GeomAPI_ProjectPointOnCurve PonC(P,C); D = PonC.LowerDistance(); GeomConvert包提供了一些全局函數(shù),可以用來實(shí)現(xiàn)轉(zhuǎn)化一個(gè)Geom曲線為BSpline曲線等;比如:Handle(Geom_BSplineSurface) aPipeSurface =
20、60; Handle(Geom_BSplineSurface):DownCast(aPipe.Surface(); Handle(Geom_BSplineSurface) anotherBSplineSurface = &
21、#160; GeomConvert:SplitBSplineSurface(aPipeSurface,1,2,3,6); OCC中三維幾何曲線的類型有:-線-園-橢圓-二次曲線-拋物線-Bezier曲線-BSpline曲線可以將一個(gè)二維的幾何曲線轉(zhuǎn)化為某個(gè)平面內(nèi)的一個(gè)三維曲線:比如:Standard_Real radius = 5;
22、60; gp_Ax2d ax2d(gp_Pnt2d(2,3),gp_Dir2d(1,0); /生成一個(gè)二維園
23、160; Handle(Geom2d_Circle) circ2d = new Geom2d_Circle(ax2d,radius);
24、
25、 gp_Ax2d circ2dXAxis = circ2d->XAxis(); &
26、#160; &
27、#160; / 然后,在這個(gè)平面里轉(zhuǎn)化為三維曲線; Handle(Geom_Curve) C3D = GeomAPI:To3d(circ2d,gp_Pln(gp_Ax3(gp:XOY(); Handle(Geom_Circle) C3DCircle = Handle(Geom_Circle):DownCas
28、t(C3D);
29、; gp_Ax1 C3DCircleXAxis = C3DCircle->XAxis(); &
30、#160; 另外,可以以將一個(gè)三維曲線
31、,投影到一個(gè)平面內(nèi),從而生成一個(gè)二維曲線gp_Pln ProjectionPlane(gp_Pnt(1,1,0),gp_Dir( 1,1,1 );
32、; Handle(Geom2d_Curve) C2D = GeomAPI:To2d(C3D,ProjectionPlane);
33、0; Handle(Geom2d_Circle) C2DCircle =Handle(Geom2d_Circle):DownCast(C2D); &
34、#160; gp_Ax2d C2DCircleXAxis = C2DCircle->XAxis(); 將一個(gè)基本幾何圖形進(jìn)行空間變換可以使用它自帶的函數(shù):比如:Handle(Geom_Geometry) aRotatedEntity = circle->Rotated(gp:OZ(),PI/4);如果想獲取圖形的類型名稱:
35、60; Standard_CString aRotatedEntityTypeName = aRotatedEntity->DynamicType()->Name(); gp_Parab2d類:描述一個(gè)平面內(nèi)的拋物線;示例:gp_Pnt2d P(2,3);
36、 gp_Dir2d D(4,5); gp_Ax22d A(P,D);
37、0; gp_Parab2d Para(A,6); GCE2d_MakeParabola類:生成一個(gè)拋物線圖形; Geom2d_BSplineCurve類:描述樣條曲線; Geom2dAPI_Interpolate類:通過一組點(diǎn)來修改一個(gè)樣條曲線; FairCurve_Batten類:用一個(gè)常量或線性增加的值來構(gòu)造曲線;可以用來設(shè)計(jì)木紋或塑料板條;圖形為二維的,可以模擬物理樣條或板條.Geom2d_TrimmedCurve類:此類通過兩個(gè)值,定義曲線的一部分,-可以用來計(jì)算曲線
38、的參數(shù)值和點(diǎn)坐標(biāo);-可以得到曲線的一般特征,比如連續(xù)的等級(jí),封閉特點(diǎn),周期性,邊界參數(shù);-當(dāng)用一個(gè)矩陣應(yīng)用于曲線或原始曲線轉(zhuǎn)化后進(jìn)行相應(yīng)參數(shù)的改變;所有的曲線必須幾何連續(xù),曲線至少一階可導(dǎo)。一般來說,在生成一個(gè)曲線時(shí),要先檢查一下所應(yīng)用的參數(shù)是否可以生成一個(gè)光滑曲線;否則會(huì)出現(xiàn)錯(cuò)誤;另外注意一點(diǎn):不可以構(gòu)造空長(zhǎng)度的曲線或自相交的曲線;此類的基類是Geom2d_BoundedCurve類:它是一個(gè)抽象類;描述二維空間中的邊界曲線的一般行為;除了Geom2d_TrimmedCurve是它的一個(gè)派生類外,它還有二個(gè)派生類:- Geom2d_BezierCurve- Geom2d_BSplineCur
39、veGeom2d_BoundedCurve類的基類是Geom2d_Curve類:Geom2d_Curve:抽象類;此抽象類描述了2D空間的曲線的一般特征;派生出的類有多個(gè):包括直線,園,二次曲線,Bizier,BSpline曲線等;這些曲線的特點(diǎn)是可以參數(shù)化; Geom2d_Curve類的基類是Geom2d_Geometry類;此抽象類主要定義了曲線的變換,平移,旋轉(zhuǎn),縮放及拷貝等方法; Geom2d_Geometry類的基類是MMgt_TShared類;此抽象類為管理對(duì)象的基類,可以引用計(jì)數(shù),及刪除方法; Standard_Transient:此抽象類為所有類共
40、同的基類;Geom2dAPI_InterCurveCurve類:此類用來實(shí)現(xiàn)二維曲線的相交;一種情況是曲線與曲線的相交,另外一種情況是曲線自身的相交;主要方法有:-Standard_Integer NbPoints() const;相交點(diǎn)數(shù);-Standard_Integer NbSegments() const;切線相交數(shù);-void Segment(const Standard_Integer Index,Handle(Geom2d_Curve)& Curve1,Handle(Geom2d_Curve)& Curve2)const;返回其中一個(gè)線段; 下面的示例是
41、兩個(gè)曲線相交的例子:首先,生成第一個(gè)曲線,在這里,應(yīng)用點(diǎn)數(shù)組來生成一個(gè)曲線;-定義數(shù)組Handle(TColgp_HArray1OfPnt2d) harray = new TColgp_HArray1OfPnt2d (1,5); / sizing harray -輸入點(diǎn)數(shù)組的值harray->SetValue(1,gp_Pnt2d (0,0);
42、 harray->SetValue(2,gp_Pnt2d (-3,1);
43、0; harray->SetValue(3,gp_Pnt2d (-2,5);
44、160; harray->SetValue(4,gp_Pnt2d (2,9); harray->SetValue(5,gp_Pnt2d (-4,14);
45、0; -檢測(cè)一下點(diǎn)與點(diǎn)之間是否為同一點(diǎn);0.01為公差值,依實(shí)際需要可以更改此參數(shù); &
46、#160; G
47、eom2dAPI_Interpolate anInterpolation(harray,Standard_False,0.01); -生成曲線anInterpolation.Perform();
48、 Handle(Geom2d_BSplineCurve) SPL = anInterpolation.Curve(); -第二個(gè)曲線用兩點(diǎn)來生成
49、160; gp_Pnt2d P1(-1,-2);g
50、p_Pnt2d P2(0,15);gp_Dir2d V1 = gp:DY2d(); Handle(
51、Geom2d_TrimmedCurve) TC1= GCE2d_MakeSegment(P1,V1,P2); -下面進(jìn)行曲線的求交
52、60;
53、60; Standard_Real tolerance = Precision:Confusion(); Geom2dAPI_InterCurveCurve ICC (SPL,TC1,tolerance); &
54、#160;-得到交點(diǎn) Standard_Integer NbPoints =ICC.NbPoints(); gp
55、_Pnt2d PK;
56、160; for (Standard_Integer k = 1;k<=NbPoints;k+)
57、0;
58、0; PK = ICC.Point(k);
59、0; / 針對(duì)每個(gè)交點(diǎn),進(jìn)行相應(yīng)處理; &
60、#160; Geom2d_OffsetCurve類
61、:此類用來實(shí)現(xiàn)偏移曲線;比如:-生成一個(gè)曲線TColgp_Array1OfPnt2d array (1,5); / sizing array array.SetValue(1,gp_Pnt2d (-4,0); array.SetValue(2,gp_Pnt2d (-7,2); array.SetValue(3,gp_Pnt2d (-6,3
62、); array.SetValue(4,gp_Pnt2d (-4,3); array.SetValue(5,gp_Pnt2d (-3,5); Handle(Ge
63、om2d_BSplineCurve) SPL1 = Geom2dAPI_PointsToBSpline(array); -生成一個(gè)偏移曲線
64、0; Standard_Real dist = 1;
65、; Handle(Geom2d_OffsetCurve) OC =
66、0; new Geom2d_OffsetCurve(SPL1,dist);
67、 Standard_Boolean result = OC->IsCN(2); GccAna_Pnt2dBisec類此類實(shí)現(xiàn)兩點(diǎn)之間的等分線.示例:gp_Pnt2d P1(1,2); gp_P
68、nt2d P2(4,5); gp_Lin2d L; GccAna_Pnt2dBisec B(P1,P2); if (B.IsDone() &
69、#160; L = B.ThisSolution(); 因?yàn)樗傻臑橹本€,所以顯示時(shí)要轉(zhuǎn)化為線段:if (B.IsDone() Handle(Geom2d_TrimmedCurve) aLine = GCE2d_MakeSegment(L,-8,8); Handle(ISess
70、ion2D_Curve) aCurve = new ISession2D_Curve(aLine); aDoc->GetISessionContext()->Display(aCurve, Standard_False); gce_MakeCirc2d類用來創(chuàng)建園:創(chuàng)建園的方法很多,主要構(gòu)造方法有:-園心和通過的一點(diǎn);-通過一個(gè)園和一個(gè)距離值,創(chuàng)建一個(gè)同心園;-三點(diǎn)決定一個(gè)園;-園心和半徑;gp_Elips2d類:可以生
71、成一個(gè)橢園,也可以生成橢園上的一段園弧;比如:Standard_Real major = 12;
72、 Standard_Real minor = 4;
73、 gp_Ax2d axis = gp:OX2d();
74、; gp_Elips2d EE(axis,major,minor);
75、60; Handle(Geom2d_TrimmedCurve) arc = GCE2d_MakeArcOfEllipse(EE,0.0,PI/4); 上面是利用長(zhǎng)短軸的方法構(gòu)造橢圓,也可以用二次方程的方式來構(gòu)造橢園;其中橢園類中方法可以求出焦點(diǎn)1和焦點(diǎn)2的位置,兩焦點(diǎn)之間的位置,離心率;旋轉(zhuǎn),平移,縮放等操作. 三、關(guān)于面的類gp_Pln類:定義一個(gè)平面,構(gòu)造的方法可以是點(diǎn)法式,或通過ABCD系數(shù);另外,還提供了一些常用的方法,比如:-求點(diǎn)到平面,線到平面,平面與平面的距離及平方距離;-點(diǎn)是否在平面內(nèi),線是否在平面內(nèi);-通過一個(gè)點(diǎn),一個(gè)軸的鏡像平面;-
76、平面的旋轉(zhuǎn),縮放與平移;Geom_ElementarySurface類:此類用來描述一個(gè)表面,此類的派生類有:平面;園柱面;錐面;球面;園環(huán)面;它的基類是Geom_Surface,是一個(gè)抽象類;Geom_Surface類的基類是Geom_Geometry類; Geom_RectangularTrimmedSurface類:用來生成一個(gè)有邊界的平面;比如:Handle(Geom_Plane) aProjectionPlane = GC_MakePlane(ProjectionPlane).Value(); Handle(Geom_Recta
77、ngularTrimmedSurface) aProjectionPlaneSurface= new Geom_RectangularTrimmedSurface(aProjectionPlane,-8.,8.,-12.,12.); DisplaySurface(aDoc,aProjectionPlaneSurface);此類的基類是Geom_BoundedSurface類;此類的兄弟類還有- Geom_BezierSu
78、rface,- Geom_BSplineSurfaceConicalSurface類:用來創(chuàng)建一個(gè)園錐表面;構(gòu)造表面的方法有:-已知一個(gè)園錐表面,和空間一點(diǎn),過此點(diǎn)的平行于已知園錐表面;-已知一個(gè)園錐表面,和一個(gè)距離,創(chuàng)建一個(gè)平行于已知園錐表面的園錐表面;-通過四個(gè)點(diǎn)構(gòu)造一個(gè)園錐表面;-通過一個(gè)軸和兩個(gè)點(diǎn);-通過兩個(gè)點(diǎn)和兩個(gè)半徑;GeomAPI_IntCS類:此類用來計(jì)算一個(gè)園弧和和一個(gè)表面的交點(diǎn)或相交線段;GeomFill_BSplineCurves類:此類用來構(gòu)造一個(gè)可以填充的BSpline表面,構(gòu)造它可以用兩個(gè)三個(gè)或四個(gè)BSpline曲線作為邊界;填充類型有三種:enum GeomFil
79、l_FillingStyle GeomFill_StretchStyle,GeomFill_CoonsStyle,GeomFill_CurvedStyle;以下示例為用兩個(gè)樣條曲線生成一個(gè)表面:GeomFill_FillingStyle Type = GeomFill_StretchStyle;
80、160; GeomFill_BSplineCurves aGeomFill1(SPL1,SPL2,Type);
81、 Handle(Geom_BSplineSurface) aBSplineSurface1 = aGeomFill1.Surface();GeomFill_Pipe類:此類用來構(gòu)造一個(gè)pipe,沿著一個(gè)路徑sweep一個(gè)截面,這兩個(gè)都是曲線類型;一般來說,結(jié)果是一個(gè)BSpline表面;常見的有幾種方法:-給定一個(gè)路徑和一個(gè)半徑,截面是個(gè)園,位置是路徑的第一個(gè)點(diǎn),比如:GeomFill_Pipe aPipe(SPL1,1);
82、; aPipe.Perform(); &
83、#160; Handle(Geom_Surface) aSurface= aPipe.Surface();
84、160; Standard_CString aSurfaceEntityTypeName="Not Computed" if (!aSurface.IsNull()
85、 aSurfaceEntityTypeName = aSurface->DynamicType()->Name(); -給定一個(gè)路徑和一個(gè)截面。比如:Handle(Geom_Ellipse) E = GC_M
86、akeEllipse( gp:XOY() ,3,1).Value(); GeomFill_Pipe aPipe2(SPL1,E); aPipe2.P
87、erform();
88、60;Handle(Geom_Surface) aSurface2= aPipe2.Surface(); Standard_CString aSurfaceEntityTypeName2="Not Computed" if (!aSurface2.
89、IsNull() aSurfaceEntityTypeName
90、2 = aSurface2->DynamicType()->Name(); aSurface2->Translate(gp_Vec(5,0,0); -給定一個(gè)路徑和兩個(gè)截面,中間截面為過度線;示例:Handle(Geom_TrimmedCurve) TC1 = &
91、#160; GC_MakeSegment(gp_Pnt(1,1,1),gp_Pnt(5,5,5); Handle(Geom_Trimme
92、dCurve) TC2 = GC_MakeSegment(gp_Pnt(1,1,0),gp_Pnt(4,5,6);
93、0; GeomFill_Pipe aPipe3(SPL1,TC1,TC2);
94、; aPipe3.Perform();
95、 Handle(Geom_Surface) aSurface3 = aPipe3.Surface(); Standard_CString aSurfaceEntityTypeName3="Not Computed"
96、;if (!aSurface3.IsNull()
97、
98、 aSurfaceEntityTypeName3 = aSurface3->DynamicType()->Name(); aSurface3->Translate(gp_Vec(10,0,0);
99、0; -給定一個(gè)路徑和N個(gè)截面,中間為過渡線;一般
100、情況下,所生結(jié)果為:NURBS,但是,在一些特殊的情況下,可以生成平面,園柱,球,園錐等;參數(shù),U,沿著截面的方向,V沿著路徑方向;Geom_BezierSurface類:生成一個(gè)Bezier表面;Geom_OffsetSurface類:用來偏移一個(gè)表面;比如:Standard_Real offset = 1;
101、 Handle(Geom_OffsetSurface) GOS = new Geom_OffsetSurface(aGeomSurface, offset);Geom_SweptSurface類:有兩個(gè)派生類,分別用來生成一個(gè)回轉(zhuǎn)
102、體表面和一個(gè)延展體表面; Geom_SurfaceOfLinearExtrusion:用來描述一個(gè)線性延展表面;它的基類是:Geom_Surface類比如:Handle(Geom_BSplineCurve) aCurve =GeomAPI_PointsToBSpline(array).Curve(); gp_Dir aDir(1,2,3);
103、; Handle(Geom_SurfaceOfLinearExtrusion) SOLE =new Geom_SurfaceOfLinearExtrusion(aCurve,aDir);
104、0; Handle(Geom_RectangularTrimmedSurface) aTrimmedSurface =new Geom_RectangularTrimmedSurface(SOLE,-10,10,false); Geom_SurfaceOfRevolution類,表示一個(gè)回轉(zhuǎn)體表面;比如:Handle(Geom_BSplineCurve) aCurve = GeomAPI_PointsToBSpline(array).Curve();
105、60; Handle(Geom_SurfaceOfRevolution) SOR =new Geom_SurfaceOfRevolution(aCurve,gp:OX(); 1:利用一個(gè)二維數(shù)組來生成曲面的方法:TColgp_Array2OfPnt array3 (1,5,1,5);
106、0; array3.SetValue(1,1,gp_Pnt (-4,-4,5);.array3.SetValue(2,1,gp_Pnt (-2,-4,4);.Handle(Geom_BSplineSurface) aSurf2 =GeomAPI_PointsToBSplineSurface(array3).Surface(); 2:GeomAPI_ExtremaSurfaceSurface類:計(jì)算兩個(gè)表面之間的極值點(diǎn);主要方法:(1):Quantity_Length LowerDistance() const;計(jì)算
107、兩個(gè)表面的最短距離;(2):Standard_EXPORT void LowerDistanceParameters(Quantity_Parameter& U1,Quantity_Parameter& V1,Quantity_Parameter& U2,Quantity_Parameter& V2) const;得到第一個(gè)表面上的極值點(diǎn)的UV參數(shù)和第二個(gè)表面上的極值點(diǎn)的UV參數(shù);(3):void NearestPoints(gp_Pnt& P1,gp_Pnt& P2) const;得到第一個(gè)表面上的極值點(diǎn)和第二
108、個(gè)表面上的極值點(diǎn);(4): Quantity_Length Distance(const Standard_Integer Index) const;得到第N個(gè)極值點(diǎn)的距離;(5):Standard_Integer NbExtrema() const;極值的數(shù)目;.示例:GeomAPI_ExtremaSurfaceSurface ESS(aSurf1,aSurf2);Quantity_Length dist = ESS.LowerDistance();gp_Pnt P1,P2;ESS.NearestPoints(P1,P2); gp_Pnt P3,P4;Handle(Geom_Cur
109、ve) aCurve;Standard_Integer NbExtrema = ESS.NbExtrema();for(Standard_Integer k=1;k<=NbExtrema;k+) ESS.Points(k,P3,P4);
110、 aCurve= GC_MakeSegment(P3,P4).Value(); DisplayCurve(aDoc,aCurve,Quantity_NOC_YELLOW3,false);一些OCC的基礎(chǔ)知識(shí),愿與各位OCC愛好者共同學(xué)習(xí);mail:tongabcd 一:關(guān)于體的類BRepBuilderAPI_MakeVertex類創(chuàng)建點(diǎn); BRepBui
111、lderAPI_MakeEdge類此類用來創(chuàng)建邊;比如,由直線生成邊:gp_Lin line(gp_Ax1(gp_Pnt(10,10,10),gp_Dir(1,0,0); WhiteEdge = BRepBuilderAPI_MakeEdge(line,-20,10);下面為生成四分之一園邊:gp_Elips Elips(gp_Ax2(gp_Pnt(10,0,0),gp_Dir(1,1,1),60,30); RedEdge = BR
112、epBuilderAPI_MakeEdge(Elips,0,PI/2);下面是由曲線生成邊:Handle (Geom_BezierCurve) curve = new Geom_BezierCurve(array);BRepBuilderAPI_MakeEdge ME (curve);GreenEdge = ME;V3 = ME.Vertex1();V4 = ME.Vertex2(); BRepBuilderAPI_MakeWire類用來創(chuàng)建一個(gè)Wire類; 用一個(gè)Wire和一個(gè)邊來生成一個(gè)新的Wire:ExistingWire = BRepBuilderAPI_MakeW
113、ire(Edge2); Edge3 = BRepBuilderAPI_MakeEdge(gp_Pnt(-300,0,-80),gp_Pnt(-90,20,-30); BRepBuilderAPI_MakeWire MW1(ExistingWire,Edge3); if (MW1.IsDone() YellowWire = MW1;用一個(gè)Wire和添加邊
114、的方法來生成Wire:BRepBuilderAPI_MakeWire MW; MW.Add(ExistingWire2); MW.Add(Edge5); MW.Add(Edge6); MW.Add(Edge7);
115、 if (MW.IsDone() WhiteWire = MW.Wire(); LastEdge = MW.Edge(); &
116、#160; LastVertex = MW.Vertex(); BRepBuilderAPI_MakeFace類生成一個(gè)面;有多種生成面的方法;-通過一個(gè)封閉曲線生成面:BRepBuilderAPI_MakeFace(curve);-通過一個(gè)Wire生成面:BrownFace = BRepBuilderAPI_MakeFace(YellowWire);Bnd_Box2d類:定義一個(gè)二維空間的邊界盒,可以得出邊界盒各個(gè)點(diǎn)的值,有時(shí),在某個(gè)方向是無限大,這種情況下,稱為在
117、此方向上是開放的;示例:Bnd_Box2d aCBox; Geom2dAdaptor_Curve GACC (C);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年餐飲業(yè)特許經(jīng)營(yíng)合同規(guī)范文本2篇
- 二零二五年度貨運(yùn)航空貨物損失補(bǔ)償及責(zé)任保險(xiǎn)合同3篇
- 2025年度鋁合金建筑模板租賃與安全培訓(xùn)合同4篇
- 二零二五版CNG運(yùn)輸車輛租賃與車輛性能監(jiān)測(cè)服務(wù)協(xié)議3篇
- 2025年度航空輪胎供應(yīng)與維護(hù)保養(yǎng)服務(wù)合同4篇
- 2025年度綠色建筑認(rèn)證公積金貸款房屋買賣合同4篇
- 水庫(kù)漁業(yè)2025年度漁業(yè)產(chǎn)品質(zhì)檢合同2篇
- 2025年電商平臺(tái)收益權(quán)轉(zhuǎn)讓及數(shù)據(jù)分析合同3篇
- 二零二五年度生態(tài)農(nóng)業(yè)項(xiàng)目零星工程勞務(wù)分包合同范本4篇
- 二零二五年度藝術(shù)品拍賣居間代理協(xié)議4篇
- GB/T 18476-2001流體輸送用聚烯烴管材耐裂紋擴(kuò)展的測(cè)定切口管材裂紋慢速增長(zhǎng)的試驗(yàn)方法(切口試驗(yàn))
- GA 1551.5-2019石油石化系統(tǒng)治安反恐防范要求第5部分:運(yùn)輸企業(yè)
- 拘留所教育課件02
- 沖壓生產(chǎn)的品質(zhì)保障
- 《腎臟的結(jié)構(gòu)和功能》課件
- 2023年湖南聯(lián)通校園招聘筆試題庫(kù)及答案解析
- 上海市徐匯區(qū)、金山區(qū)、松江區(qū)2023屆高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 護(hù)士事業(yè)單位工作人員年度考核登記表
- 天津市新版就業(yè)、勞動(dòng)合同登記名冊(cè)
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 人教版八年級(jí)上冊(cè)地理全冊(cè)單元測(cè)試卷(含期中期末試卷及答案)
評(píng)論
0/150
提交評(píng)論