AutoCAD平台下多边形边长自动标注的方法
2011-03-22解斌朱大勇郝煜
解斌,朱大勇,郝煜
(1.武汉市勘测设计研究院,湖北武汉 430022;2.天津市勘察院,天津 300191)
1 引言
AutoDesk公司的AutoCAD软件,以其杰出的图形编辑和处理能力得到了广泛应用。在应用中,常常需要结合专业情况将图形绘制功能进行扩充,仅靠Auto-CAD自身的功能,难以满足应用中对效率的需求。在笔者的工作中,常常需要对房屋分成平面示意图中的房屋边长进行标注。虽然AutoCAD提供了长度的标注功能,但是手工对每条边进行标注,不仅耗时,而且标注位置难以精确控制,也无法形成统一的标准。
本文对边长自动标注的方法进行了阐述。经该方法生成的标注满足以下几个特点:①标注垂直于所标注边长;②连续共线的多线统一标注;③所有标注到标注边长的垂距相等;④标注点位于标注边长的中心;⑤标注文字已标注点位中心居中对齐。
2 ObjectARX简介
ObjectARX是一种开发AutoCAD应用程序的工具,它以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。其主要特点如下:
(1)能对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,相比其他二次开发工具其速度更快、集成度更高、稳定性更强。
(2)ObjectARX包含的动态链接库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,使二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。
(3)ObjectARX可以按需要加载应用程序,并可以在同一水平上与Windows系统集成,甚至与其他Windows应用程序实现交互操作。
使用ObjectARX开发技术,可以创建快速、高效、紧凑的AutoCAD程序,使ARX应用程序不仅具有交互性、综合性,而且还具有智能性。应用ObjectARX技术生成的ARX应用程序充分体现了ObjectARX技术的优点,同时还可在不同的操作系统中移植。
3 算法设计及实现
(1)自动标注基本过程
第一步:手工点选待标注的闭合多边形。
第二步,计算标注点相对标注边的方向值。标注点在直线左边,则相对方向值为90°,否则取270°。
第三步:逐个标注边长。根据边的两个端点及第二步计算的标注方向值,计算标注点,并加入标记到AutoCAD的图形空间。
(2)计算标注点相对方向
标注点的相对方向,指的是标注点相对于所标注的线段的旋转角。如图1所示,闭合多边形起点为a,止点为b,p1,p2为多边形中待标注的线段。如标注在多边形外部,则相对方向为90°,反之如标注在内部,相对方向则为270°。
算法过程如下:
第一步:取闭合多边形第一点和第二点,并以其中点为基点用极坐标方法解算出与之相交90°、距离为0.5 m的标注点坐标。
第二步:取第一步计算的坐标点,判断其是否在标注多边形的内部。如该点坐标满足注记的条件,则相对方向为90°,反之取270°。
图1 标注点相对方向示意图
(3)点链的旋转与多余点的删除
在实际绘图过程中,会出现相邻多点共线的情况,这时候要求把这些共线的点合并为一条边来注记。为了简化操作,必须避免起始点和终止点以及它们的相邻点产生三点或多点共线的情况。一方面需要对多边形的点链进行旋转,务必使起始点处不出现三点及多点共线的情况。另一方面仅需保留多点共线时的端点,删除中间点。我们把前后两条边不共线的点叫做拐点。点链的旋转实际上是从起始点开始,找到第一个拐点,并以其作为点链的起始点,其操作过程只是改变点在点链中的位置。共线冗余点的删除会改变点链的大小,实现过程中为了不改变原始图形,对多边形注记时首先复制多边形点链,然后对复制的点链进行旋转和删除操作。
(4)逐边计算标注点并注记
标注点的计算采用极坐标方法,利用ObjectARX提供的API函数acutPolar来实现。其函数原型如下:
第一个参数表示基准点,第二个参数表示两点连线的方位角,第三个参数表示两点之间的距离,第四个参数表示待求点。基准点一般取线段两端点的中点,方位角取线段的方位角与相对方向之和,距离一般取注记高度的一半。
标注点计算出来后,便在标注点处插入标注。下面是具体实现的代码:
acedCommand(RTSTR,"._dimaligned",RTPOINT,pt1,RTPOINT,pt2,RTPOINT,pt3,0);
参数pt1,pt2是标注线段的两个端点,pt3是标注点坐标。acedCommand是一个API函数,其参数由一串参数类型及其值组成,并以0作为结束。如图2和图3是实际标注效果图。
图2 在房屋轮廓外标注效果图
图3 在房屋轮廓内标注效果图
4 结语
本文详细介绍了AutoCAD平台下多边形边长自动标注实现的方法,并利用VC.NET 2002和Object-ARX 2005作为开发工具,实现了该方法,给出了应用实例。通过实践表明,该方法有较强的针对性和实用性,提高了房屋分成平面示意图的生产效率。
[1] 李长勋.AutoCAD ObjectARX程序开发技术[M].北京:国防工业出版社,2005
[2] Harvey M.Deitel,Paul J.Deitel著.郭凯,蔡飞译.VC++.NET高级编程[M].北京:清华大学出版社,2004
[3] 张晋西.Visula Basic与AutoCAD二次开发[M].北京:清华大学出版社,2002
[4] 张帆.ObjectARX开发实例教程[M].北京智帆高科科技有限公司,2007
[5] Charles McAuley著.李世国,潘建忠,平雪良译.Programming AutoCAD 2000 Using ObjectARX[M].北京:机械工业出版社,2000
[6] 李冠亿.深居浅出AutoCAD二次开发开发基础.2010