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