1 Star 0 Fork 28

子木君 / CAD二次开发api

forked from soulwater / CAD二次开发api 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

前言

会持续更新CAD二次开发api功能介绍和视频,有问题可以私信联系我,也可以加群交流

闻人南131的个人空间_哔哩哔哩_bilibili

输入图片说明

曲线Curve

属性 数据类型 说明
Area double 面积
直线:0
圆:面积
圆弧:起点终点连起来闭合区域
椭圆:面积
椭圆弧:起点终点连起来闭合区域
多段线:闭合的话就是闭合区域,
不闭合的话就是起点终点连起来闭合区域
Spline Spline 拟合样条曲线(不懂)
EndPoint Point3d 终点
StartPoint Point3d 起点
EndParam double 终点参数
StartParam double 起点参数
直线:0-长度
圆:0-2π
圆弧:
椭圆:0-2π
椭圆弧:
多段线:0-分段数,所以可以用点参数来
判断在多段线的第几段上
IsPeriodic bool 周期性(不懂)
Closed bool 是否闭合,(圆和椭圆为闭合
多段线看具体情况,
直线,圆弧,椭圆弧不闭合)
方法 参数 说明
Point3d GetPointAtParameter
(
  double value
)


参数
获取指定参数处的点
double GetParameterAtPoint
(
  Point3d point
)



获取指定点处的参数
double GetDistanceAtParameter
(
  double value
)


参数
获取指定参数处的距离
double GetParameterAtDistance
(
  double dist
)


距离
获取指定距离处的参数
double GetDistAtPoint
(
  Point3d point
)



获取指定点出的距离
Point3d GetPointAtDist
(
  double value
)


距离
获取指定距离处的点
Vector3d GetFirstDerivative
(
  Point3d point
)



获取指定点处的一阶导数的向量
Vector3d GetFirstDerivative
(
  double value
)


起点
获取指定参数处的一阶导数的向量
Vector3d GetSecondDerivative
(
  Point3d point
)


起点
获取指定点处的二阶导数的向量
Vector3d GetSecondDerivative
(
  double value
)


起点
获取指定参数处的二阶导数的向量
Point3d GetClosestPointTo
(
  Point3d givenPoint,
  Vector3d direction,
  bool extend
)



向量
是否延长
获取指定点在指定向量方向上,到这条线
的最近点,可以选择是否延长这条线
Point3d GetClosestPointTo
(
  Point3d givenPoint,
  bool extend
)



是否延长
获取指定点,到这条线的最近点
,可以选择是否延长这条线
Curve GetOrthoProjectedCurve
(
  Plane planeToProjectOn
)



获取在指定面上的投影曲线
Curve GetProjectedCurve
(
  Plane planeToProjectOn,
  Vector3d projectionDirection
)



向量
获取在指定面上,指定向量的投影曲线
DBObjectCollection GetOffsetCurves
(
  double offsetDist
)


偏移距离
获得偏移指定距离的曲线
DBObjectCollection
GetOffsetCurvesGivenPlaneNormal
(
  Vector3d normal,
  double offsetDist
)



向量
偏移距离
指定向量为法向向量的平面上,
进行指定距离的偏移
DBObjectCollection GetSplitCurves
(
  Point3dCollection points
)


点集
根据点集打断曲线
注意1:闭合曲线起码两个点
注意2:多个点的是注意根据到起点距离排序
DBObjectCollection GetSplitCurves
(
  DoubleCollection value
)


参数集
根据参数分割曲线,注意事项同上
void Extend
(
  bool extendStart,
  Point3d toPoint
)


是否延长起点
目标点
注意点要在延长线上
void Extend
(
  double newParameter
)


参数
延长到指定参数处
void ReverseCurve( ) 曲线转向
Curve3d GetGeCurve( ) 获取ge曲线
Curve3d GetGeCurve
(
  Tolerance tolerance
)


容差
不懂
Curve CreateFromGeCurve
(
  Curve3d geCurve
)


ge曲线
ge曲线转db曲线
Curve CreateFromGeCurve
(
  Curve3d geCurve,
  Tolerance tolerance
)


ge曲线
容差
不懂
Curve CreateFromGeCurve
(
  Curve3d geCurve,
  Vector3d _unnamed001
)


ge曲线
向量
不懂
Curve CreateFromGeCurve
(
  Curve3d geCurve,
  Vector3d __unnamed001,
  Tolerance tolerance
)


ge曲线
向量
容差
不懂
void SetFromGeCurve
(
  Curve3d geCurve
)


ge曲线
根据ge曲线设置db曲线
void SetFromGeCurve
(
  Curve3d geCurve,
  Tolerance tolerance
)


ge曲线
容差
不懂
void SetFromGeCurve
(
  Curve3d geCurve,
  Vector3d __unnamed001
)


ge曲线
向量
不懂
void SetFromGeCurve
(
  Curve3d geCurve,
  Vector3d __unnamed001,
  Tolerance tolerance
)


ge曲线
向量
容差
不懂

Point3d point = curve.GetPointAtParameter(5);
Circle circle = new Circle(point, Vector3d.ZAxis, 0.2);
circle.ColorIndex = 2;
circle.LineWeight = LineWeight.LineWeight015;
circle.AddEntity();

Point3d point = new Point3d(5, 5, 0);
double par = curve.GetParameterAtPoint(point);

double dis = curve.GetDistanceAtParameter(2.5);

double par = curve.GetParameterAtDistance(7);

Point3d point = new Point3d(3,4,0);
double dis = curve.GetDistAtPoint(point);

Point3d point = curve.GetPointAtDist(9.5);

Vector3d vector = curve.GetFirstDerivative(new Point3d(3,0,0));

Vector3d vector = curve.GetFirstDerivative(1.5);

Vector3d vector = curve.GetSecondDerivative(new Point3d(3, 2, 0));

Vector3d vector = curve.GetSecondDerivative(Math.PI);

Point3d point = new Point3d(1.5, 1, 0);
Point3d p = curve.GetClosestPointTo(point, new Vector3d(1, 0, 0), false);

Point3d point = new Point3d(1.5, 1, 0);
Point3d p = curve.GetClosestPointTo(point, false);

Plane plane = new Plane(new Point3d(),new Vector3d(1,0,1));
curve = curve.GetOrthoProjectedCurve(plane);

