【word】 应用ObjectARX实现CAD图形的自动分幅

上传人:仙*** 文档编号:31793666 上传时间:2021-10-12 格式:DOC 页数:7 大小:28KB
返回 下载 相关 举报
【word】 应用ObjectARX实现CAD图形的自动分幅_第1页
第1页 / 共7页
【word】 应用ObjectARX实现CAD图形的自动分幅_第2页
第2页 / 共7页
【word】 应用ObjectARX实现CAD图形的自动分幅_第3页
第3页 / 共7页
点击查看更多>>
资源描述
应用ObjectARX实现CAD图形的自动分幅应用ObjectARX实现CAD图形的自动分幅郑睿博周荣福徐海林许保瑞江彬(中国矿业大学资源学院江苏徐州221008)科学论坛啊I摘要本文利用成熟,高效的AutoCAD二次开发工具ObJectARX开发了一个窗口剪切程序,实现了CAD图形的自动分幅.该工具在AutoCAD中注册为外部函数命令,可直接在AutoCAD中调用,提高了工作效率以及准确率.关键词分幅二次开发ObjectARXCAD中图分类号:P209文献标识码:A文章编号:i009914X(2010)130l1I一011基本思路CAD图形自动分幅功能的实现需要解决以下2个主要问题:a图形自动剪切功能的实现:b为完成剪切的图形加图框,存盘保存.图形自动剪切功能的实现是CAD图形自动分幅程序的核心.被裁剪实体分为曲线实体,填充实体,文本,块等.因此,针对不同实体的特性,可以利用AutoCADObjectARX开发工具提供的不同的功能函数,对实体采取分别裁剪的方法.2程序的基本模块及实现21剪切曲线实体该部分分为求出剪切边界和被裁曲线实体的交点,交点排序和裁剪三步.如果被裁线段的起点在窗口外部,则需要删除线段的奇数段,相反则需要删除线段的偶数段.(1)窗口边界对开环实体进行裁剪开环实体主要指直线段和圆弧,下面给出它们和窗口边界的求交方法的部分代码:intCrossPtsNum,n:/交点数adsnamewindowent,ent:/分别代表窗口边界实体和被裁线段实体AcDbEntitypWindowent,pent:/窗口边界实体和被裁线段实体指针AeDbObjectIdpWindowentId,pentId:AeGePoint3dArraypoints:/=2维点数组pointspWindowent=selectEntity(pWindowentId,windowent,AeDb:kForRead):/将adsname数据类型转化为对象指针pent=selectEntity(pentId,ent,AcDb:kForRead):pent一>intersectWith(fpWindowent,AcDb:kOnBothOperands,points,0):/pent指向的实体和pWindowent指向的窗口边界实体进行求交CrossPtsNum=points.1ength():/计算交点的数量CrossPtsNum调用AntoCADObjectARX提供的实体求交函数intersectWith(),如果交点数为偶数(包括0),则说明起点必在窗口边界外,相反,起点在窗兀边界内.(2)窗口边界对封闭实体进行裁剪对开环实体来说,通过访问AutoCAD实体的DXF码可获取该实体的起点和终点,然后通过射线法可判断端点在窗口内部还是外部,从而确定被裁线段被交点所分成的各小段的取舍.封闭图形却不存在此方便条件,但由于封闭图形可定义面域(region)所以可通过组合使用面域的三种布尔运算(union,subtract.intersect)来完成窗口边界对闭环实体的剪切和覆盖.22剪切填充实体在CAD图形中,填充实体所占的比重较大,所以有必要对填充实体进行单独处理.对有多个边界的填充实体的剪切操作的基本步骤是:(1)首先将封闭的剪切边界曲线和被剪切的填充的外层边界实体分别生成面域,然后利用面域的布尔运算求此两面域的交集,此面域交集作为新填充实体的外层边界,重载函数appendLoop()进行添加:(2)从外至内依次将各层内边界生成面域,分别求其与剪切边界生成的面域的交集,并依次用函数insertLoopAtO将各面域交集添加为至新的填充实体,做为新填充的各内层边界:(3)按照原填充对象的填充属性(图案,样式,比例)对新填充实体进行填充:(4)最后删除原填充实体.2.3剪切文本对文本进行剪切没有任何意义,所以只根据其位嚣决定删除还是保留.对单行文本,不能准确求得文本范围4个角点的坐标,只能采用AcDbExtents类得到包围文本的长方形的最小点(长方形左下角的点)和最大点(长方形右上角的点),然后推得长方形的另外2个角点,当且仅当4个角点全部落在闭合剪切区域内时才将此文本保留,否则予以删除.24剪切块由于块对象作为一个包含多个实体对象的块表记录,有其特殊性,在不解块的情况下对某一个块中的各个实体对象进行剪切后,与其相同的所有的块的形状都会随之而改变.所以仅将与剪切边界曲线相交的块解块后进行剪切,而对与剪切边界曲线不相交的块对象,若在边界内部则保留,否则就删除.2.5为完成剪切的图形加图框ObjectARX支持多重数据库技术,即允许用户同时打开多个数据库进行编辑.利用了这一技术可以为剪切后的图形添加图框并将其存盘.下面是具体步骤:1.新建一个临时数据库对象.2.利用0bjectARx数据库类AcDbDatabase的成员函数wblock0将剪切好的图形写盘.3.将新建数据库定义为AutoCAD工作数据库(workingdatabase).4.为图形添加图框,坐标注记,图名等信息.5.存盘.下面为部分源代码:AcDbDatabase*pOutputDb.*pBaseDb:AcDbDatabase*pMapBoundaryDb=newAcDbDatabase0:新建临时数据库pBaseDb=acdbHostApplieationServices()一>workingDatabase0:保存当前数据库指针AeDbObjectIdArrayobjIds:/此处构造剪切后图形选择集,然后将所有实体对象的ID写入objIds集合对象中/pBaseDb)wblock(pOutputDb,objlds,basePt):AcDbDatabase*pDb=acdbHostApplicationServices()一>workingDatabase0:acdbHostApplicationServices()一>setWorkingDatabase(pOutputDb):设置当前数据库下面函数完成添加图框,坐标注记等具体工作源代码从略MapBoundary(pOutputDb,pMapBoundaryDb,ptLB,nIndex,nYear,nMonth,strMapName,drawingNo,nCol,textId):acdbHostApplicationServices()一>setworkingDatabase(pDb):将工作数据库改为原数据库DOutputDb一>saveAs(strFileName):strFileName为存盘文件名deletepOutputDb:deletepMapB0undaryDb结语CAD图形的自动分幅技术可作为图形绘制的有力工具,尽管AutoCAD中没有此项功能,但借助于Autodesk公司提供的二次开发工具ObjectARX进行二次开发,可成功地弥补此项功能,大大提高工作效率.参考文献1程亚飞,王卫东.应用ObjectARX开发地形图的窗口剪切程序.中南大学土木建筑学院.2007,10.2蔡润彬,潘国荣.利用ObjectARX实现地形图的自动分幅.同济大学测量与国土信息工程系,上海,2009,2.科技博览I111
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!