今天我们来学习一下高版本的AutoCAD开发,使用的2016版,因此开发的环境需要.net4.5支持,这里使用Visual Studio2012。其实现的功能是利用高版本提供的api接口选择多段线,然后创建一个包围线,这其中涉及到距离偏移的选择。然后使用polygon来创建面,这和其他的地理信息数据中polygon有点类似,但地理信息中的polygon,如在arcgis中是具有拓扑计算能力的,好了,这里说得有点远了。我们来看一下开发的效果。

当然在开发的时候遇到如下的问题。

在代码中加入相应的设置即可,具体实现代码如下。

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DrawPolygonAroundPolyline2
{public class Class1{[CommandMethod("dpap")]public void demo(){Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;Editor ed = doc.Editor;PromptEntityOptions peo = new PromptEntityOptions("\n选择一条多段线: ");peo.SetRejectMessage("\n必须为多段线!");peo.AddAllowedClass(typeof(Polyline), true);PromptEntityResult per = ed.GetEntity(peo);if (per.Status != PromptStatus.OK)return;using (Transaction tr = db.TransactionManager.StartTransaction()){Polyline pline = (Polyline)tr.GetObject(per.ObjectId, OpenMode.ForRead);if (pline.Closed){ed.WriteMessage("多段线闭合了.");return;}var pdr = ed.GetDistance("\n指定偏移距离: ");if (pdr.Status != PromptStatus.OK)return;var offsetCurves = pline.GetOffsetCurves(pdr.Value);if (offsetCurves.Count != 1){ed.WriteMessage("\n曲线创建偏移出现错误");foreach (DBObject obj in offsetCurves) obj.Dispose();return;}using (var polygon = (Polyline)offsetCurves[0]){offsetCurves = pline.GetOffsetCurves(-pdr.Value);if (offsetCurves.Count != 1){ed.WriteMessage("\n曲线创建偏移出现错误");foreach (DBObject obj in offsetCurves) obj.Dispose();return;}using (var curve = (Polyline)offsetCurves[0])using (var line = new Line(polygon.EndPoint, curve.EndPoint)){polygon.JoinEntities(new Entity[] { new Line(polygon.EndPoint, curve.EndPoint), curve });polygon.Closed = true;var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);curSpace.AppendEntity(polygon);tr.AddNewlyCreatedDBObject(polygon, true);}}tr.Commit();}}}
}

更多内容,请关注公众号

AutoCAD2016二次开发创建Polyline包围面Polygon相关推荐

  1. c++ Arx二次开发创建椭圆和样条曲线

    一.本节课程 c++ Arx二次开发创建椭圆和样条曲线 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建椭圆(对AcDbEllipse类的构造函数的直接封装和根据外接矩形来创建椭圆) 2 ...

  2. NX/UG二次开发创建曲面偏置体

    NX/UG二次开发--创建曲面偏置体 创建曲面偏置体 1.曲面偏置 创建曲面偏置体 这里介绍了一种对模型曲面进行偏置来获得偏置体的方法. 1.曲面偏置 void OffsetFace(tag_t fa ...

  3. NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp

    NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp #include <uf.h> #include <uf_modl.h> #inclu ...

  4. UG二次开发 创建圆弧 UF_CURVE_create_arc

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG二次开发 创建圆弧 UF_CURVE_create_arc 代码: //圆心 d ...

  5. NX二次开发 创建坐标系 UF_CSYS_create_csys()

    简介: NX二次开发 创建坐标系 UF_CSYS_create_csys(). 代码: #include "me.hpp"extern DllExport void ufusr(c ...

  6. mfc中弹出wpf对话框_CAA二次开发-创建对话框

    步骤: 1.创建对话框框架 2.实现对话框中按钮的功能 1. 对话框框架搭建 框架搭建与第一节框架搭建一样,再次不再累述.针对对话框框架的搭建,在LocalInterfaces中,有CAADialog ...

  7. UG\NX二次开发 创建并报告所有装配部件的文本UDO

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 创建并报告所有装配部件的文本UDO 效果: 代码: #inclu ...

  8. C++ ARX二次开发-创建三维实体

    二.本节课程 C++ ARX二次开发-创建三维实体 二.本节要讲解的知识点 1.arx提供的三类创建三维实体的方法:创建标准形状的实体.拉伸面域创建实体.旋转面域创建实体的例子. 2.布尔运算的使用例 ...

  9. UG\NX二次开发 创建等参数曲线 UF_MODL_create_isocurve

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 创建等参数曲线 UF_MODL_create_isocurve. ...

最新文章

  1. 女生学编程有哪些好处呢?
  2. 小米MIX 3如何刷成开发版启用Root超级权限
  3. 纯 CSS 实现高度与宽度成比例的效果
  4. 西湖首届本科生开招!每名学生配三位学术导师,大二全员海外交流
  5. 计算机文化基础分析总结,《计算机文化基础实训》教学方案设计与课题分析总结.doc...
  6. python子类分配
  7. MSDN-MDX#001 - 多维表达式 (MDX) 参考
  8. JDK-Logger
  9. c语言怎么把字符串转数组,【转】C语言 字符数组与字符串
  10. html 倒计时小工具
  11. HNU11722 The Gougu Theorem
  12. java nio oio_NIO,OIO,AIO区别
  13. 小米路由r2d论坛_小米路由R2D,拼夕夕翻车了没
  14. python怎么判断真假_Python不超过10行代码就可实现人脸识别,教你辨别真假
  15. 100 道 Linux 常见面试题,慢慢读~
  16. 1分钟让别人喜欢你(二)
  17. unity接入facebook SDK时 警告:“OpenSSL not found. Make sure that OpenSSL is installed
  18. oracle数据库12c安装教程,Oracle12c安装教程|Oracle Database 12C安装及配置教程
  19. Windows(Wox) 办公提效工具
  20. 无人机在道路桥梁病害检测中的应用

热门文章

  1. have been in 和have been to
  2. pbds库学习笔记(优先队列、平衡树、哈希表)
  3. SS7信令协议栈,MTP1,MTP2,MTP3,SCCP,TCAP,ISUP,TUP
  4. matlab 练习3
  5. 上海服务器机房防雷接地系统,一种机房防雷接地系统
  6. maven命令行创建web项目报错:java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils...
  7. mujoco环境变量报错:Missing path to your environment variable
  8. 抖音霸屏软件为什么会成为爆款?
  9. 黑龙江测绘地理信息局--机构概览
  10. 有趣的TCP BBR ProbeRTT行为点滴