Plane plane = new Plane(new Point3d(0,0,1),Vector3d.ZAxis);
curve = curve.GetProjectedCurve(plane,new Vector3d(0,0,2));

DBObjectCollection dbs = curve.GetOffsetCurves(1);

DBObjectCollection dbs = curve.GetOffsetCurvesGivenPlaneNormal(new Vector3d(0, 0, -1),1);

Point3dCollection pos = new Point3dCollection();
double dis = curve.GetDistanceAtParameter(curve.EndParam);
pos.Add(curve.GetPointAtDist(dis / 3));
pos.Add(curve.GetPointAtDist(dis / 3 * 2));
DBObjectCollection dbs = curve.GetSplitCurves(pos);

DoubleCollection ds = new DoubleCollection();
double par = curve.EndParam - curve.StartParam;
ds.Add(curve.StartParam + par / 3);
ds.Add(curve.StartParam + par / 3 * 2);
DBObjectCollection dbs = curve.GetSplitCurves(ds);

curve.Extend(false, new Point3d(15, 15, 0));

curve.Extend(2);

curve.ReverseCurve();

Curve3d curve3d=curve.GetGeCurve();

不懂

LineSegment3d line3d = new LineSegment3d(new Point3d(), new Point3d(10, 10, 0));
Line line = Curve.CreateFromGeCurve(line3d) as Line;

不懂

不懂

不懂

LineSegment3d line3d = new LineSegment3d(new Point3d(), new Point3d(10, 10, 0));
Line line = new Line(new Point3d(5, 5, 0), new Point3d(20, 0, 0));
line.SetFromGeCurve(line3d);

不懂

不懂

不懂

直线 Line

https://www.bilibili.com/video/BV1Ls4y1o7kh/

属性 中文 数据类型 作用
Length 长度 double 直线的长度
Angle 角度 double 直线的弧度,0~2π
Delta 增量 Vector3d 起点到终点的向量
Normal 法向向量 Vector3d 直线所在平面的法向单位向量
Thickness 厚度 double
EndPoint 终点 Point3d 直线的终点
StartPoint 起点 Point3d 直线的起点
方法 参数 说明
Line( ) 无参数 构造函数:声明一条空的直线
Line
(
   Point3d pointer1,
   Point3d pointer2
)


起点
终点
构造函数:声明从起点到终点的一条直线

Line line = new Line();

Point3d point1 = new Point3d(0, 0, 0);
Point3d point2 = new Point3d(10, 10, 0);
Line line = new Line(point1, point2);

圆 Circle

https://www.bilibili.com/video/BV1gY411673D/

属性 中文 数据类型 作用
Diameter 直径 double 圆的直径
Circumference 周长 double 圆的周长
Normal 单位法向向量 Vector3d 圆所在的平面的单位法向向量
Thickness 厚度 double 圆的厚度
Radius 半径 double 圆的半径
Center 圆心 Point3d 圆的圆心
方法 参数 说明
Circle( ) 无参数 构造函数:声明一个空的圆
Circle
(
   Point3d center,
   Vector3d normal,
   double radius
)


圆心
法向向量
半径
构造函数:声明一个确定圆心半径的圆

Circle circle = new Circle();

Point3d center = new Point3d(0, 0, 0);
Vector3d normal = Vector3d.ZAxis;
double radius = 5;
Circle circle = new Circle(center, normal, radius);

圆弧 Arc

https://www.bilibili.com/video/BV1fX4y1S7ad/

属性 中文 数据类型 作用
TotalAngle 总角度 double 圆弧的总弧度
Length 总长 double 圆弧的总长度
Normal 法向向量 Vector3d 圆弧所在平面的单位法向向量
Thickness 厚度 double 圆弧的厚度
EndAngle 终点角度 double 圆心到终点连线的弧度
StartAngle 起点角度 double 圆心到起点连线的弧度
Radius 半径 double 圆弧的半径
Center 圆心 Point3d 圆弧的圆心

注意事项:当Normal为-Z轴方向时,虽然圆弧任是根据右手定则逆时针的,但是从用户视角,圆弧变成了顺时针,圆弧起始弧度判断也从X轴变成了-X轴,在读取一些图纸中的圆弧时,需注意Normal方向。

方法 参数 说明
Arc( ) 无参数 构造函数:声明一个空的圆弧
Arc
(
   Point3d center,
   double radius,
   double startAngle,
  double endAngle
)


圆心
半径
起点角度
终点角度
构造函数:声明一个确定
圆心半径的起点终点的圆弧
Arc
(
   Point3d center,
   Vector3d normal,
   double radius,
   double startAngle,
  double endAngle
)


圆心
法向向量
半径
起点角度
终点角度
构造函数:声明一个确定
圆心半径的起点终点的圆弧,
并且设置法向向量,可以控制圆弧的顺逆时针

Arc arc = new Arc();

Point3d center = Point3d.Origin;
double radius = 5;
double startAngle = 0;
double endAngle = Math.PI / 3;
Arc arc = new Arc(center, radius, startAngle, endAngle);

Point3d center = Point3d.Origin;
Vector3d normal = -Vector3d.ZAxis;
double radius = 5;
double startAngle = 0;
double endAngle = Math.PI / 3;
Arc arc = new Arc(center, normal, radius, startAngle, endAngle);

椭圆 Ellipse

https://www.bilibili.com/video/BV1HL41117dS/

椭圆

属性 中文 数据类型 作用
MinorRadius 短轴半径 double 椭圆短轴的半径
MajorRadius 长轴半径 double 椭圆长轴的半径
IsNull 是否为空 bool 判断椭圆是否为空
EndParam 终点参数 double 椭圆终点的参数
StartParam 起点参数 double 椭圆起点的参数
EndAngle 终点角度 double 椭圆终点的弧度
StartAngle 起点角度 double 椭圆起点的弧度
RadiusRatio 半径比例 double 短轴半径/长轴半径
MinorAxis 短轴向量 Vector3d 椭圆短轴的向量
MajorAxis 长轴向量 Vector3d 椭圆长轴的方向
Normal 法向向量 Vector3d 椭圆所在平面的单位法向向量
Center 圆心 Point3d 椭圆的圆心
方法 参数 说明
Ellipse( ) 无参数 构造函数:声明一个空的椭圆
Ellipse
(
   Point3d center,
   Vector3d unitNormal,
   Vector3d majorAxis,
  double radiusRatio,
  double startAngle,
  double endAngle
)


