之前遇见一个客户问题,要将每一个图幅网格进行向外偏移一定距离,保证每张图幅都有一部分重叠度。


认真思考了一下就是向图面添加由多段线构成的正四边形、我的设计思路是这样的:

首先进行选择集过滤,因为在图形中不只有图框线,还有注记等其他实体,将其他实体过滤掉、只选择图框线;

第二、对选择的图形进行循环,获取每个图框的ObjectId,根据ObjectId获取实体的外包矩形,得到左下角点和右上角点,因为是正四边形,外包矩形和图幅网格图形一致,这样就拿到了图框的左下角点和右上角点的坐标;

第三、根据偏移的距离构造出新图框的左下角点和右上角点,并交会出新图框的另外两个角点的坐标;

第四、在内存中新建Polyline对象,将点按顺序依次连接并闭合;最后、向图面添加实体,提交数据。 

 

程序编写流程


下图是目前原始图框各点和外扩后图框各点之间的对应关系图,黑色边框是目前原始图框边线,minPoint和maxPoint分别为图框的左下角点和右上角点。根据偏移距离构造出新的图框(红色框线)。


 

构建新图框示意图


代码如下:(文末有源代码下载链接)

 


在上面代码中ed.GetSelection()是提示用户从屏幕拾取对象,选择的结果保存在PromptSelectionResult中;


如果用户成功选择,则从PromptSelectionResul能获取被选中的实体集合,得到ObjectId数组,之后循环数组中每一个ObjectId,按照我们的设计流程进行逐个生成新图框。


Polyline是CAD中多段线,我们在内存中创建一个Polyline对象并调用它的AddVertexAt()方法向多段线中增加顶点;


AddVertexAt()方法有五个参数其中第一个为点的序号,第二个为点的坐标,第三个为凸度,第四个和第五个分别为起始宽度和结束宽度;


最后将Polyline的Closed属性设为true,将新图框闭合。


代码执行效果如下:


程序执行结果


©著作权归作者所有:来自51CTO博客作者mob604756fe00bf的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. iPhone X 刘海打理指北
  2. ArcGIS中加载无偏移谷歌卫星影像!奥维官方插件与ArcGIS协同互动
  3. CCKS 2020「基于标题的大规模商品实体检索」竞赛冠军,DeepBlueAI
  4. 程序设计神器 之 实体
  5. Bert 改进: 如何融入知识
  6. 基于特定实体的文本情感分类总结(PART III)
  7. 基于机器阅读理解(MRC)的信息抽取方法
  8. 电商知识图谱
  9. Dynamics 365利用HTML页面创建实体记录并同步上传附件

随机推荐

  1. 十万火急!如何远程复制sql2000数据库
  2. 求SQL语句,有没有周末上班的高手,给帮个忙
  3. 谁能给我讲讲用C#在windows mobile上开发
  4. Sql Server系列:Insert语句
  5. CentOS系统操作mysql的常用命令
  6. xp使用mysql出现的问题
  7. Oracle的临时表空间
  8. 数据库不支持中文解决方案(mysql)
  9. sql2000 第一次执行慢
  10. SQL 在线 UML 设计器 — 使用详解