林文锋
【摘要】电信运营商的综合资源管理系统对资源的生命周期管理逐渐前移,需要将工程阶段的资源数据纳入管理。通过在资源管理系统中集成AutoCAD技术,可以提升工程建设与网络维护之间的资源数据衔接效率,显著提高资源管理能力。
【关键词】综合资源管理系统;驻地网资源;AutoCAD
1.引言
电信运营商的综合资源管理系统大部分已完成了对全专业网络资源数据的统一管理,但目前管理的生命周期仅仅是各类资源的入网/运维以及退网阶段。在接下来的系统建设中,需要将逐步将管理的范围前移,实现对工程、设计阶段的资源数据进行管理。
驻地网资源管理是综合资源管理系统的传输专业的重要组成部分,本文主要探讨如何将驻地网工程阶段的数据纳入传输管线系统管理范围,提升工程建设与网络维护之间的资源数据衔接效率。
2.现状
根据资源生命周期,我们将资源管理划分为“规划-设计-工程-使用-维护-退网”六个阶段。在目前的工程设计阶段,驻地网资源管理一般采用AutoCAD进行设计并输出图纸。这样的处理过程有明显的缺点:
(1)不能实现设计阶段与施工维护阶段的无缝对接。
(2)资源维护人员需要在两个系统上重复录入维护同一套数据,管理效率很低。
为解决上述问题,需要对现有传输管线系统进行扩展,增加图纸设计功能。
3.实现方案
3.1 整体框架
系统整体框架是将现有传输管线系统与AutoCAD实现无缝整合,工程设计人员可以直接在传输管线系统中调用AutoCAD功能进行驻地网资源的工程设计与出图。
图1
3.2 关键技术点
本方案主要通过ActiveX Automation和AutoLisp技术实现AutoCAD的集成。
3.2.1 ActiveX Automation
ActiveX Automation是一种使Windows应用程序实现互联互通的技术,其前身是OLE Automation技术。ActiveX Automation由两部分实现:Automation Server和Automation Controller。
3.2.1.1 AutoCAD的Automation对象模型
AutoCAD的ActiveX Automation对象体系处于最高层的对象是Application应用对象,包含了AutoCAD ActiveX Automation对象所提供的全部功能。
在Application之下的是Preferences和document对象。Preferences对象等于AutoCAD的Preferences界面,用于设置与存放AutoCAD的各种系统参数。document对象表示当前在AutoCAD中处于激活状态的图形文件,通过该对象实例可以对激活的图形文件进行所有的操作。
3.2.1.2 调用AutoCAD Automation Server
以下代码为在传输管线系统中调用AutoCAD Automation Server、实现无缝整合AutoCAD功能的应用实例:
…
acadApp:=CreateOleObject(‘autocad.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;
…
//将图形对象信息写入数据库
WriteToDB;
end;
End;
3.2.1.3 AutoCAD事件处理
Automation对象除了提供大量对象方法供客户端程序调用AutoCAD Automation Server的各种功能,还提供了丰富的事件消息类型,可以让客户端捕获AutoCAD运行过程中产生的各种事件并进行相应的处理。
…
//向Automation Server注册需要接收的事件
CurrDoc.OnObjectAdded:=ObjectAdded;
//当用户在AutoCAD中手工选择的图形对象发生改变时,将会
//触发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
//从数据库读取图形对象的详细属性
GetDetailInfofromDB(
CurrDoc.PickfirstSelectionSet.Item(i). EntityName,
CurrDoc.PickfirstSelectionSet.Item(i). ObjectID);
//將详细信息展示在界面上
…
end;
end;
3.2.2 AutoLISP语言
对于某些比较特殊的操作效果(比如选定图形文件中某个图元,然后居中定位并高亮显示),Automation对象暂时还无法提供很好的实现方法,这个时候就需要使用AutoCAD本身自带的、能提供更加底层的控制功能的AutoLISP语言来实现。
图2 效果图
以下的代码实例,就是使用AutoLISP语言,根据指定的图形对象id,在图形文件中进行居中定位和高亮显示:
…
IHighlightEntity:IAcadEntity;
SelVariant,p1,p2:OleVariant;
…
//根据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发送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 定义规范的资源CAD图元
平常的CAD图纸,都用某种图元代表某种资源对象。因此,集成AutoCAD后,我们通过在传输管线系统中扩展一套规范化的资源CAD图元,并且图元拥有资源属性。
3.3.2 提供标准化的资源图纸设计界面
当使用图元进行绘图时候,通过Automation调用AutoCAD的功能,可以实现和AutoCAD一样的绘图操作功能。我们可以让图纸设计界面延续设计人员画图习惯。
3.3.3 提供资源数据到CAD图纸的转换
因为资源对象和CAD图元有了对应关系,现在可以将存量资源数据进行导出,转化为图元,生成AutoCAD图纸。
3.3.4 与工程管理流程的结合
集成了AutoCAD之后,综合资源管理系统具备了驻地网资源的“图纸在线设计”功能。以前独立于资源管理生命周期之外的工程阶段设计图纸,也能够纳入资源系统中进行管理。
4.应用效果
在传输管线系统中整合了基于AutoCAD的驻地网资源管理模块后,维护人员对驻地网资源数据的处理速度和效率得到了极大的提升,比之前需要先在AutoCAD中画图然后在传输管线系统再重复录入一遍的方式,平均提高了10~12倍。
5.结束语
通过集成AutoCAD实现对工程阶段的资源进行管理,有利于提升工程建设与网络维护之间的资源数据衔接效率,有利于加强工程建设过程管理的规范化,还有利于加强设计管理规范化。因此非常值得去尝试,让资源管理产生更大的价值。
参考文献
[1]潘爱民.COM原理与应用[M].清华大学出版社,1999.
[2]Autodesk.AutoCAD 2008帮助[M].2008.
[3]Autodesk.AutoCAD 2008开发人员帮助[M].2008.
[4]中国移动设计工程阶段网络资源数据管理规范——工程管理平台分册_V1.0[S].2013.