圆心
法向向量
长轴向量
半径比例
起始弧度
终止弧度
构造函数:声明一个确定参数的椭圆
void Set
(
   Point3d center,
   Vector3d unitNormal,
   Vector3d majorAxis,
  double radiusRatio,
  double startAngle,
  double endAngle
)


圆心
法向向量
长轴向量
半径比例
起始弧度
终止弧度
给一个椭圆设置参数
double GetParameterAtAngle
(
  double angle
)


角度
获取指定角度处的参数
double GetAngleAtParameter
(
  double value
)


参数
获取指定参数处的角度

Ellipse ellipse = new Ellipse();

Point3d center = new Point3d(0, 0, 0);
Vector3d unitNormal= Vector3d.ZAxis;
Vector3d majorAxis = new Vector3d(10, 0, 0);
double radiusRatio = 0.5;
double startAngle = 0;
double endAngle = Math.PI * 2;
Ellipse ellipse = new Ellipse(center, unitNormal, majorAxis, radiusRatio, startAngle, endAngle);

Ellipse ellipse = new Ellipse();
Point3d center = new Point3d(0, 0, 0);
Vector3d unitNormal = Vector3d.ZAxis;
Vector3d majorAxis = new Vector3d(10, 0, 0);
double radiusRatio = 0.5;
double startAngle = Math.PI / 3;
double endAngle = Math.PI / 3 * 2;
ellipse.Set(center, unitNormal, majorAxis, radiusRatio, startAngle, endAngle);

double value = ellipse.GetParameterAtAngle(Math.PI / 3);

double angle = ellipse.GetAngleAtParameter(2);

多段线 Polyline

https://www.bilibili.com/video/BV11g4y1E7iH/

属性 中文 数据类型 作用
Length 长度 double 多段线的长度
HasWidth 是否有宽度 bool 多段线是否有宽度
HasBulges 是否有凸度 bool 多段线是否有圆弧
NumberOfVertices 节点数 int 多段线的节点数量
IsOnlyLines 是否只有直线 bool 多段线是否全部由直线组成
Normal 法向向量 Vector3d 多段线所在平面的单位法向向量
ConstantWidth 全局宽度 double 多段线的全局宽度,宽度一致
Thickness 厚度 double 多段线的厚度
Elevation 高程 double 多段线的高程,即Z坐标
Plinegen 普林根 bool 关闭时节点会打断线型
打开时节点不会打断线型
Closed 是否闭合 bool 多段线是否闭合
方法 参数 说明
Polyline( ) 无参数 构造函数:声明一个空的多段线
Polyline
(
  int vertices
)


节点数
构造函数:声明一个确定节点
数的多段线
void ConvertFrom
(
  Entity entity,
  bool transferId
)


转化源
是否传递ID
从别的Entity转成Polyline
(目前只发现可以从
Polyline2d转)
Polyline2d ConvertTo
(
  bool transferId
)


是否传递ID
把Polyline转成Polyline2d
参数涉及IdMapping
(目前我还不懂嘿嘿嘿)
Point3d GetPoint3dAt
(
  int value
)


节点索引
获取指定节点索引处的点
注意索引不要超出
SegmentType GetSegmentType
(
  int index
)


段落索引
获取指定索引处的段落
的类型(线、圆弧等等)
LineSegment2d GetLineSegment2dAt
(
  int index
)


段落索引
获取指定索引处的段落
的二维线段
CircularArc2d GetArcSegment2dAt
(
  int index
)


段落索引
获取指定索引处的段落
的二维圆弧
LineSegment3d GetLineSegmentAt
(
  int index
)


段落索引
获取指定索引处的段落
的三维线段
CircularArc3d GetArcSegmentAt
(
  int index
)


段落索引
获取指定索引处的段落
的三维圆弧
bool OnSegmentAt
(
  int index,
  Point2d pt2d,
  double value
)


段落索引
二维点
不知道
判断一个点是否在指定
索引的段落上
第三个参数不知道啥意思
void AddVertexAt
(
  int index,
  Point2d pt,
  double bulge,
  double startWidth,
  double endWidth
)


节点索引
二维点
凸度
起始宽度
终止宽度
在指定索引的节点添加一个点
void RemoveVertexAt
(
  int index
)


节点索引
删除指定索引的节点
Point2d GetPoint2dAt
(
  int index
)


节点索引
获取指定索引处节点的
二维点
void SetPointAt
(
  int index,
  Point2d pt
)


节点索引
二维点
修改指定索引处节点的
二维点
double GetBulgeAt
(
  int index
)


节点索引
获取指定索引处节点的
凸度
void SetBulgeAt
(
  int index,
  double bulge
)


节点索引
凸度
设置指定索引处节点的
凸度
double GetStartWidthAt
(
  int index
)


节点索引
获取指定索引处节点的
起始宽度
double GetEndWidthAt
(
  int index
)


节点索引
获取指定索引处节点的
终止宽度
void SetStartWidthAt
(
  int index,
  double startWidth
)


节点索引
起始宽度
设置指定索引处节点的
起始宽度
void SetEndWidthAt
(
  int index,
  double endWidth
)


节点索引
终止宽度
设置指定索引处节点的
终止宽度
void MinimizeMemory() 无参数 最小化内存
void MaximizeMemory() 无参数 最大化内存
void Reset
(
  bool reuse,
  int vertices
)
不知道 清空多段线

Polyline polyline = new Polyline();

int vertices = 5;
Polyline polyline = new Polyline(vertices);

Polyline polyline = new Polyline();
polyline.ConvertFrom(polyline2D, false);

Polyline2d polyline2D = polyline.ConvertTo(false);

List<Point3d> points = new List<Point3d>();
for (int i = 0; i < polyline.NumberOfVertices; i++)
{
    Point3d point3D = polyline.GetPoint3dAt(i);
    points.Add(point3D);
}

int index = 1;
SegmentType segmentType = polyline.GetSegmentType(index);

int index = 1;
LineSegment2d lineSegment2D = polyline.GetLineSegment2dAt(index);

int index = 1;
CircularArc2d circularArc2D = polyline.GetArcSegment2dAt(index);

int index = 1;
LineSegment3d lineSegment3D=polyline.GetLineSegmentAt(index);

int index = 1;
CircularArc3d circularArc3D=polyline.GetArcSegmentAt(index);

