Teigha.net实体属性注释
Polyline3d:
3D polyline的类型由PolyType属性存储,
它是由Poly3dType枚举定义的整数值。PolyType属性是一种绘制三维折线的近似方法
Polyline3d polyline = new Polyline3d(Poly3dType.SimplePoly, p3dc, false);
是否闭合:
polyline.Closed = false;
PolyType属性可用于设置和返回折线的类型。
使用非默认构造函数Polyline3d()创建3D polyline实体时,可以指定类型
polyline.PolyType = Poly3dType.QuadSplinePoly;
polyline.ConvertToPolyType(Poly3dType.QuadSplinePoly);
ConvertToPolyType()方法使用SplineFit()方法进行转换。如果需要其他设置,请使用此方法。
将当前三维折线转换为特定类型的三维折线。
线段参数设置为每个样条拟合折线生成的线段数量。大量的线段使折线更平滑。
polyline.SplineFit(Poly3dType.CubicSplinePoly, 3);
将当前3D折线转换为默认类型的3D折线,并使用默认的插值线段数量。
数据库对象的Splinetype和Splinesegs属性相应地设置默认样条类型和段数。
注意,当前Polyline3D对象必须是数据库的常驻对象
polyline.SplineFit();
Polyline3D对象具有拉直(Straighten())方法,
用于去除样条拟合,将样条拟合的三维折线转换为简单的三维折线:
polyline.Straighten();
Polyline3D对象包含用于在polyline中添加和插入顶点的方法。
若要向3D折线添加顶点,请使用AppendVertex()方法:
该方法将新的顶点实体附加到三维折线实体的顶点列表中,并使该折线成为其所有者。
如果折线是数据库驻留符,则必须在返回AppendVertex()方法后显式关闭附加的顶点实体。
PolylineVertex3d vrtx = new PolylineVertex3d(new Point3d(0, 0, 0));
polyline.AppendVertex(vrtx);
polyline.Dispose();
要将顶点插入到3D折线,使用InsertVertexAt()方法:
将指定的顶点实体插入到指定顶点之后的3D折线实体中,并使折线成为其所有者。
如果折线是数据库驻留,则必须在返回InsertVertexAt()方法后显式关闭插入的顶点实体。
insert new vertex after the fourth vertex //在第四个顶点之后插入新顶点
polyline.InsertVertexAt(verticesID[3], vrtx1);
insert new vertex at the beginig of the polyline 在折线的起始点插入新的顶点
polyline.InsertVertexAt(ObjectId.Null, vrtx2);
读取线段
foreach (ObjectId obj in polyline)
{
using (DBObject dbObj = trans.GetObject(obj, OpenMode.ForRead))
{
if (dbObj is PolylineVertex3d)
{
PolylineVertex3d poly3D = (PolylineVertex3d)dbObj;
}
}
}
Polyline3D对象具有只读长度属性,该属性返回以绘图单元测量的所有段长度的和。
MessageBox.Show(polyline.Length.ToString());
Arcs:
圆弧是由一个圆创建的,使用起始角和结束角、中心点和半径来定义。
起始角设置圆弧将从何处绘制的起始点。
结束角设置将绘制圆弧的结束点。这两个角都是用弧度(0到2 *)测量的,
并以逆向时针方计算法向量的原点。
如果起点和终点相同,则实体被画成一个圆。
public Arc(Point3d center, double radius, double startAngle, double endAngle);
这个构造函数需要四个参数:
center —圆弧中心点的三维WCS坐标。
radius —弧的半径。
startAngle —以弧度表示的弧的起始角。这个角的正方向是逆时针的。
endAngle —以弧度表示的弧的结束角。这个角的正方向是逆时针的。
Arc arc1 = new Arc(new Point3d(100, 50, 0), 50, 0, 45);
public Arc(Point3d center, Vector3d normal, double radius, double startAngle, double endAngle);
This constructor requires five parameters:
center — Three-dimensional WCS coordinates of the arc's center point.
normal — Three-dimensional vector of the arc’s normal.
radius — Radius of the arc.
startAngle — Start angle of the arc in radians.The positive direction for the angle is counter-clockwise.
endAngle — End angle of the arc in radians.The positive direction for the angle is counter-clockwise.
Arc arc2 = new Arc(new Point3d(100, 50, 0), new Vector3d(0, 0, 1), 150, 0, 90);
public Arc();
默认构造函数,它创建的弧的起始角和结束角为0.0,
半径为0.0,圆心为(0, 0, 0),法向量为(0, 0, 1)。
using (var trans = F1Show.database.TransactionManager.StartTransaction())
{
using (BlockTableRecord btr = (BlockTableRecord)F1Show.database.CurrentSpaceId.GetObject(OpenMode.ForWrite))
{
btr.AppendEntity(arc1);
btr.AppendEntity(arc2);
trans.AddNewlyCreatedDBObject(arc1, true);
trans.AddNewlyCreatedDBObject(arc2, true);
}
trans.Commit();
}
圆弧的中心、半径、起始角、结束角、法线和厚度属性用于设置和获取圆弧的中心、半径、起始角和结束角、法线和厚度参数。
起始角和结束角属性定义弧的起始角和结束角。角的正方向是逆时针方向,指向法向量的原点。
Arc对象还具有只读的TotalAngle和Length属性。TotalAngle属性获取结束角和开始角之间的差(以弧度为单位)。Length属性获取弧的长度。
if (helperDevice != null)
{
helperDevice.Update();
}
Invalidate();
}
Ellipse:
可以使用下面的Ellipse()构造函数之一创建Ellipse对象。
public Ellipse(Point3d center, Vector3d unitNormal, Vector3d majorAxis, double radiusRatio, double startAngle, double endAngle);
公共椭圆(Point3d中心,Vector3d单位法线,Vector3d主轴,双半径比,双起始角,双结束角);
这个构造函数需要6个参数:
中心 - 中心点的三维WCS坐标。
单位法向量——法向量的三维向量。
主轴 - 指定主轴(中心点到起点)的三维向量。
半径比 - 椭圆的半径比,即小半径(小矢量的长度)与大半径(大矢量的长度)之比。半径比必须在0.000001到1.000000(小半径<大半径)之间。
起始角 - 椭圆的起始角,单位为弧度。这个角的正方向是逆时针方向,指向法向量的原点。
端角 - 椭圆的端角,单位为弧度。这个角的正方向是逆时针方向,指向法向量的原点。
如果起始角为0,结束角为2,则创建一个闭合椭圆,否则构造函数将生成椭圆弧。
创建一个闭合椭圆
Ellipse el1 = new Ellipse(new Point3d(100, 50, 0), new Vector3d(0, 0, 1), new Vector3d(10, 0, 0), 0.7, 0.0, 6.283185);
创建一个椭圆弧,起始角0.0,结束角3.141592弧度
Ellipse el2 = new Ellipse(new Point3d(100, 50, 0), new Vector3d(0, 0, 1), new Vector3d(10, 0, 0), 0.9, 0.0, 3.141592);
默认构造函数,它创建一个半径为1的圆(半径比为1的闭合椭圆),圆心为(0, 0, 0),法向量为(0, 0, 1)。
Ellipse el1 = new Ellipse();
Center属性用于设置和获取椭圆的中心。创建椭圆对象后,
设置Center属性来更改椭圆中心的位置。
el1.Center = new Point3d(10, 0, 0);
起始角和结束角属性
StartAngle和EndAngle属性用于设置和获取椭圆的起始角和结束角。
角的正方向是逆时针方向,指向法向量的原点。
如果将StartAngle设置为0,EndAngle设置为2,则创建一个闭合椭圆,否则椭圆将转换为椭圆弧。注意,起始角和结束角必须相差大于1E - 6。
el1.StartAngle = 0;
el1.EndAngle = 1.571;
(MajorAxis and MinorAxis)主轴和小轴的性质是用来得到代表椭圆的主轴和小轴的向量。这两个性质都是从椭圆中心点出发的
(MajorRadius and MinorRadius)大半径和小半径性质分别得到大半径和小半径。大半径是主轴矢量的长度,小半径是主轴矢量的长度。
Normal 法向量性质得到椭圆平面的法向量。
半径比特性用于设置和得到小半径与大半径的比值。大半径必须大于小半径 ,
这意味着半径比必须在0到1之间。如果辐射比大于1.0或小于1E - 6
el1.RadiusRatio = 0.5;
StartParam和EndParam属性相应地获取椭圆的开始和结束参数。用参数定义椭圆圆弧,用矢量参数方程:
p(u) = c + a* cos(u) + b* sin(u)
c 椭圆的中心。
a 椭圆的主轴。
b - 椭圆的小轴。
获取指定角度的参数
要获取与指定角度对应的参数值,可以使用GetParameterAtAngle()
public double GetParameterAtAngle(double angle);
参数求角
要获得与指定参数值对应的角度,使用GetAngleAtParameter()方法:
public double GetAngleAtParameter(double value);
设置椭圆的参数
要设置椭圆的属性,还可以使用set()方法:
public void Set(Point3d center, Vector3d unitNormal, Vector3d majorAxis, double radiusRatio, double startAngle, double endAngle);
具体示例:
Ellipse ellipse = new Ellipse();
ellipse.Set(new Point3d(0, 0, 0), new Vector3d(0, 0, 1), new Vector3d(10, 0, 0), 0.5, 0, 6.2830);
using (var trans = F1Show.database.TransactionManager.StartTransaction())
{
using (BlockTableRecord btr = (BlockTableRecord)F1Show.database.CurrentSpaceId.GetObject(OpenMode.ForWrite))
{
btr.AppendEntity(el1);
btr.AppendEntity(ellipse);
trans.AddNewlyCreatedDBObject(ellipse, true);
}
trans.Commit();
}
if (helperDevice != null)
{
helperDevice.Update();
}
Invalidate();
未完待续。。
Teigha.net实体属性注释的更多相关文章
- .net 读取实体属性和描述注释
.net 读取实体属性和描述注释 class Program { static void Main(string[] args) { TEST test = new TEST(); test.MyNa ...
- EF架构~为EF DbContext生成的实体添加注释(T5模板应用)
回到目录 相关文章系列 第八回 EF架构~将数据库注释添加导入到模型实体类中 第二十一回 EF架构~为EF DbContext生成的实体添加注释(T4模板应用) 第二十二回EF架构~为EF DbCo ...
- EF架构~为EF DbContext生成的实体添加注释(T5模板应用)(转载)
转载地址:http://www.newlifex.com/showtopic-1072.aspx 最近新项目要用Entity Framework 6.x,但是我发现从数据库生成模型时没有生成字段的注释 ...
- 为EF DbContext生成的实体添加注释(T5模板应用)[转]
1 先加上类注释 找到这行代码WriteHeader(codeStringGenerator, fileManager): 在它下面加上我们的代码: string summary=string.Emp ...
- 【转】EF架构~为EF DbContext生成的实体添加注释(T5模板应用)
嗨,没法说,EF4的TT模版加上注释后,升级到EF5的TT模版后,注释就不通用了,所以,还得再研究一下,然后把操作方法再分享出来,没辙的微软! T4模版可能有些凌乱,这在T5模版里有了不错的改进,但我 ...
- Lind.DDD~实体属性变更追踪器的实现
回到目录 看着这个标题很复杂,大叔把它拆开说一下,实体属性-变更-追踪器,把它拆成三部分大家看起来就容易懂一些了,实体属性:领域实体里有自己的属性,属性有getter,setter块,用来返回和设置属 ...
- sqlalchemy 实体属性提前加载
在flask里需要给视图传送数据,肯定需要把模型的实体属性提前加载,可以使用 sqlalchemy.orm.subqueryload 或 sqlalchemy.orm.joinedload 示例: @ ...
- SQL反模式学习笔记6 支持可变属性【实体-属性-值】
目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需 ...
- idea中查看方法参数;查看类、方法、属性注释
Ctrl+P:查看方法参数Ctrl+Q:查看类.方法.属性注释
随机推荐
- Hystrix完整配置列表
前提 Hystrix在2018年11月20日之后已经停止维护,最后一个提交记录是:Latest commit 3cb2158 on 20 Nov 2018,最后一个正式版本为1.5.18.鉴于目前所在 ...
- Shell - 长 ping 脚本监控网络时延
生产环境中, 网络时延是一个很重要的指标. 为了方便检查网络时延的大小, 我们可以通过ping命令实现长时间的网络监控. 1 ping 命令的使用 1.1 常用参数 -i: 每次执行ping操作的间隔 ...
- CSP2019,RP+=150。
csp2019游记 第一题水死了,2分钟过! 第二题被卡住了,才得了30分. 第三题背包DP,可惜了,出了考场才知道... 第四题骗到20分,也算心满意足了.. 150,省二左右,辣鸡... 反正就是 ...
- kubeadm 1.16+ 初始化后 Unable to update cni config: no valid networks found in /etc/cni/net.d
问题描述: 在使用 kubeadm 工具初始化k8s后,并且安装了 flanneld 网络组建后,/var/log/messages 依旧报错, Unable to update cni config ...
- MySQL分层和查询数据的流程
MySQL分层 MySQL分层 主要分为:连接层,服务层,引擎层,存储层 客户端执行一条select命令的流程如下 连接器 功能: 负责跟客户端建立连接.获取权限.维持和管理连接 细节: 1.当用户登 ...
- C#程序编写高质量代码改善的157个建议【13-15】[为类型输出格式化字符串、实现浅拷贝和深拷贝、用dynamic来优化反射]
前言 本文已更新至http://www.cnblogs.com/aehyok/p/3624579.html .本文主要学习记录以下内容: 建议13.为类型输出格式化字符串 建议14.正确实现浅拷贝和深 ...
- Python之HTTP静态服务器-面向对象版开发
利用面向对象的思想完成HTTP静态Web服务器的开发. 主要思路如下: 1.抽象出一个服务器类 1.1 编写类的对象属性 1.2 编写类的方法 注意: 在进行请求资源路径判断时,需要确认请求路径中是否 ...
- Git 如何优雅地回退代码
前言 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码.提交.合并等,更复杂的操作没有使用过, ...
- DRF Django REST framework 之 序列化(三)
Django 原生 serializer (序列化) 导入模块 from django.core.serializers import serialize 获取queryset 对queryset进行 ...
- luogu P2135 方块消除 |dp
题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...