基于Remoting的CATIA集成技術研究
2013-05-20 by:廣州有限元分析、培訓中心-1CAE.COM 來源:仿真在線
PDM的基礎與核心是數(shù)據(jù)管理。在以往的PDM的開發(fā)與實施中,CAD/CAM數(shù)據(jù)的集成管理問題往往是決定PDM成功的關鍵要素之一,而BOM數(shù)據(jù)的有效管理更是PDM的基礎之基礎。本文分析了基于Remoting的數(shù)據(jù)傳輸?shù)膬?yōu)勢,介紹利用CATIA V5 AUTOMATION獲取CATIA V5零部件BOM信息,開發(fā)實用軟件的具體方法和思路,提出了基于Remoting的CATIA V5 與PDM系統(tǒng)BOM數(shù)據(jù)傳輸方法,并開發(fā)出實用程序。本方法同樣適用于CATIA V5與ERP、CAPP等應用系統(tǒng)的信息交換。
范亮宇 崔亮 葉強 來源:e-works
關鍵字:CATIA CAD Remoting
1.基于Remoting的數(shù)據(jù)傳輸技術
1.1Remoting的優(yōu)勢
一種基于.net的高效的分布式處理方式
Remoting,簡而言之是一種分布式處理方式。從微軟的產(chǎn)品角度來看,可以說Remoting就是DCOM的一種升級,它改善了很多功能,并極好的融合到.Net平臺下。Microsoft .NET Remoting 提供了一種允許對象通過應用程序域與另一對象進行交互的框架。這也正是我們使用Remoting的原因。為什么呢?在Windows操作系統(tǒng)中,是將應用程序分離為單獨的進程。這個進程形成了應用程序代碼和數(shù)據(jù)周圍的一道邊界。如果不采用進程間通信(RPC)機制,則在一個進程中執(zhí)行的代碼就不能訪問另一進程。這是一種操作系統(tǒng)對應用程序的保護機制。然而在某些情況下,我們需要跨過應用程序域,與另外的應用程序域進行通信,即穿越邊界。
實現(xiàn)通信方式
在Remoting中是通過通道(channel)來實現(xiàn)兩個應用程序域之間對象的通信的。首先,客戶端通過Remoting,訪問通道以獲得服務端對象,再通過代理解析為客戶端對象。這就提供一種可能性,即以服務的方式來發(fā)布服務器對象。遠程對象代碼可以運行在服務器上(如服務器激活的對象和客戶端激活的對象),然后客戶端再通過Remoting連接服務器,獲得該服務對象并通過序列化在客戶端運行。
Remoting的兩種通道
Remoting的通道主要有兩種:Tcp和Http。在.Net中,System.Runtime.Remoting.Channel中定義了IChannel接口。IChannel接口包括了TcpChannel通道類型和Http通道類型。它們分別對應Remoting通道的這兩種類型。
TcpChannel類型放在名字空間System.Runtime.Remoting.Channel.Tcp中。Tcp通道提供了基于Socket 的傳輸工具,使用Tcp協(xié)議來跨越Remoting邊界傳輸序列化的消息流。TcpChannel類型默認使用二進制格式序列化消息對象,因此它具有更高的傳輸性能。HttpChannel類型放在名字空間System.Runtime.Remoting.Channel.Http中。它提供了一種使用 Http協(xié)議,使其能在Internet上穿越防火墻傳輸序列化消息流。默認情況下,HttpChannel類型使用Soap格式序列化消息對象,因此它具有更好的互操作性。通常在局域網(wǎng)內,我們更多地使用TcpChannel;如果要穿越防火墻,則使用HttpChannel。
1.2基于Remoting的應用間數(shù)據(jù)傳遞
現(xiàn)代企業(yè)中的應用往往是多種多樣的,由于多種原因,企業(yè)應用的軟硬件、技術平臺也很難同一。應用間數(shù)據(jù)傳輸不可避免。以CATIA與UGS的PDM產(chǎn)品Teamcenter集成為例,如下圖所示:
2.開發(fā)工具、設計方法與思路
CATIA V5 是法國達索公司與IBM公司開發(fā)的新一代CAD/CAM產(chǎn)品。它采用了全新的、基于組件的開放式體系結構(Open Architecture Products)。CATIA V5采用大量的先進工業(yè)標準;應用了許多現(xiàn)代軟件工程思想,整個體系結構雖然十分龐大,但結構清晰、合理。維護、開發(fā)、擴展方便。有著相當優(yōu)良的擴展性能。它開放的組件應用架構允許更多的第三方供應商針對用戶的需要特別定制的應用解決方案。提供COM/DCOM接口支持基于AUTOMATION的開發(fā)。
DS的CAA組件應用架構(Component Application Architecture)組件應用架構,是Dassault Systemes產(chǎn)品及二次開發(fā)的基礎架構。所有的DS產(chǎn)品均構建之上。并通過PPR HUB 將其它不同用途的DS產(chǎn)品如ENOVIA、DELMIA等連接起來。PPR HUB是CAA的基礎,是一種“軟件總線標準”,凡是架構其上的產(chǎn)品均可互通信息,方便用戶構建從方案設計、工程設計、工藝分析、知識工程、模擬分析到PLM、SCM、ERP的全生命周期、全方面的應用。
CAA AUTOMATION 使用標準的COM/DCOM開發(fā)技術,支持從腳本到VB、VC、DELPHI等通用開發(fā)工具。無需專用開發(fā)工具和專門技術,開發(fā)技術簡單。CAA AUTOMATION提供了強大的開發(fā)接口,并且還在加強中。與CAA C++相比其功能覆蓋超過80%,且都是最常用的功能。實際上除幾何接口和某些應用外大部分CAA C++二次開發(fā)應用均可由CAA AUTOMATION開發(fā)且運行效率相當。是目前最常用的開發(fā)方法。
開發(fā)工具的選擇:
根據(jù)實際需要選定VB 6.0主開發(fā)工具,通過VB主程序使用COM編程技術調用CATIA V5并執(zhí)行相關的AUTOMATION操作。CATIA V5 的AUTOMATION操作主要完成要求PDM數(shù)據(jù)的計算和提取。
主要設計技術:
CATIA V5 產(chǎn)品數(shù)據(jù)的提取:
CATIA V5 產(chǎn)品數(shù)據(jù)一部分在PRODUCT對象,其它如重量、材質、密度、慣性矩等特殊技術信息可通過參數(shù)和GetTechnologicalObject方法獲得,值得注意的是材料、質量、密度要賦材質后才可取得。特別注意的是對于PART類型,PRODUCT屬性要通過ReferenceProduct獲得。
程序例子:
Set oManager = AssDoc.Product.GetItem("CATMatManagerVBExt")
Set AssDoc = CATIA.ActiveDocument
/*求材料名稱:
Set oManager = AssDoc.Product.GetItem("CATMatManagerVBExt")
oManager.GetMaterialOnProduct tmpProduct, om
MsgBox om.Name
/*求子零件質量和密度:
Set oInertia = Products.Item(j).GetTechnologicalObject("Inertia")
dMass = oInertia.Mass
dDensity = oInertia.Density
如有自定義的屬性可通過Set UserProps = productRoot.UserRefProperties獲取。
在Teamcenter中的顯示:
配置方法及激活模式
根據(jù)激活模式的不同,通道類型的不同服務器端的實現(xiàn)方式也有所不同。大體上說,服務器端應分為三步:
注冊通道
要跨越應用程序域進行通信,必須實現(xiàn)通道。如前所述,Remoting提供了IChannel接口,分別包含TcpChannel和 HttpChannel兩種類型的通道。這兩種類型除了性能和序列化數(shù)據(jù)的格式不同外,實現(xiàn)的方式完全一致,因此下面我們就以TcpChannel為例。
注冊TcpChannel,首先要在項目中添加引用“System.Runtime.Remoting”,然后using名字空間: System.Runtime.Remoting.Channel.Tcp。在實例化通道對象時,將端口號作為參數(shù)傳遞。然后再調用靜態(tài)方法 RegisterChannel()來注冊該通道對象即可。
注冊遠程對象
注冊了通道后,要能激活遠程對象,必須在通道中注冊該對象。根據(jù)激活模式的不同,注冊對象的方法也不同。
對于WellKnown對象,可以通過靜態(tài)方法 RemotingConfiguration.RegisterWellKnownServiceType()來實現(xiàn),注冊對象的方法基本上和 SingleTon模式相同,只需要將枚舉參數(shù)WellKnownObjectMode改為SingleCall就可以了。
注銷通道
如果要關閉Remoting的服務,則需要注銷通道,也可以關閉對通道的監(jiān)聽。在Remoting中當我們注冊通道的時候,就自動開啟了通道的監(jiān)聽。而如果關閉了對通道的監(jiān)聽,則該通道就無法接受客戶端的請求,但通道仍然存在,如果你想再一次注冊該通道,會拋出異常。
服務器:
TcpServerChannel channel = new TcpServerChannel(8086);
ChannelServices.RegisterChannel(channel,false);
Type t = typeof(wr);
RemotingConfiguration.RegisterWellKnownServiceType(t, "hi", WellKnownObjectMode.SingleCall);
客戶端:
// TcpChannel tc = new TcpChannel();
// ChannelServices.RegisterChannel(tc);
wr obj = (wr)Activator.GetObject(typeof(wr), "tcp://192.0.0.1:8086/hi");
Response.Write(obj.write());
3.結束語
隨著CAD/CAM技術應用的深入推廣,如何應用PDM管理和使用不斷增加的數(shù)據(jù)管理日益成為企業(yè)應用面臨的問題。CATIA具有強大的自管理和開放的應用開發(fā)接口,使得企業(yè)可以靈活的根據(jù)需要設計適合的各種應用。
相關標簽搜索:基于Remoting的CATIA集成技術研究 AutoCAD培訓 AutoCAD培訓課程 AutoCAD圖紙設計 AutoCAD在線視頻 AutoCAD技術學習教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 Autoform培訓