Point3d pt3d = polyline.GetPointAtDist(1200);
Point2d pt2d = new Point2d(pt3d.X, pt3d.Y);
double vaule = 60;
bool b = polyline.OnSegmentAt(index, pt2d, vaule);

Polyline polyline = new Polyline();
polyline.AddVertexAt(0, new Point2d(0, 0), 0, 0, 0);
polyline.AddVertexAt(1, new Point2d(10, 0), 0, 0, 0);
polyline.AddVertexAt(1, new Point2d(5, 5), 0, 2, 1);

polyline.RemoveVertexAt(1);

Point2d point2D = polyline.GetPoint2dAt(1);

Point2d point2D = new Point2d(5, 5);
polyline.SetPointAt(1, point2D);

double bulge = polyline.GetBulgeAt(0); 

polyline.SetBulgeAt(0, 2);

double startWidth=polyline.GetStartWidthAt(0);

double endWidth = polyline.GetEndWidthAt(0);

polyline.SetStartWidthAt(0, 2);

 polyline.SetEndWidthAt(0, 2);

 polyline.MinimizeMemory();

 polyline.MaximizeMemory();

polyline.Reset(true, 1); 

多线 Mline

https://www.bilibili.com/video/BV1xs4y1V7SM/

属性 中文 数据类型 作用
NumberOfVertices 节点数 int 多线的节点数
SupressEndCaps 抑制终点封口 bool 是否抑制终点的封口
SupressStartCaps 抑制起点封口 bool 是否抑制起点的封口
IsClosed 是否封闭 bool 多线是否封闭
Normal 法向向量 Vector3d 多线所在平面的
单位法向向量
Scale 比例 double 比例,两根线的间距
Justification 对正 MlineJustification 对正模式
Style 样式 ObjectId 多线的样式
方法 参数 说明
Mline( ) 无参数 构造函数:声明一个空的多线
void AppendSegment
(
  Point3d newVertex
)


新的点
在多线末尾增加一个点
void RemoveLastSegment
(
  Point3d lastVertex
)


最后的点
移除最后一个点,参数无所谓
void MoveVertexAt
(
  int index,
  Point3d newPosition
)


节点索引
新的点
移动指定索引处的节点
int Element
(
  Point3d pt
)
未知方法,知道的联系我
Point3d VertexAt
(
  int index
)


节点索引
获得指定索引处的节点
Point3d GetClosestPointTo
(
  Point3d givenPoint,
  Vector3d normal,
  bool extend,
  bool excludeCaps
)


三维点
向量
是否延长
排除封口
点到多线的最近点,
相当于取点在向量上的射线
与多线求最近点
如果延长,则可以取延长线
上的最近点
排除封口的话会忽略封口,
求到两根线的最近点
Point3d GetClosestPointTo
(
  Point3d givenPoint,
  bool extend,
  bool excludeCaps
)


三维点
是否延长
排除封口
点到多线的最近点,
如果延长,则可以取延长线
上的最近点
排除封口的话会忽略封口,
求到两根线的最近点

Database database = HostApplicationServices.WorkingDatabase;
string name = "STANDARD";
ObjectId objectId = ObjectId.Null;
using (Transaction trans = database.TransactionManager.StartTransaction())
{
    DBDictionary ss = (DBDictionary)database.MLStyleDictionaryId.GetObject(OpenMode.ForRead);
    foreach (var item in ss)
    {
        if (item.Key.ToUpper() == name)
        {
            objectId = item.Value;
        }
    }
}
Mline mline = new Mline();
mline.Style = objectId;
mline.Normal = Vector3d.ZAxis;

Point3d point3D1 = new Point3d(0, 0, 0);
Point3d point3D2 = new Point3d(10, 10, 0);
mline.AppendSegment(point3D1);
mline.AppendSegment(point3D2);

Point3d lastVertex = new Point3d();
mline.RemoveLastSegment(lastVertex);

Point3d newPosition = new Point3d(10, 20, 0);
mline.MoveVertexAt(1, newPosition);

未知。希望你的补充

Point3d point3D = mline.VertexAt(1);

Point3d pt = new Point3d(0, 5, 0);
Vector3d vector3D = new Vector3d(-1, -1, 0);
var po = mline.GetClosestPointTo(pt, vector3D, false, false);

Point3d pt = new Point3d(0, 5, 0);
var po = mline.GetClosestPointTo(pt, false, false);

三维多段线 Polyline3d

https://www.bilibili.com/video/BV1YM411s7Y5/

属性 中文 数据类型 作用
Length 长度 double 多段线的长度
PolyType 类型 Poly3dType 多段线的类型
Closed 闭合 bool 多段线是否闭合
方法 参数 说明
Polyline3d( ) 无参数 构造函数:声明一条空的
三维多段线
Polyline3d
(
  Poly3dType type,
  Point3dCollection vertices,
  bool closed
)


多段线类型
点集
是否闭合
构造函数:声明一条给定类型
确定点集和闭合的三维多段线
void ConvertToPolyType
(
  Poly3dType newVal
)


多段线类型
转化多段线类型
void Straighten( ) 无参数 去除多段线类型
void SplineFit
(
  Poly3dType value,
  int segments
)


多段线类型
段数
修改多段线类型,设置段数,
段数越多,越平滑
void SplineFit( ) 无参数 多段线类型为设置为三次
ObjectId AppendVertex
(
  PolylineVertex3d vertexToAppend
)


多段线节点
给多段线增加一个点
ObjectId InsertVertexAt
(
  ObjectId indexVertexId,
  PolylineVertex3d newVertex
)


插入点的id
新多段线点
在指定点插入新的点
(需有插入点的id)
void InsertVertexAt
(
  PolylineVertex3d indexVertex,
  PolylineVertex3d newVertex
)


插入处的点
新多段线点
在指定点插入新的点
IEnumerator GetEnumerator( ) 无参数 枚举器(不知道咋用,
只知道可以foreach遍历每个点)

Polyline3d polyline3D = new Polyline3d();

Poly3dType poly3DType = Poly3dType.SimplePoly;
Point3dCollection point3DCollection = new Point3dCollection();
point3DCollection.Add(new Point3d(0, 0, 0));
point3DCollection.Add(new Point3d(10, 0, 0));
point3DCollection.Add(new Point3d(10, 10, 0));
bool isClosed = true;
Polyline3d polyline3D = new Polyline3d(poly3DType, point3DCollection, isClosed);

Poly3dType poly3DType = Poly3dType.CubicSplinePoly;
polyline3D.ConvertToPolyType(poly3DType);

