林文鋒
【摘要】電信運營商的綜合資源管理系統(tǒng)對資源的生命周期管理逐漸前移,需要將工程階段的資源數(shù)據(jù)納入管理。通過在資源管理系統(tǒng)中集成AutoCAD技術(shù),可以提升工程建設(shè)與網(wǎng)絡(luò)維護之間的資源數(shù)據(jù)銜接效率,顯著提高資源管理能力。
【關(guān)鍵詞】綜合資源管理系統(tǒng);駐地網(wǎng)資源;AutoCAD
1.引言
電信運營商的綜合資源管理系統(tǒng)大部分已完成了對全專業(yè)網(wǎng)絡(luò)資源數(shù)據(jù)的統(tǒng)一管理,但目前管理的生命周期僅僅是各類資源的入網(wǎng)/運維以及退網(wǎng)階段。在接下來的系統(tǒng)建設(shè)中,需要將逐步將管理的范圍前移,實現(xiàn)對工程、設(shè)計階段的資源數(shù)據(jù)進行管理。
駐地網(wǎng)資源管理是綜合資源管理系統(tǒng)的傳輸專業(yè)的重要組成部分,本文主要探討如何將駐地網(wǎng)工程階段的數(shù)據(jù)納入傳輸管線系統(tǒng)管理范圍,提升工程建設(shè)與網(wǎng)絡(luò)維護之間的資源數(shù)據(jù)銜接效率。
2.現(xiàn)狀
根據(jù)資源生命周期,我們將資源管理劃分為“規(guī)劃-設(shè)計-工程-使用-維護-退網(wǎng)”六個階段。在目前的工程設(shè)計階段,駐地網(wǎng)資源管理一般采用AutoCAD進行設(shè)計并輸出圖紙。這樣的處理過程有明顯的缺點:
(1)不能實現(xiàn)設(shè)計階段與施工維護階段的無縫對接。
(2)資源維護人員需要在兩個系統(tǒng)上重復(fù)錄入維護同一套數(shù)據(jù),管理效率很低。
為解決上述問題,需要對現(xiàn)有傳輸管線系統(tǒng)進行擴展,增加圖紙設(shè)計功能。
3.實現(xiàn)方案
3.1 整體框架
系統(tǒng)整體框架是將現(xiàn)有傳輸管線系統(tǒng)與AutoCAD實現(xiàn)無縫整合,工程設(shè)計人員可以直接在傳輸管線系統(tǒng)中調(diào)用AutoCAD功能進行駐地網(wǎng)資源的工程設(shè)計與出圖。
圖1
3.2 關(guān)鍵技術(shù)點
本方案主要通過ActiveX Automation和AutoLisp技術(shù)實現(xiàn)AutoCAD的集成。
3.2.1 ActiveX Automation
ActiveX Automation是一種使Windows應(yīng)用程序?qū)崿F(xiàn)互聯(lián)互通的技術(shù),其前身是OLE Automation技術(shù)。ActiveX Automation由兩部分實現(xiàn):Automation Server和Automation Controller。
3.2.1.1 AutoCAD的Automation對象模型
AutoCAD的ActiveX Automation對象體系處于最高層的對象是Application應(yīng)用對象,包含了AutoCAD ActiveX Automation對象所提供的全部功能。
在Application之下的是Preferences和Document對象。Preferences對象等于AutoCAD的Preferences界面,用于設(shè)置與存放AutoCAD的各種系統(tǒng)參數(shù)。Document對象表示當前在AutoCAD中處于激活狀態(tài)的圖形文件,通過該對象實例可以對激活的圖形文件進行所有的操作。
3.2.1.2 調(diào)用AutoCAD Automation Server
以下代碼為在傳輸管線系統(tǒng)中調(diào)用AutoCAD Automation Server、實現(xiàn)無縫整合AutoCAD功能的應(yīng)用實例:
…
acadApp:=CreateOleObject(‘a(chǎn)utocad.application);
if(not VarisEmpty(acadApp)and not VarisNull(acadApp))then
begin
acadApp.Preferences.System.Single DocumentMode:=False;
Windows.SetParent(acadApp.HWND, ParentPnl.Handle);
Windows.SetWindowPos(acadApp.HWND, HWND_TOP,0,0,
ParentPnl.Width,ParentPnl.Height,SWP_NOACTIVATE);
//生成文檔對象實例并與AutoCAD的當前活動文檔建立連接
CurrDoc:=TAcadDocument.Create(nil);
…
CurrDoc.ConnectTo(IUnknown(acadApp.ActiveDocument)as IAcadDocument);
…
//遍歷當前活動文檔中的所有圖形對象
p3:=VarArrayCreate([0,2],VarDouble);
for Idx:=0 to CurrDoc.ModelSpace.Count-1 do
begin
//讀取圖形對象的類型名稱與ID、句柄HANDLE以及其他屬性
pName:=(IUnknown(CurrDoc.ModelSpace.Item(Idx))as IAcadEntity).EntityName;
pID:=inttostr((IUnknown(CurrDoc.ModelSpace.Item(Idx))as IAcadObject).ObjectID);
pHandle:=(IUnknown(CurrDoc.Model Space.Item(Idx))as IAcadObject).Handle;
//讀取圖形對象的中心點坐標
(IUnknown(CurrDoc.ModelSpace.Item (Idx))as IAcadEntity).GetBoundingBox (p1,p2);
p3[0]:=(p1[0]+p2[0])/2;
p3[1]:=(p1[1]+p2[1])/2;
p3[2]:=(p1[2]+p2[2])/2;
…
//將圖形對象信息寫入數(shù)據(jù)庫
WriteToDB;
end;
End;
3.2.1.3 AutoCAD事件處理
Automation對象除了提供大量對象方法供客戶端程序調(diào)用AutoCAD Automation Server的各種功能,還提供了豐富的事件消息類型,可以讓客戶端捕獲AutoCAD運行過程中產(chǎn)生的各種事件并進行相應(yīng)的處理。
…
//向Automation Server注冊需要接收的事件
CurrDoc.OnObjectAdded:=ObjectAdded;
//當用戶在AutoCAD中手工選擇的圖形對象發(fā)生改變時,將會
//觸發(fā)OnSelectionChanged事件
CurrDoc.OnSelectionChanged:=SelectionChanged;
CurrDoc.OnBeginDocClose:=OnBeginDocClose;
CurrDoc.ConnectTo(IUnknown(acadApp.ActiveDocument)as IAcadDocument);
…
//OnSelectionChanged事件處理過程
procedure TACADForm.SelectionChanged(Sender:TObject);
begin
…
//遍歷Document對象的選擇集,獲取在AutoCAD的當前活動
//文檔中被選中的圖形對象
fori:=0 to CurrDoc.PickfirstSelectionSet. Count-1 do
begin
//從數(shù)據(jù)庫讀取圖形對象的詳細屬性
GetDetailInfofromDB(
CurrDoc.PickfirstSelectionSet.Item(i). EntityName,
CurrDoc.PickfirstSelectionSet.Item(i). ObjectID);
//將詳細信息展示在界面上
…
end;
end;
3.2.2 AutoLISP語言
對于某些比較特殊的操作效果(比如選定圖形文件中某個圖元,然后居中定位并高亮顯示),Automation對象暫時還無法提供很好的實現(xiàn)方法,這個時候就需要使用AutoCAD本身自帶的、能提供更加底層的控制功能的AutoLISP語言來實現(xiàn)。
圖2 效果圖
以下的代碼實例,就是使用AutoLISP語言,根據(jù)指定的圖形對象id,在圖形文件中進行居中定位和高亮顯示:
…
IHighlightEntity:IAcadEntity;
SelVariant,p1,p2:OleVariant;
…
//根據(jù)ID獲取圖形對象
IHighlightEntity:=CurrDoc.ObjectIDTo Object(iObjectID)as IAcadEntity;
//定位并縮放,將所選的圖形對象置于屏幕中心
IHighlightEntity.GetBoundingBox(p1,p2);
p1[0]:=p1[0]-50;
p1[1]:=p1[1]-50;
p2[0]:=p2[0]+50;
p2[1]:=p2[1]+50;
acadApp.ZoomWindow(p1,p2);
//向AutoCAD發(fā)送AutoLISP指令,將選中的對象高亮顯示
CurrDoc.SendCommand(‘(setq ourset nil)(setq e1(handent”
+IUnknown(IHighlightEntity as IAcad Object).Handle
+”))(setq ourset(ssadd e1))(sssetfirst nil ourset)+#13);
…
3.3 集成方案
3.3.1 定義規(guī)范的資源CAD圖元
平常的CAD圖紙,都用某種圖元代表某種資源對象。因此,集成AutoCAD后,我們通過在傳輸管線系統(tǒng)中擴展一套規(guī)范化的資源CAD圖元,并且圖元擁有資源屬性。
3.3.2 提供標準化的資源圖紙設(shè)計界面
當使用圖元進行繪圖時候,通過Automation調(diào)用AutoCAD的功能,可以實現(xiàn)和AutoCAD一樣的繪圖操作功能。我們可以讓圖紙設(shè)計界面延續(xù)設(shè)計人員畫圖習(xí)慣。
3.3.3 提供資源數(shù)據(jù)到CAD圖紙的轉(zhuǎn)換
因為資源對象和CAD圖元有了對應(yīng)關(guān)系,現(xiàn)在可以將存量資源數(shù)據(jù)進行導(dǎo)出,轉(zhuǎn)化為圖元,生成AutoCAD圖紙。
3.3.4 與工程管理流程的結(jié)合
集成了AutoCAD之后,綜合資源管理系統(tǒng)具備了駐地網(wǎng)資源的“圖紙在線設(shè)計”功能。以前獨立于資源管理生命周期之外的工程階段設(shè)計圖紙,也能夠納入資源系統(tǒng)中進行管理。
4.應(yīng)用效果
在傳輸管線系統(tǒng)中整合了基于AutoCAD的駐地網(wǎng)資源管理模塊后,維護人員對駐地網(wǎng)資源數(shù)據(jù)的處理速度和效率得到了極大的提升,比之前需要先在AutoCAD中畫圖然后在傳輸管線系統(tǒng)再重復(fù)錄入一遍的方式,平均提高了10~12倍。
5.結(jié)束語
通過集成AutoCAD實現(xiàn)對工程階段的資源進行管理,有利于提升工程建設(shè)與網(wǎng)絡(luò)維護之間的資源數(shù)據(jù)銜接效率,有利于加強工程建設(shè)過程管理的規(guī)范化,還有利于加強設(shè)計管理規(guī)范化。因此非常值得去嘗試,讓資源管理產(chǎn)生更大的價值。
參考文獻
[1]潘愛民.COM原理與應(yīng)用[M].清華大學(xué)出版社,1999.
[2]Autodesk.AutoCAD 2008幫助[M].2008.
[3]Autodesk.AutoCAD 2008開發(fā)人員幫助[M].2008.
[4]中國移動設(shè)計工程階段網(wǎng)絡(luò)資源數(shù)據(jù)管理規(guī)范——工程管理平臺分冊_V1.0[S].2013.