一种将Region转为Polyline的方法
在AutoCAD.NET二次开发中,如果要将面域转为Polyline主要有以下几种方式:
1、使用Explode将面域炸成Line和Arc,然后再串起来,此方法可用于AutoCAD2007开始的所有版本。
参考:http://through-the-interface.typepad.com/through_the_interface/2008/08/creating-a-seri.html
2、想办法获取Region内的一个点,使用CAD的BO命令重新创建边界,并监听命令结束事件,获取最后一个生成的实体。
3、使用C#和Lisp配合开发,在Lisp中使用bpoly创建边界。
4、使用AutoCAD.NET接口中的Editor.TracBoundary方法取得新边界,但此方法从AutoCAD2011开始有。
5、使用Brep和Edge来获取Region子实体,这几个接口从AutoCAD2009开始才添加进来的,
使用Brep来取得Region的每条边,然后再将这些边转为弧和线段对象,再进行串联,示例代码如下:
引用acdbmgdbrep.dll
PromptEntityResult per = ed.GetEntity("\n请选择");
if (per.Status == PromptStatus.OK)
{
using (DocumentLock dlk = doc.LockDocument())
{
using (Transaction trans = db.TransactionManager.StartTransaction())
{
Entity ent = (Entity)trans.GetObject(per.ObjectId, OpenMode.ForWrite);
if (!(ent is Region))
return;
Region reg = (Region)ent;
Brep brep = new Brep(reg);
BrepEdgeCollection bec = brep.Edges;
if (bec != null)
{
foreach (Edge edge in bec)
{
Curve3d cv3d = edge.Curve;
ExternalCurve3d ecv3d = (ExternalCurve3d)cv3d;
if (ecv3d.IsCircularArc)
{
CircularArc3d ca3d = ecv3d.NativeCurve as CircularArc3d;
ed.WriteMessage("\n弧");
}
else if (ecv3d.IsLine)
{
ed.WriteMessage("\n线");
}
else if (ecv3d.IsLineSegment)
{
LineSegment3d ls3d = ecv3d.NativeCurve as LineSegment3d;
ed.WriteMessage("\n线段");
}
else if (ecv3d.IsNativeCurve)
{
ed.WriteMessage("\n原始曲线");
}
else if (ecv3d.IsNurbCurve)
{
ed.WriteMessage("\n样条曲线");
}
else
{
ed.WriteMessage("\n" + ecv3d.ExternalCurveKind);
}
ed.WriteMessage("\n起点:" + cv3d.StartPoint.ToString() + "-终点:" + cv3d.EndPoint.ToString());
}
}
}
}
}
一种将Region转为Polyline的方法的更多相关文章
- linux几种快速清空文件内容的方法
linux几种快速清空文件内容的方法 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo & ...
- 【Android】一种提高Android应用进程存活率新方法
[Android]一种提高Android应用进程存活率新方法 SkySeraph Jun. 19st 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph ...
- [转]SQL三种获取自增长的ID方法
最新更新请访问: http://denghejun.github.io SQL SERVER中的三种获得自增长ID的方法 这个功能比较常用,所以记下来以防自己忘掉. SCOPE_IDENTIT ...
- CSharpGL(40)一种极其简单的半透明渲染方法
CSharpGL(40)一种极其简单的半透明渲染方法 开始 这里介绍一个实现半透明渲染效果的方法.此方法极其简单,不拖累渲染速度,但是不能适用所有的情况. 如下图所示,可以让包围盒显示为半透明效果. ...
- 几种常用的JS类定义方法
几种常用的JS类定义方法 // 方法1 对象直接量var obj1 = { v1 : "", get_v1 : function() { return ...
- 三种dedecms调用相关文章的方法
在文章的末尾或侧边栏添加相关文章可以提高用户的黏度,提高pv,增加se的好印象(哈哈),那么dedecms如何调用相关文章呢?有三种方法可以实现. 第一种dedecms调用相关文章的方法,用默认的li ...
- 4种检测是否支持HTML5的方法,你知道几个?
4种检测是否支持HTML5的方法,你知道几个? 1,检查特定的属性是否存在于全局的对象里面,比如说window或navigator. 比如geolocation,它是HTML5新加支持的新特性:它是由 ...
- ADB几种常见的错误及解决方法
下面列举出几种常见的错误及解决方法. Q1:无效的安装包,安装包已损坏[INSTALL_FAILED_INVALID_APK] A1:请检查安装包是否完整.如果是xpk包,可以通过 手动安装xpk来检 ...
- MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法
在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应 ...
随机推荐
- UVa 340 Master-Mind Hints
蛋疼的题目描述,看了好长好长时间才看懂,题目本身是很简单的. Designer给出一串长度为N的Code,Breaker用Guess来破译. 对于两串数字,如果有同一列相等的数字,那么叫做strong ...
- 【第四篇】说说layer的iframe弹窗给里面的标签赋值的问题
说到这一篇,真的是颠覆了我的思维. 官方文档,没有介绍这一部分的操作,大致上提了一下. 我的思路是把页面的数据传过去,在iframe弹窗的页面拿到接收到的数据,然后赋值,但是这样就会有个问题, 怎么传 ...
- iOS开发UITableView基本使用方法总结1
UITableView基本使用方法 1.首先,Controller需要实现两个delegate ,分别是UITableViewDelegate 和UITableViewDataSource 2.然后 ...
- string tips
1. .net文档中说,split 比 indexOf 消耗更多的性能.在as3中经过本人测试,这个结论一样成立.而且,字符串越长,split和indexOf的差距就越明显!!所以,能用indexOf ...
- PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据
From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_ ...
- Eclipse c++环境搭建 并加载OpenCV库 2015最新
C++: 搜索 Eclipse c++ 即可 注意新版的mingw安装器,要安装: 1.mingw-developer-toolkit 2.mingw32-base 3.mingw32-gcc-g++ ...
- tilecache2.11在windows apache2.22安装部署
tilecache2.11在windows apache2.22安装部署 蔡建良 2013-09-03 一.安装环境 操作系统: Windows7 32位 Apache2.22 Python2.5 m ...
- ajax url参数中文乱码解决
1.较好的处理办法,对js的url中的中文参数值使用两次encodeURI(),即 encodeURI(encodeURI("url的中文参数值")), java代码中使用URLD ...
- Oracle数据库“Specified cast is农田valid”
这种错误是笔者在执行一条计算符合条件的行有多少个,用OracleDataReader读取计算出的行数时发生. 查询语句为: Select Count(1) FROM HP_TS Where TS_ID ...
- [Everyday Mathematics]20150301
设 $f(x)$ 在 $[-1,1]$ 上有任意阶导数, $f^{(n)}(0)=0$, 其中 $n$ 是任意正整数, 且存在 $C>0$, $$\bex |f^{(n)}(x)|\leq C^ ...