polyline3D.Straighten();

polyline3D.SplineFit(Poly3dType.QuadSplinePoly, 3);

polyline3D.SplineFit();

PolylineVertex3d polylineVertex3D = new PolylineVertex3d(new Point3d(10, 10, 0));
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans=db.TransactionManager.StartTransaction())
{
    polyline3D = polyline3D.ObjectId.GetObject(OpenMode.ForWrite) as Polyline3d;
    polyline3D.AppendVertex(polylineVertex3D);
    trans.Commit();
}

Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans= db.TransactionManager.StartTransaction())
{
    polyline3D = polyline3D.ObjectId.GetObject(OpenMode.ForWrite) as Polyline3d;
    int n = 0;
    foreach (ObjectId item in polyline3D)
    {
        if (n == 1)
        {
            PolylineVertex3d polylineVertex3D = new PolylineVertex3d(new Point3d(20, 10, 0));
            polyline3D.InsertVertexAt(item, polylineVertex3D);
            break;
        }
        n++;
    }
    trans.Commit();
}

int n = 0;
foreach (PolylineVertex3d item in polyline3D)
{
    if (n == 1)
    {
        PolylineVertex3d polylineVertex3D = new PolylineVertex3d(new Point3d(20, 10, 0));
        polyline3D.InsertVertexAt(item, polylineVertex3D);
        break;
    }
    n++;
}

foreach (PolylineVertex3d item in polyline3D)
{
                
}

二维多段线 Polyline2d

https://www.bilibili.com/video/BV1FL411Q7kx/

属性 中文 数据类型 作用
Length 长度 double 多段线的长度
ConstantWidth 全局宽度 double 多段线的全局宽度
LinetypeGenerationOn 线型生成 bool 关闭时节点会打断线型
打开时节点不会打断线型
Elevation 高程 double 多段线的标高(z轴)
Normal 法向向量 Vector3d 单位法向向量
Thickness 厚度 double 多段线的厚度
DefaultEndWidth 终止宽度 double 多段线默认终止宽度
DefaultStartWidth 起始宽度 double 多段线默认起始宽度
Closed 闭合 bool 多段线是否闭合
PolyType 拟合方式 Poly2dType SimplePoly 无
FitCurvePoly 曲线拟合
QuadSplinePoly 二次
CubicSplinePoly三次
方法 参数 说明
Polyline2d( ) 无参数 构造函数:声明一条空的二维多段线
Polyline2d
(
  Poly2dType type,
  Point3dCollection vertices,
  double elevation,
  bool closed,
  double startWidth,
  double endWidth,
  DoubleCollection bulges
)


拟合方式
顶点集
标高
是否闭合
起始宽度
终止宽度
凸度集合
构造函数:声明一条明确属性的
二维多段线
void ConvertToPolyType
(
  Poly2dType newVal
)


拟合方式
转换拟合方式
void Straighten( ) 无参数 拟合方式改成SimplePoly
void SplineFit
(
  Poly2dType value,
  int segments
)


拟合方式
段数
修改拟合方式和段数
void SplineFit( ) 无参数 拟合方式改成CubicSplinePoly
void CurveFit( ) 无参数 拟合方式改成FitCurvePoly
void NonDBAppendVertex
(
  Vertex2d vertexToAppend
)


节点
添加一个节点
ObjectId AppendVertex
(
  Vertex2d vertexToAppend
)


节点
添加一个节点
(多段线需已经添加)
ObjectId InsertVertexAt
(
  ObjectId vertexId,
  Vertex2d newVertex
)


插入节点
新节点
在指定节点后新加一个节点
(多段线需已经添加)
void InsertVertexAt
(
  Vertex2d indexVertex,
  Vertex2d newVertex
)


插入节点
新节点
在指定节点后新加一个节点
IEnumerator GetEnumerator( ) 无参数 迭代器
Point3d VertexPosition
(
  Vertex2d vertex
)


节点
获得指定节点的Point3d

Polyline2d polyline2D = new Polyline2d();

Point3dCollection pos = new Point3dCollection
{
    new Point3d(0, 0, 0),
    new Point3d(10, 0, 0),
    new Point3d(10, 10, 0),
    new Point3d(20, 10, 0)
};
DoubleCollection doubles = new DoubleCollection
{
    0,
    0,
    0,
    0
};
Polyline2d polyline2D = new Polyline2d(Poly2dType.SimplePoly, pos, 0, false, 0, 0, doubles);

polyline2D.ConvertToPolyType(Poly2dType.FitCurvePoly);

polyline2D.Straighten();

polyline2D.SplineFit(Poly2dType.CubicSplinePoly, 100);

polyline2D.SplineFit();

polyline2D.CurveFit();

Vertex2d vertex2D = new Vertex2d(new Point3d(20, 20, 0), 0, 0, 0, 0);
polyline2D.NonDBAppendVertex(vertex2D);

Vertex2d vertex2D = new Vertex2d(new Point3d(20, 20, 0), 0, 0, 0, 0);
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
    polyline2D.ObjectId.GetObject(OpenMode.ForWrite);
    polyline2D.AppendVertex(vertex2D);
    trans.Commit();
}

Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
    polyline2D.ObjectId.GetObject(OpenMode.ForWrite);
    int n = 0;
    foreach (ObjectId item in polyline2D)
    {
        if (n == 1)
        {
            Vertex2d vertex2D = new Vertex2d(new Point3d(15, 5, 0), 0, 0, 0, 0);
            polyline2D.InsertVertexAt(item, vertex2D);
            break;
        }
        n++;
    }
    trans.Commit();
}

int n = 0;
foreach (Vertex2d item in polyline2D)
{
    if (n == 1)
    {
        Vertex2d vertex2D = new Vertex2d(new Point3d(15, 8, 0), 0, 0, 0, 0);
        polyline2D.InsertVertexAt(item, vertex2D);
        break;
    }
    n++;
}

//IEnumerator enumerator = polyline2D.GetEnumerator();
//var obj = enumerator.Current;
//enumerator.MoveNext();
foreach (var item in polyline2D)
{

}

foreach (Vertex2d item in polyline2D)
{
    Point3d point3D = polyline2D.VertexPosition(item);
}

单行文字DBText

https://www.bilibili.com/video/BV1bg4y1s7eH/

