基于.NET在AutoCAD中实现管点符号的快速绘制
2017-03-01刘旭刘阳李进强袁清涛
刘旭,刘阳,李进强,袁清涛
(1.正元地理信息有限责任公司,北京 101300; 2.日照市城市建设投资集团有限公司,山东 日照 276800)
基于.NET在AutoCAD中实现管点符号的快速绘制
刘旭1*,刘阳2,李进强1,袁清涛1
(1.正元地理信息有限责任公司,北京 101300; 2.日照市城市建设投资集团有限公司,山东 日照 276800)
在地下管线信息化建设中,管线数据的处理以及更新在管线的管理和运营起到重要的作用,目前这项工作通常是在AutoCAD中二次开发相应的数据处理功能来操作,本文作者结合实际经验,在AutoCAD中采用.NET开发了管线数据处理与更新系统,其中对于管线编辑模块中的添加管点这一功能的设计、实现做了详细介绍。
.Net;AutoCAD;二次开发;地下管线;管点
1 引 言
地下管线是保障城市正常运行的重要基础设施,随着城市功能的调整和城市建设的迅速发展,地下管线日益错综复杂,管线信息更新频繁,其管理难度也在不断增大。近年来,国家对城市管线的重视力度逐步加深,2013年9月出台的《国务院关于加强城市基础设施建设的意见》[1]强调应“坚持先地下、后地上”、“在普查的基础上,整合城市管网信息资源,消除市政地下管网安全隐患。建立城市基础设施电子档案,实现设市城市数字城管平台全覆盖。提升城市管理标准化、信息化、精细化水平,提升数字城管系统,推进城市管理向服务群众生活转变,促进城市防灾减灾综合能力和节能减排功能提升”。
在这样的政策环境下,各地市都开展地下管线普查工作,并建立相应的管线信息管理系统来提高地下管线管理水平。在管线信息管理系统中一般包括管线数据处理CAD系统、管线数据管理系统(CS)、管线综合应用系统(BS)以及管线数据共享交换系统。而综合管线信息化的基础问题和核心问题就是管线数据问题,要把综合管线数据的建库工作放到重中之重的位置,目前这项工作目前大多数在AutoCAD中开发相应的功能来处理。
2 系统实现
作者结合工作实际经验,采用.NET技术,在AutoCAD 2010版本中开发了管线数据处理与更新系统。其功能包括数据录入(可将外业采集的管线数据手图、手簿等直接录入,并提供与其他格式数据的转换接口)、管线成图(通过查看生成的管线图,检查管线连接关系、管线点及属性是否正确)、管线编辑(实现管点、管线的快速添加、修改属性)、检查处理(规范性检查,空间属性合理性检查,属性关系合理性检查等,检查结果可在数据库和图形上定位显示并直接修改)、查询统计(条件统计、图幅数统计及结果输出)、成果输出(可生成各种样式的综合管线图、专业管线图等图件,成果表输出,成果数据库输出)等功能。系统功能菜单及主界面如图1所示。
图1 系统菜单主界面
2.1 添加管点
在此系统中,管线编辑是一个重要的模块,用户可以实现添加管点、添加管线、管线信息修改、删除管线等相应操作。在管线编辑模块添加管点功能,用户可以在CAD中指定位置添加指定类别的管线点,录入相关信息后保存到mdb数据库中,实现“可见即可得”的建库思路。
2.2 设计思路
地下管线一般分为给水、排水、电信、热力、工业[2]等大类,每个大类还分为小类,如排水管线分为雨水、污水、雨污合流,给水管线分为饮用水和非饮用水小类。在实现添加管点功能时我们按照以下流程,操作流程如图2所示。
图2 绘制管点流程
(1)在添加管点时可以快速选择对应大类下小类指定的管线点,可以通过管线大类、管线小类选择对应的管线点添加。
(2)选择对应类别的管线后可以显示相应CAD的图块符号,能够直观地显示给用户。
(3)选定管点符号后,需要在CAD窗口中指定位置放置,采用JIG(即时绘图)技术来实现插入图块的交互操作。
(4)插入管点图块符号后,自动填写管点类别、坐标等信息,弹窗属性窗体面板录入相关属性。
(5)录入属性后添加一条管点信息到mdb数据库相应的管点表中,同时将管点物探编号等信息写入管点XDATA扩展数据信息中,实现管点符号与数据库中记录的关联。
2.3 具体实现
(1)符号面板
在管点符号绘制中,为了方便使用,我们采用CAD提供的面板形式,首先读取系统配置表信息获取管线所有的大类分类,将大类下所有小类的管点符号放在同一面板中,最后将所有的管类添加到一个面板组中。对于每一大类分类通过读取配置获取对应的小类信息,以下拉列表的形式显示所有小类,选定管线大类、小类后通过读取配置符号信息,加载对应的图块缩略图显示。这样用户可以快速的选择管线大类、小类来添加指定的管点符号。
//显示绘制管点面板
PaletteSet psAddPoint=new Autodesk.AutoCAD.Windows.PaletteSet("管点绘制");
//读取配置管类信息,每一管类定义一个面板容器
for (int i=0;i < pipeClassInfoList.Count;i++)
{
UcAddPoint myuc=new UcAddPoint(symbolInfoList,pipeInfoList,pipeClassInfoList[i].PIPECLASS);
psAddPoint.Add(pipeClassInfoList[i].CLASSNAME,myuc);
}
//显示面板属性
psAddPoint.Size=new System.Drawing.Size(200,600);
psAddPoint.Dock=Autodesk.AutoCAD.Windows.DockSides.Left;
psAddPoint.Visible=true;
加载面板后显示效果如图3所示,点击面板右侧选项卡实现管线大类的切换,选择管线小类的下拉列表,可以实现管点小类的符号切换。
图3 管点添加面板
(2)添加管点
在CAD中我们采用图块符号来表示管点,为了实现快速插入管点,我们将所有的图块定义存放在一个CAD模板文件中(dwt文件),在系统启动时自动加载dwt模板文件,这样我们所有的块定义在CAD中都已经存在,无需再插入外部文件来定义块,可显著提高效率。
当用户选择指定的管点符号后,点击面板相应图标,根据配置获取对应的管点块符号名称。在CAD中插入管点符号时,为了提高用户体验,采用JIG(Just in Time Graphic即时绘制)技术,用户在鼠标移动的过程中,即可实现管点图块的动态预览,方便用户现在指定的位置放置,增强用户交互操作。
//锁定CAD文档
using (docCur.LockDocument())
{
//打开事务
using (Transaction ta=db.TransactionManager.StartTransaction())
{
BlockTable bt=(BlockTable)ta.GetObject(db.BlockTableId,OpenMode.ForRead);
blkref=new BlockReference(ptInser,bt[blkName]);
//采用JIG即时显示技术实现插入图块
PromptResult ptres=ed.Drag(this);
if (ptres.Status != PromptStatus.OK)
{
return;
}
}
}
//JIG 更新
protected override bool WorldDraw(Autodesk.AutoCAD.GraphicsInterface.WorldDraw draw)
{
draw.Geometry.Draw(blkref);
return true;
}
//JIG 重采样
protected override SamplerStatus Sampler(JigPrompts prompts)
{
JigPromptPointOptions ptops=new JigPromptPointOptions(" 请指定块符号位置");
PromptPointResult ptres=prompts.AcquirePoint(ptops);
Point3d ptTemp=ptres.Value;
if (ptTemp != ptInser)
{
ptInser=ptTemp;
blkref.Position=ptInser;
return SamplerStatus.OK;
}
else
{
return SamplerStatus.NoChange;
}
}
(3)录入属性
在CAD窗口指定管点图块位置后,弹窗属性录入窗体如图4所示,可自动填写管线大类、小类、坐标X,坐标Y等信息,用户录入其他相关信息保存后插入到mdb数据库中,为了实现CAD图形中管点符号与数据库中记录的关联,将管点物探点号写入图块XDATA扩展数据中。
using (Transaction ta=db.TransactionManager.StartTransaction())
{
RegAppTable rat=(RegAppTable)ta.GetObject(db.RegAppTableId,OpenMode.ForRead);
if (rat.Has(regAppName) == false)
{
rat.UpgradeOpen();
RegAppTableRecord ratr=new RegAppTableRecord();
ratr.Name=regAppName;
rat.Add(ratr);
ta.AddNewlyCreatedDBObject(ratr,true);
ta.Commit();
}
}
图4 属性录入窗体
2.4 管线绘制
在地下管线数据成图显示中,分为管点和管线两类要素,在AutoCAD中一般管点采用图块要素进行显示,管线采用直线要素进行显示。对于不同管类的管线,在管线绘制时需要采用不同的图层、颜色、线型、线宽。对于CAD中管线的成图,可以预先定制线型文件,AutoCAD启动时预先加载到模板文件中,读取管线符号的配置信息可以快速设置不同的图层、颜色、线型以及线宽。
3 结 论
AutoCAD二次开发的方式很多,采用.NET开发方式已成为一种趋势。本文着重研究了在AutoCAD中采用.NET实现管点添加功能,作者采用面板技术,图形化窗体显示相应的管点样式,可快速、方便、灵活的供用户使用,在各管线CAD相关系统中有推广价值。
[1] 国务院. 关于加强城市基础设施建设的意见[R]. 北京:2013.
[2] CH/T 1037-2015. 管线信息系统建设技术规范[S].
[3] 余承飞,方勇. AutoCAD 2000二次开发技术 [M]. 北京:人民邮电出版社,1999.
[4] 梁雪春,宋德明. AutoCAD 2002二次开发技术指南[M]. 北京:清华大学出版社,2001.
[5] 李冠忆. 深入浅出AutoCAD.NET二次开发[M]. 北京:中国建筑工业出版社,2012.
[6] 刘旭,陶为翔. AutoCAD.NET的Jig技术在管线扯旗标注中的应用[J]. 测绘与空间地理信息,2015(7):196~198.
[7] 杨小兵. 利用ObjectARX开发小型地下管线信息管理系统[J]. 城市勘测,2010(4):74-76.
[8] 侯金波,潘喜峰,李奕洁等. 管线探测内业图库一体化成图的应用研究[J]. 城市勘测,2015(2):74~77.
Fast Drawing of Pipe Point Based on .NET in AutoCAD
Liu Xu1,Liu Yang2,Li Jinqiang1,Yuan Qingtao1
(1.Zhengyuan Geomatics Co.,Ltd,Beijing 101300,China; 2.Rizhao City Construction Investment Group Co.,Ltd,Rizhao 276800,China)
In the informatization construction of underground pipeline,pipeline data handling,and update the management and operation play an important role in pipeline,the work is now in general secondary development in AutoCAD to operate the corresponding data processing function,this paper combined with practical experience,the author used in AutoCAD .NET development pipeline data processing and update the system,including to add tube point in the line edit module the function design,implementation,made a detailed introduction.
.Net;AutoCAD;secondary development;underground pipeline;pipepoint
1672-8262(2017)01-115-04
P209
B
2016—08—15 作者简介:刘旭(1985—),男,助理工程师,主要从事智慧管网方向的研发工作。