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();

未完待续。。

原文地址:https://www.cnblogs.com/motao9527/p/12074160.html

时间: 2024-11-08 20:42:02

Teigha.net实体属性注释的相关文章

为EF DbContext生成的实体添加注释(T5模板应用)[转]

1 先加上类注释 找到这行代码WriteHeader(codeStringGenerator, fileManager): 在它下面加上我们的代码: string summary=string.Empty; foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection)) {     fileManager.StartNewFile(entity.Name + ".cs");

【菜鸟看框架】——如何给EF实体添加注释

引言 在做图书馆项目的时候我们采用了EF实体架构自动生成实体,但是遇到一个很大的问 题就是在生成的实体中没有注释,我们都知道实体没有注释是非常痛苦的一件事情对于 开发的人来说,因为我们不能很快速的了解到底我们需要对那个属性进行操作,所以我 就在研究应该如何给生成的实体添加注释,下面给大家分享一下我的经验: 第一 手动添加(无效) 当开发人员告诉我让我给实体添加注释的时候,我就什么都没有多想,开始给我生成 的实体手动添加注释,当我们把我的15个实体的每一个字段都添加了以后,发现我的一 个数据库的字

EF架构~为EF DbContext生成的实体添加注释(T5模板应用)

相关文章系列 第八回 EF架构~将数据库注释添加导入到模型实体类中 第二十一回  EF架构~为EF DbContext生成的实体添加注释(T4模板应用) 第二十二回EF架构~为EF DbContext生成的实体添加注释(T5模板应用) 嗨,没法说,EF4的TT模版加上注释后,升级到EF5的TT模版后,注释就不通用了,所以,还得再研究一下,然后把操作方法再分享出来,没辙的微软! T4模版可能有些凌乱,这在T5模版里有了不错的改进,但我希望解决的问题在T5里并没有得到解决,那就是TT类文件自动得到E

spring jpa之实体属性类型转换器AttributeConverter

1.介绍接口AttributeConverter<x, y> 此接口用于转化实体属性的,但id属性和关系属性不可用.它有两个方法: 1.y convertToDatabaseColumn(x)  作用:将实体属性x转化为y存储到数据库中,即插入和更新操作时执行: 2.x convertToEntityAttribute(y)  作用:将数据库中的字段y转化为实体属性x,即查询操作时执行 2.实现的demo 需求:某数据库表中的状态列,1表示"启用",-1表示"禁用

SQL反模式学习笔记6 支持可变属性【实体-属性-值】

2014-10-11 17:21:31 目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需要新增列.不会影响现有表的结构: (3)存储的字段内容不会为空值. 缺点:(1)查询语句变得更加复杂: (2)使用EAV设计后,需要放弃传统的数据库设计所带来的方便之处,比如:无法保障数据完整性: (3)无法使用SQL的数据类型,比如对日期.金钱等格式内容都只

Lind.DDD~实体属性变更追踪器的实现

回到目录 看着这个标题很复杂,大叔把它拆开说一下,实体属性-变更-追踪器,把它拆成三部分大家看起来就容易懂一些了,实体属性:领域实体里有自己的属性,属性有getter,setter块,用来返回和设置属性的内容;变更:当前属性为赋值时,我们对它进行监视;追踪器:对变量的内容进行处理.好了,我们回到Lind.DDD框架中,在框架里有领域实体基类EntityBase,这个类是所有实体的基类,它公开了一些属性和方法,我们对这个基类进行一些设置,让所有子类都继承它,享用它. 1 属性变更追踪接口和它的事件

Hibernate---数据操作示例BY实体类注释

通过实体的映射文件创建表的示例,所需jar包如下 antlr-2.7.7.jar: dom4j-1.6.1.jar geronimo-jta_1.1_spec-1.1.1.jar: hibernate-commons-annotations-5.0.1.Final.jar: hibernate-core-5.0.12.Final.jar: hibernate-jpa-2.1-api-1.0.0.Final.jar: jandex-2.0.0.Final.jar: javassist-3.18.1

springmvc 处理lsit类型的请求參数映射成实体属性

<table align="center" cellspacing="10"> <tr> <td> 母码数目:<input type="text" name="uidCodeGenNumParamList[0].superCodeGenNum" style="width:180px;" class="textbox" maxlength=&quo

JPA实体属性one-to-many关系映射

(1)下边有两个实体类Order.java和OrderItem.java  前者是作为one 后者是many的一方(也就是说一个订单可以包含多个订单项) 下边是他们的映射关系 (2)Order.java代码如下 package com.lc.bean; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; impo