属性 中文 数据类型 作用
Justify 对齐点 AttachmentPoint 对齐方式
VerticalMode 垂直对齐方式 TextVerticalMode 垂直对齐方式
HorizontalMode 水平对齐方式 TextHorizontalMode 水平对齐方式
IsMirroredInY Y轴镜像 bool 是否延Y轴镜像
IsMirroredInX X轴镜像 bool 是否延X轴镜像
TextStyleId 文字样式Id ObjectId 文字样式的ObjectId
TextStyleName 文字样式名称 string 文字样式的名称
TextString 文字内容 string 单行文字的内容
WidthFactor 宽度系数 double 宽度系数,1为默认
Height 字高 double 字体的高度
Rotation 旋转弧度 double 旋转的弧度(逆时针)
Oblique 倾斜弧度 double 倾斜的弧度(左负右正)
Thickness 厚度 double 厚度
Normal 平面法向向量 Vector3d 所在平面法向向量
IsDefaultAlignment 是否默认对齐 bool 否代表有对齐点
AlignmentPoint 文本对齐点 Point3d 设置某些对齐方式后
的对齐点,代替基点
Position 基点位置 Point3d 原始的基点

方法 参数 说明
DBText( ) 无参数 构造函数
int CorrectSpelling( ) 无参数 拼写错误?(不知道咋用)
void AdjustAlignment
(
  Database alternateDatabaseToUse
)


试试
不懂
void ConvertFieldToText( ) 无参数 不懂
string getTextWithFieldCodes( ) 无参数 不懂

DBText dBText = new DBText();

构造线Xline

属性 数据类型 说明
BasePoint Point3d 构造线的基准点
SecondPoint Point3d 构造线的第二个点,和基准点的向量就是构造线的放心
UnitDir Vector3d 构造线的向量
方法 参数 说明
Xline( ) 无参数 构造函数

Xline xline = new Xline();
xline.BasePoint = new Point3d();
xline.UnitDir = new Vector3d(10, 10, 0);

射线Ray

属性 数据类型 说明
BasePoint Point3d 构造线的基准点
SecondPoint Point3d 构造线的第二个点,和基准点的向量就是构造线的放心
UnitDir Vector3d 构造线的向量
方法 参数 说明
Ray( ) 无参数 构造函数

Ray ray = new Ray();
ray.BasePoint = new Point3d();
ray.UnitDir = new Vector3d(10, 10, 0);

扩展一下,已知一点,求在指定方向最近的有交点的线

Point3d point = new Point3d();
Vector3d vector = new Vector3d(1, 1, 0);
List<Curve> curves = SelectEntities<Curve>();
if (curves.Count == 0) return;
Curve curve = GetClosestCurve(point, vector, curves);
if (curve == null) return;
Curve curve1 = curve.Clone() as Curve;
curve1.ColorIndex = 2;
curve1.AddEntity();
private static Curve GetClosestCurve(Point3d point, Vector3d vector, List<Curve> curves)
{
    Ray ray = new Ray();
    ray.BasePoint = point;
    ray.UnitDir = vector;
    Point3d closestPoint = new Point3d();
    double closestDis = double.MaxValue;
    Curve closestCur = null;
    foreach (var curve in curves)
    {
        Point3dCollection pos = new Point3dCollection();
        ray.IntersectWith(curve, Intersect.OnBothOperands, pos, IntPtr.Zero, IntPtr.Zero);
        foreach (Point3d po in pos)
        {
            double dis = po.DistanceTo(point);
            if (dis < closestDis)
            {
                closestPoint = po;
                closestDis = dis;
                closestCur = curve;
            }
        }
    }
    return closestCur;
}

标注Dimension

转角标注RotatedDimension

https://www.bilibili.com/video/BV1is4y1J7n4/

属性 中文 数据类型 作用
Rotation 文字倾斜 double 文字所在的线的切斜角
Oblique 标注转角 double 两个标注线的倾斜角
DimLinePoint 标注线定位点 Point3d 标注线经过的点
XLine2Point 标注终点 Point3d 标注终点所在的点
XLine1Point 标注起点 Point3d 标注起点所在的点
方法 参数 说明
RotatedDimension( ) 无参数 构造函数
RotatedDimension
(
  double rotation,
  Point3d line1Point,
  Point3d line2Point,
  Point3d dimensionLinePoint,
  string dimensionText,
  ObjectId dimensionStyle
)


倾斜角
标注起点
标注终点
标注线定位点
标注文字替换
标注样式
构造函数
RotatedDimension rotatedDimension = new RotatedDimension();
double rotation = Math.PI / 6;
Point3d line1Point = new Point3d(0, 0, 0);
Point3d line2Point = new Point3d(100, 0, 0);
Point3d dimensionLinePoint = new Point3d(50, 30, 0);
string dimensionText = "150";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
RotatedDimension rotatedDimension = new RotatedDimension(rotation, line1Point, line2Point, dimensionLinePoint,dimensionText, dimensionStyle);

对齐标注AlignedDimension

https://www.bilibili.com/video/BV1kM4y1U7jR/

属性 中文 数据类型 作用
Oblique 标注转角 double 两个标注线的倾斜角
DimLinePoint 标注线定位点 Point3d 标注线经过的点
XLine2Point 标注点2 Point3d 标注终点所在的点
XLine1Point 标注点1 Point3d 标注起点所在的点
方法 参数 说明
AlignedDimension( ) 无参数 构造函数
AlignedDimension
(
  Point3d line1Point,
  Point3d line2Point,
  Point3d dimensionLinePoint,
  string dimensionText,
  ObjectId dimensionStyle
)


标注起点
标注终点
标注线定位点
标注文字替换
标注样式
构造函数
AlignedDimension alignedDimension = new AlignedDimension();
Point3d line1Point = new Point3d(0, 0, 0);
Point3d line2Point = new Point3d(100, 0, 0);
Point3d dimensionLinePoint = new Point3d(50, 30, 0);
string dimensionText = "";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
AlignedDimension alignedDimension = new AlignedDimension(line1Point, line2Point, dimensionLinePoint, dimensionText,
dimensionStyle);

角度标注LineAngularDimension2

https://www.bilibili.com/video/BV1DL411X7uy/

