opencascade造型引擎功能介紹
現今的CAD 系統大多通常都基於CAD 系統提供的二次開發包,用戶根據要求定製符合自己要求的功能。AutoCAD就提供了AutoLISP、ADS 等都是比較通用的開發工具包。UG 也提供了多種二次開發工具:UG/Open MenuScript、UG/Open API 等。然而此類開發有着自身的缺點:
1.各個CAD 系統提供的二次開發工作各不相同,他們只能提供對特定CAD 系統的支持,甚至不支持相同CAD 系統的不同版本。
2.二次開發構建的協同設計平臺,開放性能不夠理想,很難充分利用企業現有的軟、硬件條件,也很難利用將來增加的各類設施。因爲在開發期間,很多功能已和具體的CAD系統靜態綁定了。
3.一般CAD 系統功能強大,操作複雜,二次開發只能開發其中的一部分功能。如果要開發一個功能強大的平臺,其工作量非常大,從而成本相當高。
Open CASCADE,一個開放源碼CAD 內核,可以定製和擴展(添加新的功能組件,類的進一步繼承),面向CAD/CAM , 對主流CAD 數據格式提供支持(STEP/STL/IGES 等,可自行開發轉換程序提供特定數據格式的支持),提供高級建模函數(擬合,有理樣條曲線,拉
伸、旋轉、掃出、層疊拉伸、圓角、倒角、薄殼、修剪、偏移等),參數化模型,提供幾何模型的特徵提取,對Visual C++/MFC 有很好的支持。
Open CASCADE是一套開放源代碼的CAD/CAM/CAE幾何模型核心,源自於法國的Matra Datavision公司,這一套函式庫系統原來是著名的CADCAM軟體EUCLID的開發平臺,但是在1998年, Matra Datavision改變了經營策略,從以銷售軟體爲主改變爲提供CAD/CAM/CAE軟體服務爲主的獲利模式,並且在1999年公佈Open CASCADE的程式原始碼,任何人都可以在該公司的網站上下載並且使用這些程式碼,而Matra Datavision則以此函式庫爲基礎位客戶建立客製化的數值模擬軟體,國內CADCAM產業所需的套裝軟體常常動輒數百萬甚至上千萬,如此高昂的軟體 費用對於中小企業來說確實是非常沉重的負擔,而且套裝軟體中的功能有些其實根本用不到,但是軟體使用者卻必須花錢購買這些用不到的功能,如果能夠針對中小 企業的需求建構一個精簡化的CAD/CAM軟體,並且在生產需求改變的時候才增加新的功能,將可以有效節省軟體成本,而Open CASCADE的成功經驗或許可以提供產業界甚至學術界一些新的思考方向。
Open CASCADE是一個功能強大的三維建模工具,提供了點、線、面、體和複雜形體的顯示和交互操作,經過深度開發後可實現紋理、光照、圖元填充、渲染等圖形操作和放大、縮小、旋轉、漫遊、模擬飛行、模擬穿越等動態操作。
開源Open CASCADE從底層構建的CAD平臺,所以在做機械仿真方面會好用很多,比如數控加工中模擬切屑的去除過程,對於干涉的檢查等,使用CASCADE的實體布爾運算即可都可以實現。
OpenCascade提供二維和三維幾何體的生成、顯示和分析。主要功能有:
1.創建錐、柱、環等基本幾何體;
2.對幾何體進行布爾操作(相加,相減,相交運算);
3.倒角,斜切,鏤空,偏移,掃視;
4.幾何空間關係計算(法線,點積,叉積,投影,擬合等);
5.幾何體分析(質心,體積,曲率等);
6.空間變換(平移,縮放,旋轉)。
高級功能:
1.應用框架服務;
2.數據交換服務。
OCC是基於OO概念的C++類庫,用於精密設備等設計應用程序。典型的應用是CAD(2D/3D)應用程序的開發,製造業,仿真,或者一些其他的圖形工具。OCC讓你能夠很快的開發這些程序。
OCC提供以下模塊:
n 提供2D/3D幾何模型庫,用以創建任意模型: 創建基本圖元包含:棱柱,圓柱,棱錐,圓環等實現了布爾運算(交併差)
l 對實體進行倒角,圓角等操作
l 用偏移,殼,鏤空等方式創建實體
l 計算屬性,例如:surface, volume, center of gravity, curvature
l 計算幾何 projection, interpolation, approximation
n 模型的顯示,和視圖操作等這些可視化模塊:
l 3D 旋轉
l 縮放
l 陰影
n 一個應用程序框架設計:
l 讓沒有幾何信息的應用程序聯合幾何信息
l 參數化模型
l Java Application Desktop (JAD), a framework for creating your Graphical User Interfaces (GUI)
n 數據交換模塊提供了將OCC模型導入,導出爲IGES和STEP等這些標準格式的功能。
Open CASCADE 模型庫是Open CASCADE公司基於 CAS.CADE 技術 開發和銷售的。它的設計是組件化的。 As such, they separate C++ classes for:
l 定義數據結構 (geometric modeling, display 和 graphic selection)
l 實現複雜算法
l 提供應用程序接口 (APIs)
讓有關係的或者相似的類在同一個包內可以防止類的衝突;
C++ 類名的前面加上了包的名字做前綴。比如所有用來定義3D幾何對象的類都在前面加上 Geom前綴。在 Geom中, 實現 Bezier surfaces 的類被命名爲 BezierSurface, 它的全名是Geom_BezierSurface。
大的模塊劃分爲6個:
基礎類:Foundation Classes
模型數據:Modeling Data
建模算法:Modeling Algorithms
可視化:Visualization
數據交換:Data Exchange
程序框架:Application Framework
OpenCasCade 6.3目錄結構:
l data - 這裏麪包含各種不同格式的模型文件。都是occ支持的格式。
l doc –occ的文檔。
l ros/adm - occ團隊工具,可以用來重新生成occ。
l ros/adm/win32 - 包含Visual C++ 6.0., 7.1. 和 8.0.的工程文件, 用來生成occ的win32版本。
l ros/adm/win64 - 包含 Visual C++ 8.0.工程,用來生成win平臺64位版本。
l ros/drv - 此文件夾包含WOK生成的源碼文件。
l ros/inc - 包含所有的occ頭文件。
l ros/src - 此文件夾包含occ源碼,根據開發模塊組織存放。
l ros/win32 - 此文件夾包含了occ的可執行程序(dll)和lib,有debug,release。
l Samples - 此文件夾包含了幫助文檔中的標準例程。
l tools - 包含OCAF 瀏覽器 和 MFC 應用程序嚮導工具;
l wok – 此文件夾包含 WOK (Workshop Organization Kit) 工具包,用以組織大型項目和開發團隊。
l 3rdparty - 此文件夾包含用以支持occ工作的第三方庫(Java, QT and Tcl) 和例程。
l uninstall - 卸載要用到的文件。
VS 下 Open Cascade Source Code 編譯及自定義工程設置:
源碼編譯--工程編譯順序:
l Foundation Classes (file FoundationClasses.*)
l Modeling Data (file ModelingData.*)
l Modeling Algorithms (file ModelingAlgorithms.*)
l Visualization (file Visualization.*)
l Application Framework (file ApplicationFramework.*)
l Data Exchange (file DataExchange.*)
l Draw (file Draw.*)
l WOK (file WOK.*):WOK (Workshop Organization Kit) is Open CASCADE development environment。
l Wrappers (file Wrappers.*)
OCC的結構框圖
1.1 Foundation Classes基礎類提供了一些通用的服務:
n 基本數據類型,字符串等
n 堆內存的自動化管理
n 異常處理
n 局部支持多線程
n 數據集合的處理
n 向量、矩陣及原始幾何類型的數據計算工具
n 用ASCLL文件保存數據的基本服務
以上服務組織在以下三個類庫中:
n Kernel Classes(內核- TKernel)
n Math Utilities(數據- TKMath)
n Basic Persistence(基礎持久存儲-TKAdvTools)
項目 |
目錄名 |
功能描述 |
TKernel |
Dico |
|
FSD |
||
Message |
||
MMgt |
||
NCollection |
||
OSD |
||
Quantity |
數據及物理數量,是一個REAL 值;包括了所有您所需要的物理量。 |
|
Resource |
||
SortTools |
||
Standard |
||
StdFail |
||
Storage |
||
TCollection |
||
TColStd |
||
TShort |
||
Units |
||
UnitsAPI |
||
TKMath |
Bnd |
|
BSplCLib |
||
BSplSLib |
||
Convert |
||
CSLib |
||
ElCLib |
||
ElSLib |
||
gp |
STEP-compliant,實現基本幾何及代數實體,用於定義和處理基本數據結構。 當在更爲複雜的數據結構中時,GP實體不可以共享。 |
|
math |
||
PLib |
||
Poly |
||
Precision |
||
TColgp |
||
TopLoc |
OCC中使用的拓撲數據結構包;提供了處理三維局部座標系的資源, |
|
TKAdvTools |
Dynamic |
|
Expr |
||
ExprIntrp |
||
GraphDS |
||
GraphTools |
||
Materials |
- 1. Root Classes是OCC的基本內核,是其它所有類創建的基礎,包括:
l 基本數據類型,如BOOLEAN、CHARACTER、INTEGER、REAL(實型);
l 可優化配置和回收大量的C++對象的,基於計數的內存管理器;
l 基類(Standard_Transient),通過智能指針-OCC句柄進行自動化內存管理,大多數的OCC類從該類繼承;
- 2. Quantities類庫提供以下服務Standard_Real class:
l 常用數學及物理量的基本類型(如長度、面積、體積、質量、密度、重量、溫度和壓力);
l 單位的轉換
l 日期時間信息
l 顏色的管理
- 3. Exceptions類庫能通過任何OCC功能引發,且兼容ANSI C++標準,允許你處理異常情況;OCC中的每一個異常類都直接或間接的繼承於Standard_Failure。
- 4. Strings類庫提供以下服務處理字符串:
l 用內置的String管理器,編輯操作string對象;
l 處理動態的字符串序列
OCC支持ASCII碼(8bit)、Unicode字符UTF-8(8bit)、utf-16-UCS-2 (16bit);內存管理使字符串對象使用起來比字符數組更簡單,可以通過名柄處理,可以共享的。串類在TCollection包和NCollection中實現。
- 5. Collections類庫除了字符串,該包還包含動態大小數據集合類:
【TCollection】、【TColStd package (Collections of Standard Objects component)】
【The TColStd and TShort packages provide frequently used instantiations of generic classes】
l 陣列:一維和純二維,一般用於快速訪問的一個項目,且是固定大小的數組;
l 序列及列表可排序的非唯一對象集合;
l 散列圖:提供對成員項的快速存取;
l 隊列、堆棧;
該類庫也提供特定的針對序列、散列、堆棧的迭代器;
集合容器是通用的,即每一種集合容器定義了一種結構和一些算法,可持有許多對象——通常這些對象不必從根類繼承。這與C++模板相似。如果需要使用一個給定對象類型的集合容器,則必須對這個元素的指定類型進行實例化。一旦這個實例聲明被編譯,所有基於這個通用集合容器的函數都可以在集合容器對象中實現。
如果在工程項目中你不需要CDL(在WOK下編輯CDL需要實例化所有通用集合(TCollection包)),應該好好利用NCollection中定義的集合,它包含以上描述的同樣通用的集合定義,隊在其種形式的C++模板中;因此實例化所有無額外支持的集合類型需要越過ANSI C++編譯器。
大多數集合是值語義的,意味着實例化一個集合後,它是真實存在的,並不是對它的一個句柄。
標準對象的集合容器:TCollection:標準對象集合類庫提供頻繁使用的來自TCollection包的通用類的實例,字符串來自於TCollection包和基本幾何;存在一些侷限性:OCC通用類需要在CDL語言中編譯,因此僅能在WOK中實例化。
NCollection
- 6. Math Utilities:Vectors and Matrices 向量與矩陣類庫提供常用的數據算法【既有大小又有方向的量叫做向量】,如下:
l 向量與矩陣的基本運算;
l 計算特徵值與特徵向量的方矩陣;
l 線性代數方程組的求解器;
l 找到一個非線性方程組的根;
l 找到一個或多個自變量函數的最小值算法;
同時也提供相應的數據結構,以表示任何表達式、關係或函數用於數學計算,包括變量的分配。
- 7. Primitive Geometric Types,【gp package is a STEP-compliant implementation of basic geometric and algebraic entities---gp包是基於STEP實現的一個基礎幾何和代數實體】這基本幾何類型定義在基礎Geometry包中,提供基本幾何形狀的描述如:點,向量、直線、圓、圓錐、平面及基本曲面;這些類型都是通過值來處理,非引用;通過座標軸或座標系,使幾何圖形在空間或者平面中進行定位以及幾何變換的定義、應用(平移、旋轉、對稱、縮放、複合變換)。
1.2 Modeling Data模型數據
表現2D、3D幾何模型的數據結構主要包含在四個類庫中:2D幾何(2D Geometry)、3D幾何(3D Geometry)、幾何工具(Geometry Utilities)、幾何拓撲(Topology)。
項目 |
目錄名 |
功能描述 |
TKBRep |
BRep |
|
BRepAdaptor |
||
BRepLprop |
||
BRepTools |
訪問與處理抽像拓撲數據結構的方法;explore, manipulate, 讀、寫BRep數據結構; |
|
TopExp |
訪問與處理抽像拓撲數據結構的方法;explore and manipulate(操作)TopoDS中所描述的拓撲數據結構。 |
|
TopoDS |
OCC中使用的拓撲數據結構包;描述模型的類集合,建立純拓撲的數據結構。 |
|
TopTools |
訪問與處理抽像拓撲數據結構的方法;用在拓撲數據結構上的工具庫 |
|
TKG2d |
Adaptor2d |
|
Geom2d |
描述簡單幾何對象的基本數據結構。用STEP實現二維幾何對象;依據繼承關係來組織類庫;如:Geom2d_Ellipse inherit Geom2d_Conic Geom2d_BezierCurve inherit Geom2d_BoundedCurve Curve inherit Geom2d_Curve Curves, points and vectors inherit Geom2d_Geometry |
|
Geom2dAdaptor |
||
Geom2dLProp |
二維曲線的本地屬性; |
|
GProp |
||
LProp |
提供一個枚舉用於標記二維曲線上的特徵點 |
|
TColGeom2d |
||
TopAbs |
OCC中使用的拓撲數據結構包;爲拓撲驅動程序提供一些資源,包含描述基本拓撲概念的枚舉,如形狀、方向、狀態等;同時也提供方法,管理這些枚舉。 |
|
TKG3d |
Adaptor3d |
|
AdvApprox |
||
Geom |
描述簡單幾何對象的基本數據結構。用STEP實現三維幾何對象;依據繼承關係來組織類庫;如:Geom2d_Geometry inherit Geom_ElementarySurface Geom_BezierSurface inherit Geom_BoundedSurface surfaces inherit Geom_Surface Curves, points and vectors inherit Geom_Geometry |
|
GeomAdaptor |
||
GeomLProp |
三維曲線及曲面的本地屬性; |
|
LProp3d |
||
TColGeom |
||
TKGeomBase |
AdvApp2Var |
|
AppCont |
||
AppDef |
||
AppParCurves |
||
Approx |
||
BndLib |
||
CPnts |
||
Extrema |
兩個二維曲線、兩個三維曲線、一個三維曲線與一個曲面以及兩個曲面的極值計算; |
|
FEmtool |
||
GC |
通過Direct Construction組件構造諸如(gp\Geom2d\Geom)的對象類型。但是前者實現了幾何構造算法,用於轉換構造器參數到每個對象的特殊數據結構。 它們提供了一組構造算法類; gce_MakeCire:定義了八個,在圓的幾何構造中遇到的問題。實現了八個相關的構造算法;
|
|
gce |
||
GCE2d |
||
GCPnts |
||
Geom2dConvert |
Geom2d包相關; transformation Bezier->BSpline; transformation BSpline ->Bezier; |
|
GeomConvert |
Geom包相關; BSpline、Bezier曲線,曲面的構造、轉換等與之相關的算法; |
|
GeomLid |
||
GeomProjLib |
||
GeomTools |
||
Hermit |
||
IntAna |
||
IntAna2d |
||
ProjLib |
- 2D Gemoetry類庫提供2D幾何數據結構及拓撲方向。
Gemo2D幾何包提供通過引用及遵循STEP標準處理2D幾何數據結構處理,這些對象被參數化,面向對象的,包括Bezier貝塞爾曲線、B樣條曲線、offset curves偏移曲線,提供從基本幾何類型(非面向對象,非參數化)與Gemo 2D 對象的轉換功能。Geom2dLProp幾何屬性包允許諸如此的計算:二維曲線基於一個參數點的Derivative向量、二維曲線(正常或曲率)上基於一個參數點的切向量
- 3D Gemoetry類庫提供3D幾何數據結構及拓撲方向。
Gemo幾何包提供通過引用及遵循STEP標準處理3D幾何數據結構處理,這些對象被參數化,面向對象的,包括Bezier貝塞爾曲線、B樣條曲面、offset curves偏移曲線及曲面,提供從基本幾何類型(非面向對象,非參數化)與Gemo對象的轉換功能。GeomLProp幾何屬性包允許諸如此的計算:二維曲線或曲面基於一個參數點的Derivative向量、二維曲線或曲面(正常或曲率)上基於一個參數點的切向量。
- Geometry Utilities 該類庫提供標準的在二維及三維幾何上的高級功能:
l 幾何算法的直接構造;
l 一組點插值形成一條曲線;
l 初等幾何轉換B樣條曲線及曲面;
l 2D或3D曲線上點的計算;
l 兩種幾何的極值計算;
- Topology庫可以建立抽象拓撲的數據結構。
它定義了簡單幾何實體之間的關係,通過該方法可以利用簡單實體的裝配形成複雜的幾何模型。由於一個內置的非流形non-manifold (or mixed-dimensional)(混合維)特性,可以建立混合模型(0維實體如點、1維實體如線、2維實體如面,3維實體如體積)。
抽象的拓撲數據結構描述了一個基本的實體 -一個形狀,可分爲以下組件拓撲結構:
- l Vertex頂點: 一種0維形狀對應於幾何中的點;
- l edge邊: 一種形狀對應一條曲線,並在每個末端通過一個頂點來約束;
- l wire線框:一個通過頂點互連的邊的序列;
- l face面:部分(二維)平面或者(三維)表面,被一個閉合線框約束;
- l shell殼(qiao):線框邊界線的邊連接的面的集合;
- l solid實體:與一個殼綁定的三維空間的一部分;
- l Compound solid複合實體:實體的集合;
線框與實體可以是無限的也可以是關閉的;
三角網格模型(STL文件格式模型)就是用一系列的小三角形平面來逼近原來的模型,該模型就類似於一個多面體。
STL(stereolithography)文件格式是由美國3D Systems公司於1988年開發的,目前各類商用CAD軟件均帶有STL文件的輸出功能,STL模型就是CAD模型進行三角網格化處理的結果。
1.3 Modeling Algorithms 一系列在模型中使用拓撲算法形成建模算法模塊組,通過這些,可以找到幾何算法,服務封裝在以下類庫中:
n Geometric Tools :幾何工具
n Topological Tools :拓撲工具
n Construction of Primitives :圖元構造
n Boolean Operations :布爾運算
n Fillets and Chamfers :倒圓與倒角
n Offsets and Drafts :偏移與拔模
n Features :特徵
n Hidden Line Removal:隱藏線去除
項目 |
目錄名 |
功能描述 |
TKBO |
BooleanOperations |
|
BOP |
||
BOPTColStd |
||
BOPTools |
||
BRepAlgoAPI |
||
IntTools |
||
TKBool |
BRepAlgo |
|
BRepFill |
||
BRepProj |
||
TopOpeBRep |
||
TopOpeBRepBuild |
||
TopOpeBRepDS |
||
TopOpeBRepTool |
||
TKFeat |
BRepFeat |
|
LocOpe |
||
TKFillet |
Blend |
|
BlendFunc |
||
BRepBlend |
||
BRepFilletAPI |
||
ChFi2d |
||
ChFi3d |
||
ChFiDS |
||
ChFiKPart |
||
FilletSurf |
||
TKGeomAlgo |
AppBlend |
|
ApproxInt |
||
FairCurve |
||
GccAna |
||
GccEnt |
||
GccInt |
||
GccIter |
||
Geom2DAPI |
||
Geom2dGcc |
||
Geom2dHatch |
||
Geom2dInt |
||
GeomAPI |
||
GeomFill |
||
GeomInt |
||
GeomPlate |
||
Hatch |
||
HatchGen |
||
IntCurve |
||
IntCurveSurface |
||
Intf |
||
IntImp |
||
IntImpParGen |
||
IntPatch |
||
IntPolyh |
||
IntRes2d |
||
IntStart |
||
IntSurf |
||
Law |
||
LocalAnalysis |
||
NLPlate |
||
Plate |
||
TopClass |
||
TopTrans |
||
TKHLR |
Contap |
|
HLRAlgo |
||
HLRBRep |
||
HLRTopoBRep |
||
Intrv |
||
TopBas |
||
TopCnx |
||
TKMesh |
BRepMesh |
|
IntPoly |
||
MeshAlgo |
||
MeshDS |
||
MeshShape |
||
TKOffset |
BiTgte |
|
BRepOffset |
||
BRepOffsetAPI |
||
Draft |
||
TKPrim |
BRepPrim |
|
BRepPrimAPI |
||
BRepSweep |
||
Sweep |
||
TKShHealing |
ShapeAlgo |
|
ShapeAnalysis |
||
ShapeBuild |
||
ShapeConstruct |
||
ShapeCustom |
||
ShapeExtend |
||
ShapeFix |
||
ShapeProcess |
||
ShapeProcessAPI |
||
ShapeUpgrade |
||
TKTopAlgo |
Bisector |
|
BRepApprox |
||
BRepBndLib |
||
BRepBuilderAPI |
||
BRepCheck |
||
BRepClass |
||
BRepClass3d |
||
BRepExtrema |
||
BRepGProp |
||
BRepIntCurveSurface |
||
BRepLib |
||
BRepMAT2d |
||
BRepTopAdaptor |
||
IntCurvesFace |
||
MAT |
||
MAT2d |
||
TKXMesh |
XBRepMesh |
- Geometric Tools提供算法有:
l 計算兩個交叉的二維曲線、曲面或三維的曲線、曲面;該組件用來計算2D或3D幾何對象的交叉(二維曲線的交叉、二維曲線的自交叉、三維曲線與曲面的交叉、兩個面個交叉);
l 二維和三維曲線的投影,表面和表面上的三維曲線的投影(二維曲線上的二維點的投影、三維曲線或曲面上的三維點的投影、曲面上的三維曲線的投影、從三維到二維參數空間的平面曲線變換、二維幾何對象在三維幾何空間中的位置);
l 衆多二維圓弧或數值型直線或者與其它曲線的幾何約束的構造算法(圓的半徑、直線與直線的角度、直線或圓與一個曲線相切、點是否在一條直線或一個圓弧上等);衆多曲線與曲面的構造算法;
l 通過插值擬合構建曲線和曲面;
OCC也提供一項服務被叫做SSP(基於離散點的曲面重構) Surfaces from Scattered Points (SSP)..,算法首先構造一個初始的B樣曲面,再查找其滿足條件的變形(有限元法);利用優化的算法,可以利用500000點來構造出一個曲面;
- Topological Tools 拓撲工具包,該類庫提供以下算法:
l 幾何形狀的細化;
l 形狀驗證;
l 確定形狀的局部屬性;
l 確定形狀的全局屬性;
l 進行幾何變換;
l 查找平面的邊界;
l 轉換形狀到NURBS(NURBS是非均勻有理樣條曲線:NURBS是一種非常優秀的建模方式,在高級三維軟件當中都支持這種建模方式。NURBS能夠比傳統的網格建模方式更好地控制物體表面的曲線度,從而能夠創建出更逼真、生動的造型。)幾何;
爲了在模型數據模塊的拓撲庫上定義拓撲數據結構,還提供一個完整的BREP數據結構(邊界表示[ Boundary Representation]也稱爲BR表示或者BREP表示,它是幾何造型中最成熟、無二義的表示法)。
- Construction of Primitives,該類庫提供建立基本圖元的算法(棱、柱、錐、球);
- Boolean Operations,該類庫提供高質量的算法進行布爾運算,利用交、差、並、補計算來演示布爾操作創建新的實體;
- Fillets and Chamfers過渡特徵的構建
倒圓角特徵(Fillets)
倒平角特徵(Chamfers)
倒圓角特徵和倒平角特徵,習慣上被稱爲"倒圓"和"倒角",它們建於兩個面相交形成的棱邊上,或多個面相交形成的頂點上,以修剪的形式而生成特徵,即最終要將其參照棱線或頂點刪除掉。在創建倒圓和倒角特徵時,CAD系統會根據選擇的棱線或頂點,在面集合中找出其包含面,在面的線集合或點集合中,找出相應的參照線或頂點,而表面隸屬於哪些特徵可由系統確定。
- Offsets,Drafts,Sewing and Sweeps (偏移、拔模、縫合、掃掠)
l 創建偏移形狀和他們的變體例如:
Hollowing鏤空、Shelling抽空、Lofting放樣;
l 利用拔模角來創建錐形;
l 縫合;
l 掃掠;
掃掠:是CAD中的一項建模工具 是將二維圖形轉爲三維圖形的建模方法,是將一個二維形體對象作爲沿某個路徑的剖面,而形成的三維圖形。
拔模:顧名思義 就是模具做好之後 把它拔出來,如果拔出的作用力面 與力的方向是平行的,因爲摩擦力大而難以拔出,同時會對模具表面造成損傷,所以機械直壁一般都不是垂直的,俗稱拔模角度。拔模特徵的創建功能,可方便地使體特徵的任一表面繞其一棱邊,順時針或逆時針轉動某一角度,同時保持拓撲關係不變。
- Features(特徵建模?)類庫提供算法用於建立形狀上的形態(Form)及機械(Mechanical)特徵:
l 形態特徵:柱形、棱形、旋轉特徵(Cylinders 、Draft prisms 、Prisms 、Revolved features 、Pipes )
l 機械特徵:筋(肋骨)(Ribs、Grooves)
- Hidden Line Removal:提供算法來定義線條構成的形狀隱藏在一個給定的投射中。這些線可顯示或隱藏的。服務對形狀自身或者它的簡化多面體起作用。
1.4 Visualization
OCC平臺中,可視化是建立在建模數據及描述圖形的數據結構之上的,主要實現對實體對象的顯示和選取操作。顯示服務是獨立於數據結構的,顯示服務的表示由合適的算法產生。
項目 |
目錄名 |
功能描述 |
TKMeshVS |
MeshVS |
網格顯示服務,對OCC三維顯示能力的擴展 |
TKNIS |
NIS |
新的交互服務(New Interactive Services),它提供的API與AIS類似,但有一些重要的不同或改進; 該包是一個實驗性的,有很多AIS的特性,它並不支持,比如:拓撲顯示,本地環境(上下文)等。可用於創建高效的基於OPENGL的顯示組件,但並不能取代AIS。可以認爲它是對傳統AIS的一個補充,更好的適合某些特殊任務。 |
TKOpenGL |
OpenGL |
|
TKService |
AlienImage |
導入圖片,從其它格式到OCC所支持的格式。 |
Aspect |
||
CGM |
||
Image |
提供僞彩色與彩色圖像的定義,圖像的一組關鍵功能; |
|
InterfaceGraphic |
||
MFT |
||
PlotMgt |
||
PS |
||
SelectBasics |
sensitive primitive原型的定義;在視窗中一個可選擇的實體; sensitive primitive原型所有者的定義;這個實體所原始實體與在視窗中可選擇的應用程序實體相關係 |
|
TColQuantity |
||
Viewer |
||
WNT |
提供通用的WINDOWS NT的圖像接口 |
|
TKV2d |
AIS2D |
提供一些交互服務用於二維顯示;提供選擇與計算尺寸的方法;管理可視化的屬性、提供方法加強可視化及可選擇機制;交互對象依賴於可視化與可選擇機制,在二維的VIEWER中來顯示對象;控制顯示及臨時屬性; |
GGraphic2d |
||
Graphic2d |
在視窗中創建二維圖像對象;每一個對象稱爲一個圖像對象,是由一些基本原件組成並在視窗中創建。每一個基本原件是一個類而且包含屬性。每一個基本原件有自己的繪製方法。視窗負責管理一組圖像對象。繪圖器負責構造。 |
|
Pre2d |
||
Select2D |
定義二維原件的基本類庫,如:點,線、圓,繼承於SensitiveEntity from SelectBasics,且用於表現二維可選對象。 |
|
V2D |
提供了一些服務,需要在窗口系統中建立一個二維的mono-view viewer視窗 |
|
TKV3d |
AIS |
應用交互服務(Application Interactive Services (AIS)),提供方法創建應用程序GUI VIEWER之間的連接,用於管理選擇與顯示。定位於建模環境、VIEW以及選擇。必須有幾種定義的不同的可選擇、可顯示的對象。必須也是可交互的,也就是說,連接基本參考幾何與圖像顯示;這些實體被稱爲交互對象,被分成以下四種類型:the Datum\the Relation\ the Object\ None。 the Datum:元素的構造如:線,圓、點、trihedra, plane trihedra、平面、軸線等(tri---三,hedra—多面體,異面體)。 the Relation:由一個或者多個交互形狀與相應的幾何關係的約束構成; the Object:包括拓撲形狀以及幾何之間的連接 None:爲了不排除對象,告訴應用程序,更深入分析,直到在其產生的對象(in its generation)中找到一個可接受的對象定義 |
DsgPrs |
尺寸、關係及三面體的顯示工具。 |
|
Graphic3d |
在視窗中創建三維圖像對象;這些對象稱爲結構,由一組原件及屬性組成。這個組是一個最小的可編輯的結構元素。這個結構可被顯示、擦出、高亮。可以對它應用變換。結構通過變換來構成,並連接形成一個繼承體系。VIEWER可執行全局的結構操作處理。 |
|
Prs3d |
提供通用幾何及拓撲的標準顯示工具; 顯示對象; 屬性管理員控制如何顯示對象,如顏色、寬度、線的類型(generic objects); 通用算法提供默認對象的基本設置如:點,曲線、曲面、形狀等 一個根對象提供抽象的框架,對於DsgPrs包中定義的工作; |
|
PrsMgr |
提供一個低級別的服務,僅當您不使用AIS提供的服務時,才使用它。 支持一個顯示對象的圖像結構;當需要時進行重新計算(移動、改變顏色等); 定義顯示對象的顯示模式;就AIS_Shape而言,確定是否對象以(線框0、陰影1)來顯示。 每一個新的交互對象必須由它定義自己的顯示模式。 |
|
Select3D |
定義標準的三維原件如:點,曲線,面 在二維圖像選擇空間中the bounding boxes的復原。 三維-二維的投影器 |
|
SelectMgr |
提供一個低級服務,僅當您不使用AIS提供的服務時,才使用(SelectMgr_SelectionManager and SelectMgr_ViewerSelector)。 它通過以下服務來管理進程的動態選擇: 激活與關閉交互對象選擇模式; 添加與移除視察選擇器; 定義抽象的過濾類; |
|
StdPrs |
提供對特殊幾何及拓撲的標準顯示工具;這些類是特殊幾何及拓撲,在務種顯示模式下顯示的定義,如:線框、陰影、去隱藏線等; |
|
StdSelect |
定義拓撲幾何的選擇方式;定義幾種過濾類;二維與三維的視窗選擇器(viewer selectors)。 |
|
V3d |
包含了一組三維顯示(3D Viewer)的命令與服務。控制場景及顯示模式。這個包與Visual3D是互補的。 |
|
Visual3d |
提供一組對三維視窗需要實現指令的類,視窗來管理場景和光源。 |
|
Voxel |
- Services Common to 2D and 3D通用二維與三維服務:該庫提供了通用的二維與三維數據結構並分別通過不同的Viewer去處理。
3D Graphics:
運行在OPENGL圖像平臺的基礎上;
支持對圖元(折線、帶孔或無孔的平面多邊形、文本以及標誌控制屬性:顏色、透明度、反射、線型、線寬、字體等)進行三維操作,這些圖元可以在三維視圖中進行顯示、綻放、旋轉等操作;
2D Graphics:
支持對圖元(直線、線段、折線、文本以及標誌控制屬性:顏色、線型、線寬、字體等)進行二維操作,這些圖元可以在二維視圖中進行顯示、綻放、旋轉等操作;
以PostScript, HPGL2, and CGM格式輸出,同時也支持xwd,gif,bmp格式的圖片。
在二維,OCC提供了完整的國際化,中文與日文的字符文本均可以在繪圖儀上輸入輸出打印。
- 3D Visualization 三維可視化類庫提供了3D選擇的數據結構及3D顯示的數據結構;通過AIS(Application Interactive Services)提供三維的顯示與選擇;該包是一個高級接口,封裝了底層的顯示選擇服務;AIS擴展了標準3D選擇屬性、顯示管理以及顯示屬性的基礎功能,並在GUI Viewer中進行管理;主要包括有:
l 交互上下文:
引導實體的選取和可視化的中央控制單元就是交互環境;
AIS有兩種可操作環境模式;默認中性點(neutral point)類型很容易可視化及選擇實體交互對象,這些對象都裝載在AIS的上下文中;打開當前環境的方式是爲臨時選取作準備的,這樣做就不會干擾在Neutral Point中的選取了。
l 交互對象:
在AIS Viewer中可顯示、可選擇的對象稱之爲實體對象,是基本幾何模型與AIS圖形顯示的橋樑,可以使用OCC已經實現的預定義的標準交互對象的功能函數,也可以自己實現一套交互對象,我們只需要遵守一定的規定和協議就可以利用它來執行自定義的交互對象類。
l 圖形屬性管理器:
圖形屬性管理器,或AIS畫圖引擎,存儲具體交互對象或受交互環境控制的交互對象的圖形屬性。
交互對象本身來說好像就是具體的圖形屬性(如可視化模式、色彩、材質等),交互環境中有一個繪圖器drawer在默認狀態下是有效的,用它來對對象的進行控制。當交互對象被可視化時,圖形屬性就會要求自身的繪圖器來檢查在當前環境下是否有效。
l 選擇過濾器:
在選取操作時對需要選取的實體進行過濾是非常必要的,可以對選擇過濾器的動態檢測環境進行擴展、完善,以達到想要實現的效果。也可以自己編寫過濾器並裝載到交互環境中。
- 2D Visualization 提供二維顯示數據結構及二維選擇數據結構。
1.5 Data Exchange
使用OCC作爲應用程序的基礎,同時使用其它的CAD系統,數據交換在其中扮演重要角色。它是具有多層軟件環境的開源技術,處理外部數據並有良好的集成。它涵蓋了基於OCC應用程序的交換的需要,並不拘於外部數據質量或要求。數據交換是以模塊化的方式組織的,如下所述:
OCC提供連接器(工具),在基於OCC的應用軟件數據轉換成其它各種CAD軟件的數據,保持數據有良好的互通性。
交換功能是依據各種不同的CAD或PDM等軟件包所使用的標準(IGES, STEP),或通過專有格式直接連接處理,或調用run-time 庫訪問外部數據。
利用國際標準,把CAD 系統中的模型通過各自的數據轉換接口將其內部的模型數據信息轉換爲符合所選標準的中性文檔描述文件,然後通過系統的數據轉換接口把這些中性文檔的數據讀入系統。因此只要異構的CAD 系統支持同一種數據交換標準,就可以實現異構CAD 系統之間通過本平臺進行協同。
數據交換模型
Open CASCADE 數據交換模塊提供了大多數標準三維CAD 模型格式的讀寫工具類,包括STEP、IGES、BREP等。
項目 |
目錄名 |
功能描述 |
BinXCAFPlugin |
||
TKBinXCAF |
||
TKIGES |
IGES組件讀取IGES文件並轉換到OCC模型。目前支IGES 5.3版本, 轉換涉及到一個實體、一組實體或整個文件。 轉換之前,需要設置一組參數去管理轉換進程。 也可以在轉換之前,檢查文件的一致性。 同時也支持把OCC模型轉換到IGES文件。其它的數據類型如:顏色與名稱可以通過獨立的工具(IGESCAFControl_Reader and IGESCAFControl_Writer)來進行讀寫。 一個IGES模型是已經被加載到內存的IGES文件; 一個IGES實體就是在IGES (IGES normal sense)中的一個實體; 一個根實體就是任何已給出類型的最高級別實體(如:type 144 for surfaces and type 186 for solids. Roots are not referenced by other entities) |
|
TKSTEP |
STEP組件可以通過STEP應用協議214(類似與版本)讀取STEP文件,轉換到OCC模型。同時也支持STEP203。 基礎轉換器可讀寫幾何、拓撲STEP數據以及組配結構。 轉換涉及到一個實體、一組實體或整個文件; 其它數據類型如:顏色、驗證屬性、層、名稱以及結構的組配可通過獨立的工具(STEPCAFControl_Reader and STEPCAFControl_Writer)進行讀寫。 STEP組件也可以轉換OCC模型到STEP文件。 該組件遵循STEP 應用協議214-2級生成STEP文件。當輸出一個STEP格式時,需要選擇轉換模式,可通過STEPControl_STEPModelType來實現。 一個STEP模型是已經被加載到內存的STEP文件; 所有對形狀的引用都指OCC形狀,除非有其它明確的說明; 一個根實體就是任何已給出類型的最高級別實體(如:an entity that is not referenced by any other one) |
|
TKSTEP209 |
||
TKSTEPAttr |
||
TKSTEPBase |
||
TKSTL |
STL組件轉換OCC形狀到STL文件,STL廣泛使用於快速原型。 STL文件僅包括:通過網格結構描述實體(Solids)、寫OCC形狀必須是實體(Solids),實體的部分或者一個正確定位的封閉的殼。 面集合或者未封閉的殼可能也可以轉換成STL格式,但可視化時或許會有錯誤的! |
|
TKVRML |
||
TKXCAF |
||
TKXCAFSchema |
||
TKXDEIGES |
Extended data exchange (xde):擴展數據交換:它允許你修改交換的範圍,作爲增加了幾何(“BREP”)數據,從而提高了與外部軟件的互通性。 |
|
TKXDESTEP |
||
TKXmlXCAF |
||
TKXSBase |
||
XCAFPlugin |
||
XmlXCAFPlugin |
- Standardized Data Exchange:標準化的數據交換
標準化的數據包括:STEP、IGES、STL、VRML
- Proprietary Data Exchange:專用的數據交換
連接器(可選作爲獨立的組件)提供與其它的CAD軟件數據進行直接映射和數據適配(利用幾何復原):
- l Euclid-3
- l Catia
- l ACIS
- l Parasolid
- l DXF
此連接器同STEP及IGES的數據交換具有相同的架構。
IGES:基本圖形交換規範(The Initial Graphics Exchange Specification),1980年美國國家標準局(NBS)主持成立了由波音公司和通用電氣公司參加的技術委員會,制訂了基本圖形交換規範IGES,並於1981年正式成爲美國國家標準。作爲較早頒佈的標準,IGES被許多CAD/CAM系統接受,成爲應用最廣泛的數據交換標準。
STEP:產品模型數據交換標準(STandard Exchange of Product data model),1988年ISO制定的描述整個產品生命週期內產品信息的標準,它提供了一種不依賴具體系統的中性機制,旨在實現產品數據的交換和共享。這種描述的性質使得它不僅適合於交換文件,也適合於作爲執行和分享產品數據庫和存檔的基礎。發達國家已經把STEP標準推向了工業應用。它的應用顯著降低了產品生命週期內的信息交換成本,提高了產品研發效率,成爲製造業進行國際合作、參與國際競爭的重要基礎標準,是保持企業競爭力的重要工具。
STL := STL文件,一種3D模型文件格式STL(STereo Lithography的縮寫)
STL 文件格式是由3D SYSTEM 公司於1988 年制定的一個接口協議,是一種爲快速原型製造技術服務的三維圖形文件格式。STL 文件由多個三角形面片的定義組成,每個三角形面片的定義包括三角形各個定點的三維座標及三角形面片的法矢量。三角形頂點的排列順序遵循右手法則。 STL 文件有2 種類型:ASC域格式和二進制格式ASC域格式。 STL模型是以三角形集合來表示物體外輪廓形狀的幾何模型。
VRML:(Virtual Reality Modeling Language)即虛擬現實建模語言。是一種用於建立真實世界的場景模型或人們虛構的三維世界的場景建模語言,也具有平臺無關性。是目前Internet上基於 WWW的三維互動網站製作的主流語言。 VRML是虛擬現實造型語言(Virtual Reality Modeling Language)的簡稱,本質上是一種面向web,面向對象的三維造型語言,而且它是一種解釋性語言。VRML的對象稱爲結點,子結點的集合可以構成複雜的景物。結點可以通過實例得到複用,對它們賦以名字,進行定義後,即可建立動態的VR(虛擬世界)。
1.6 Application framework應用框架(OCAF):
OCAF( Open CASCADE Application Framework),Open CASCADE 不僅爲用戶提供了三維建模、幾何體複雜運算、可視化模塊等相關類庫,還爲用戶提供了OCAF,OCAF提供了一個結構化的解決方案和應用數據處理,是一種內HE級的管理 ,它是一種基於Open CASCADE 的RAD(Rapid Application Development,快速開發工具)框架,爲用戶(即開發人員)提供了一個快速開發的手段。
OCAF 對於Open CASCADE 是一個的輔助工具,在算法、拓撲或幾何建模的過程中,OCAF 能處理這些類庫中的任何數據和算法,這個框架還可以用於組織、保存應用數據。通過使用OCAF,應用程序設計者可以專注於功能以及某些特別的算法, 值得一提的是實現“ 撤銷/ 重做(Undo-Redo)”命令以及“保存應用程序數據”命令,避免了很多底層建模的問題。
應用程序框架就是使用一個關聯(相關性)引擎,簡化對CAD應用系統的開發。
- 通過屬性機制處理應用程序數據;
- 依據開發的需要來組織屬性;
- 由應用程序來進行多文檔管理;
- 對於CAD/CAM應用程序,已實現、可使用的通用的數據結構屬性;
- 數據存儲服務;
- 已實現撤銷/重做功能;
通過使用OCAF,它來處理應用程序結構,應用程序設計者可以專注於特定應用數據的處理及GUIS的開發工作。
OCAF與其它CAD框架不同就在於應用數據的組織。在OCAF中,數據結構不是shape-driven .而是reference-key driven.在這種方法中,如幾何數據、顏色、材料等屬性都附加於更深的結構不變的模型上。OCAF負責把這些屬性組織、嵌入文檔。
OCAF文檔由OCAF的應用程序來管理。
數據存儲服務:
通常來講,OCC提供的所有數據結構都是一種運行時結構,換句話說,是一種短暫的不穩定的數據,只有在應用程序運行時才存在並不進行永久存儲。但,數據存儲模塊具有存儲數據到存儲設備上的功能,即持久化數據。數據存儲服務提供持久化數據的類庫和轉換功能,就是爲了把短暫不穩定的數據轉換成永久的數據。