属性 中文 数据类型 作用
XLine2End 标注线2终点 Point3d 标注线2终点
XLine2Start 标注线2起点 Point3d 标注线2起点
XLine1End 标注线1终点 Point3d 标注线1终点
XLine1Start 标注线1起点 Point3d 标注线1起点
ArcPoint 标注线定位点 Point3d 标注线定位点
方法 参数 说明
LineAngularDimension2( ) 无参数 构造函数
LineAngularDimension2
(
  Point3d line1Start,
  Point3d line1End,
  Point3d line2Start,
  Point3d line2End,
  Point3d arcPoint,
  string dimensionText,
  ObjectId dimensionStyle
)


标注线1起点
标注线1终点
标注线2起点
标注线2终点
标注线定位点
文字替换
标注样式
构造函数
LineAngularDimension2 lineAngularDimension2 = new LineAngularDimension2();
Point3d line1Start = new Point3d(0, 0, 0);
Point3d line1End = new Point3d(0, 50, 0);
Point3d line2Start = new Point3d(10, 0, 0);
Point3d line2End = new Point3d(50, 50, 0);
Point3d arcPoint = new Point3d(30, 80, 0);
string dimensionText = "";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
LineAngularDimension2 lineAngularDimension2 = new LineAngularDimension2(line1Start,line1End,line2Start,line2End, arcPoint,
dimensionText, dimensionStyle);

半径标注RadialDimension

https://www.bilibili.com/video/BV1Dg4y137Nu/

属性 中文 数据类型 作用
ChordPoint 标注线定位点 Point3d 标注线定位点
Center 圆心 Point3d 圆心
LeaderLength 引线长度 double 引线长度
方法 参数 说明
RadialDimension( ) 无参数 构造函数
RadialDimension
(
  Point3d center,
  Point3d chordPoint,
  double leaderLength,
  string dimensionText,
  ObjectId dimensionStyle
)


原点
标注线定位点
引线长度
文字替换
标注样式
构造函数
RadialDimension radialDimension = new RadialDimension();
Point3d center = new Point3d(0, 0, 0);
Point3d chordPoint = new Point3d(50, 50, 0);
double leaderLength = 100;
string dimensionText = "";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
RadialDimension radialDimension = new RadialDimension(center, chordPoint, leaderLength, dimensionText,
dimensionStyle);
AddEntity(radialDimension);

直径标注DiametricDimension

https://www.bilibili.com/video/BV14s4y1D7Ar/

属性 中文 数据类型 作用
FarChordPoint 远弦点 Point3d 远弦点
ChordPoint 近弦点 Point3d 近弦点
LeaderLength 引线长度 double 引线长度
方法 参数 说明
DiametricDimension( ) 无参数 构造函数
DiametricDimension
(
  Point3d chordPoint,
  Point3d farChordPoint,
  double leaderLength,
  string dimensionText,
  ObjectId dimensionStyle
)


近弦点
远弦点
引线长度
文字替换
标注样式
构造函数
DiametricDimension diametricDimension = new DiametricDimension();
Point3d chordPoint = new Point3d(50, 0, 0);
Point3d farChordPoint = new Point3d(-50, 0, 0);
double leaderLength = 20;
string dimensionText = "";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
DiametricDimension diametricDimension = new DiametricDimension(chordPoint, farChordPoint,leaderLength,
dimensionText,dimensionStyle);
AddEntity(diametricDimension);

弧长标注ArcDimension

https://www.bilibili.com/video/BV1v24y1j7o6/

属性 数据类型 说明
HasLeader bool 是否有说明引线
IsPartial bool 是否是局部的
ArcSymbolType int 圆弧样式(默认0)
0=弧长符号在文字前
1=弧长符号在文字上
2=不显示弧长符号
但是我怎么改他都不变
不知道为啥
XLine2Point Point3d 标注终点
XLine1Point Point3d 标注起点
Leader2Point Point3d 额外点2
Leader1Point Point3d 额外点1
CenterPoint Point3d 圆心
ArcPoint Point3d 标注定位点
ArcEndParam double 圆弧终点参数
ArcStartParam double 圆弧起点参数
方法 参数 说明
ArcDimension
(
  Point3d centerPoint,
  Point3d xLine1Point,
  Point3d xLine2Point,
  Point3d arcPoint,
  string dimensionText,
  ObjectId dimensionStyle
)


圆心
标注起点
标注终点
标注线定位点
文字替代
标注样式
构造函数
Point3d centerPoint = new Point3d(0, 0, 0);
Point3d xLine1Point = new Point3d(0, 50, 0);
Point3d xLine2Point = new Point3d(50, 0, 0);
Point3d arcPoint = new Point3d(70, 70, 0);
string dimensionText = "";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
ArcDimension arcDimension = new ArcDimension(centerPoint, xLine1Point, xLine2Point, arcPoint, dimensionText,
dimensionStyle);
AddEntity(arcDimension);

折弯标注RadialDimensionLarge

https://www.bilibili.com/video/BV1f84y1M7fj/

属性 数据类型 说明
OverrideCenter Point3d 中心位置代替点
JogPoint Point3d 折弯坐标
ChordPoint Point3d 标记定位点
Center Point3d 圆心
JogAngle double 折弯角度(设置了无效
不知道为啥子)
方法 参数 说明
RadialDimensionLarge( ) 无参数 构造函数
RadialDimensionLarge
(
  Point3d center,
  Point3d chordPoint,
  Point3d overrideCenter,
  Point3d jogPoint,
  double jogAngle,
  string dimensionText,
  ObjectId dimensionStyle
)


圆心
标注定位点
中心位置代替点
折弯坐标
标注样式
文字替代
标注样式
构造函数

坐标标注OrdinateDimension

属性 数据类型 说明
LeaderEndPoint Point3d 引线终点
DefiningPoint Point3d 标注点
Origin Point3d 原点
UsingXAxis bool 以X坐标为计量
UsingYAxis bool 以Y坐标为计量
方法 参数 说明
OrdinateDimension( ) 无参数 构造函数
OrdinateDimension
(
  bool useXAxis,
  Point3d definingPoint,
  Point3d leaderEndPoint,
  string dimText,
  ObjectId dimStyle
)


以X坐标为计量
标注点
引线终点
文字替换
标注样式
构造函数
OrdinateDimension ordinateDimension = new OrdinateDimension();
bool useXAxis = true;
Point3d definingPoint = new Point3d(50, 20, 0);
Point3d leaderEndPoint = new Point3d(70, 50, 0);
string dimensionText = "";
Document doc = Application.DocumentManager.MdiActiveDocument;
ObjectId dimensionStyle = doc.Database.DimStyleTableId;
OrdinateDimension ordinateDimension = new OrdinateDimension(useXAxis, definingPoint, leaderEndPoint,
dimensionText,dimensionStyle);

GE曲线Curve3d

线段LineSegment3d

属性 数据类型 说明
Length double 长度
StartPoint Point3d 起点
MidPoint Point3d 中点
EndPoint Point3d 终点
方法 参数 说明
LineSegment3d( ) 无参数 构造函数
LineSegment3d
(
  Point3d point1,
  Point3d point2
)


起点
终点
构造函数
LineSegment3d
(
  Point3d point,
  Vector3d vector
)


起点
起点到终点的向量
构造函数
Plane GetBisector( ) 无参数 获取通过中点,并且垂直线的平面
Point3d BaryComb
(
  double blendCoefficient
)


系数
0起点,1终点,(0,1)在线上
<0或者>1在延长线上
void Set
(
  Point3d point1,
  Point3d point2
)


起点
终点
设置线段的起点终点
void Set
(
  Point3d point,
  Vector3d vector
)


起点
起点到终点向量
设置线段起点和
起点到终点的向量
void Set
(
  Curve3d curve,
  Point3d point,
  double parameter
)


一个ge曲线

猜测参数
一个平面曲线,
曲线平面上的一个点
切点猜测参数,
会得到通过这个点,
与曲线相切的线
void Set
(
  Curve3d curve1,
  Curve3d curve2,
  double parameter1,
  double parameter2
)


ge曲线1
ge曲线2
曲线1猜测参数
曲线2猜测参数
求两个同一平面的曲线的切线

LineSegment3d line = new LineSegment3d();

Point3d point1 = new Point3d(0, 0, 0);
Point3d point2 = new Point3d(10, 0, 0);
LineSegment3d line = new LineSegment3d(point1, point2);

Point3d point = new Point3d(0, 0, 0);
Vector3d vector = new Vector3d(10, 0, 0);
LineSegment3d line = new LineSegment3d(point, vector);

Point3d point = new Point3d(0, 0, 0);
Vector3d vector = new Vector3d(0, 0, 10);
LineSegment3d line = new LineSegment3d(point, vector);
Plane plane = line.GetBisector();

Point3d point = new Point3d(0, 0, 0);
Vector3d vector = new Vector3d(10, 0, 0);
LineSegment3d line = new LineSegment3d(point, vector);
Point3d point1 = line.BaryComb(0.6);//(6,0,0)
Point3d point2 = line.BaryComb(-2);//(-20,0,0)
Point3d point3 = line.BaryComb(3);//(30,0,0)

Point3d point = new Point3d(0, 0, 0);
Vector3d vector = new Vector3d(10, 0, 0);
LineSegment3d line = new LineSegment3d(point, vector);
Point3d point1 = new Point3d(5, 5, 0);
Point3d point2 = new Point3d(10, 10, 0);
line.Set(point1, point2);

Point3d point = new Point3d(0, 0, 0);
Vector3d vector = new Vector3d(10, 0, 0);
LineSegment3d line = new LineSegment3d(point, vector);
Point3d point1 = new Point3d(5, 5, 0);
Vector3d vector1 = new Vector3d(5, 5, 0);
line.Set(point1, vector1);

Circle circle = new Circle(new Point3d(), Vector3d.ZAxis, 10);
Curve3d curve = circle.GetGeCurve();
Point3d point = new Point3d(20, 0, 0);
double parameter = 1;
LineSegment3d line = new LineSegment3d();
line.Set(curve, point, parameter);
//扩展一下。求点到圆的两个切线
Circle circle = new Circle(new Point3d(), Vector3d.ZAxis, 10);
Curve3d curve = circle.GetGeCurve();
Point3d point = new Point3d(20, 0, 0);
List<LineSegment3d> lines = new List<LineSegment3d>();
for (double i = 0; i < Math.PI * 2; i += 0.1)
{
    LineSegment3d line = new LineSegment3d();
    line.Set(curve, point, i);
    if (lines.Any(l => l.EndPoint == line.EndPoint)) continue;
    lines.Add(line);
}

Circle circle1 = new Circle(new Point3d(), Vector3d.ZAxis, 10);
Circle circle2 = new Circle(new Point3d(50,0,0), Vector3d.ZAxis, 20);
Curve3d curve1 = circle1.GetGeCurve();
Curve3d curve2 = circle2.GetGeCurve();
double parameter1 = 1.5;
double parameter2 = 1.5;
LineSegment3d line = new LineSegment3d();
line.Set(curve1, curve2, parameter1, parameter2);
//扩展一下。求两个圆的四个切线
Circle circle1 = new Circle(new Point3d(), Vector3d.ZAxis, 10);
Circle circle2 = new Circle(new Point3d(50, 0, 0), Vector3d.ZAxis, 20);
Curve3d curve1 = circle1.GetGeCurve();
Curve3d curve2 = circle2.GetGeCurve();
List<LineSegment3d> lines = new List<LineSegment3d>();
for (double i = 0; i < Math.PI*2; i += 0.1)
{
    for (double j = 0; j < Math.PI * 2; j += 0.1)
    {
        LineSegment3d line = new LineSegment3d();
        line.Set(curve1, curve2, i, j);
        if (lines.Any(l => l.StartPoint == line.StartPoint || l.EndPoint == line.EndPoint)) continue;
        lines.Add(line);
    }
}
lines.ForEach(l => Curve.CreateFromGeCurve(l).AddEntity());
circle1.AddEntity();
circle2.AddEntity();

三维向量Vector3d

属性 数据类型 说明
LargestElement int 最长的项的序列(0,1,2)
LengthSqrd double 长度的平方x²+y²+z²
Length double 长度√(x² + y² + z²)
this[int i] double 按序号取值0-X 1-Y 2-Z
XAxis Vector3d X轴单位向量
YAxis Vector3d Y轴单位向量
ZAxis Vector3d Z轴单位向量
X double 向量的X值
Y double 向量的Y值
Z double 向量的Z值
Vector3d RotateBy
(
  double angle,
  Vector3d axis
)


起点
起点到终点向量
MIT License Copyright (c) 2023 闻人南 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

CAD二次开发api介绍 展开 收起
C#
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/liitee/cadapi.git
git@gitee.com:liitee/cadapi.git
liitee
cadapi
CAD二次开发api
master

搜索帮助