Files
MsAddIns/Mstn.Toolkit/Helpers/ElementCreationHelper.cs

739 lines
33 KiB
C#
Raw Normal View History

2026-02-28 21:01:57 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using Bentley.DgnPlatformNET;
using Bentley.DgnPlatformNET.Elements;
using Bentley.GeometryNET;
using Bentley.MstnPlatformNET;
namespace Mstn.Toolkit.Helpers
{
public class ElementCreationHelper
{
/// <summary>
/// 在当前模型中创建椭圆
/// </summary>
/// <param name="centerPoint"></param>
/// <param name="longVector">长轴向量</param>
/// <param name="shortVector">短轴向量</param>
/// <returns></returns>
public static ArcElement CreateArc(DPoint3d centerPoint, DVector3d longVector, DVector3d shortVector)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
DEllipse3d ellipse = new(centerPoint, longVector, shortVector);
ArcElement arc = new(dgnModel, null, ellipse);
arc.AddToModel();
return arc;
}
/// <summary>
/// Angle.PI.Radians
/// </summary>
/// <param name="centerPoint">中心点</param>
/// <param name="longLength">长轴长</param>
/// <param name="shortLength">短轴长</param>
/// <param name="startRadian">起始弧度</param>
/// <param name="sweepRadian">扫过的弧度</param>
/// <remarks>创建弧度的方法Angle.PI.Radians</remarks>
/// <returns></returns>
public static ArcElement CreateArc(DPoint3d centerPoint, double longLength, double shortLength, double startRadian, double sweepRadian)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
/*
*
* dgnModel
* templateElement
* center
* axis1:
* axis2:
* rotation
* start
* sweep
*/
ArcElement arc = new(dgnModel, null, centerPoint, longLength, shortLength, 0, startRadian, sweepRadian);
arc.AddToModel();
return arc;
}
/// <summary>
/// 折线
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public static BSplineCurveElement CreateBSplineCurve(params DPoint3d[] points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
MSBsplineCurve msBSplineCurve = MSBsplineCurve.CreateFromPoints(points);
//用B样条曲线创建B样条曲线元素
BSplineCurveElement bSplineCurve = new(dgnModel, null, msBSplineCurve);
bSplineCurve.AddToModel();
return bSplineCurve;
}
/// <summary>
/// 创建B样条曲线元素
/// </summary>
/// <param name="tangents">起终点切向</param>
/// <param name="points"></param>
/// <returns></returns>
public static BSplineCurveElement CreateBSplineCurve(List<DVector3d> tangents, params DPoint3d[] points)
{
if (tangents.Count != 2)
{
throw new ArgumentException("参数有误起终点切向方向数量有误必须为2");
}
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
/*
*线线
* points:
* removeDuplicatePoints
* endTangents线
* closedCurve线
* colinearTangents线线
* chordLenTangents
* naturalTangents线
*/
MSInterpolationCurve interpolationCurve = MSInterpolationCurve.CreateFromPointsAndEndTangents(
points,
true,
0,
tangents,
true,
false,
false,
false);
BSplineCurveElement bSplineCurve = new(dgnModel, null, interpolationCurve);
bSplineCurve.AddToModel();
return bSplineCurve;
}
/// <summary>
/// 创建复杂形状
/// </summary>
/// <param name="elements"></param>
public static void CreateComplexShape(params Element[] elements)
{
var dgnModel = Session.Instance.GetActiveDgnModel();
ComplexShapeElement complexShape = new(dgnModel, null);//创建复杂形元素
foreach (var elem in elements)
{
complexShape.AddComponentElement(elem);
}
complexShape.AddComponentComplete();//添加子部件完成
complexShape.AddToModel();//将复杂元素写入模型
}
public static ComplexStringElement CreateComplexString(params DisplayableElement[] elements)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
ComplexStringElement complexString = new(dgnModel, null);
foreach (DisplayableElement element in elements)
{
complexString.AddComponentElement(element);
}
complexString.AddToModel();
return complexString;
}
/// <summary>
/// 创建圆台
/// </summary>
/// <param name="topRadius"></param>
/// <param name="bottomRadius"></param>
/// <param name="points"></param>
/// <returns></returns>
public static ConeElement CreateCone(double topRadius, double bottomRadius, List<DPoint3d> points)
{
var dgnModel = Session.Instance.GetActiveDgnModel();
var cone = new ConeElement(dgnModel, null, topRadius, bottomRadius, points.First(), points
.Last(), DMatrix3d.Identity, true);
cone.AddToModel();
return cone;
}
/// <summary>
/// 在当前模型中创建曲线元素
/// </summary>
/// <param name="points">三维点个数需大于等于6</param>
/// <returns></returns>
public static CurveElement CreateCurve(params DPoint3d[] points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
CurveElement curve = new(dgnModel, null, points);
curve.AddToModel();
return curve;
}
/// <summary>
/// 在当前模型中创建曲线元素
/// </summary>
/// <param name="points">三维点个数需大于等于6</param>
/// <returns></returns>
public static CurveElement CreateCurve(List<DPoint3d> points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
CurveElement curve = new(dgnModel, null, points);
curve.AddToModel();
return curve;
}
/// <summary>
/// 创建椭圆
/// </summary>
/// <param name="centerPo">椭圆圆心</param>
/// <param name="vector0In">主轴向量</param>
/// <param name="vector90In">副轴向量</param>
public static EllipseElement CreateEllipse(DPoint3d centerPo, DVector3d vector0In, DVector3d vector90In)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
DEllipse3d ellipse = new(centerPo, vector0In, vector90In);//创建椭圆几何
EllipseElement ellipseElem = new(dgnModel, null, ellipse);//使用椭圆几何创建椭圆元素
ellipseElem.AddToModel();
return ellipseElem;
}
/// <summary>
/// 创建椭圆
/// </summary>
/// <param name="centerPo">椭圆圆心</param>
/// <param name="longAxis">主轴长度</param>
/// <param name="shortAxis">主轴长度</param>
/// <param name="angle"></param>
public static EllipseElement CreateEllipse(DPoint3d centerPo, double longAxis, double shortAxis, double angle)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
EllipseElement ellipseElem = new(dgnModel, null, centerPo, longAxis, shortAxis, angle);
ellipseElem.AddToModel();
return ellipseElem;
}
/// <summary>
/// 创建椭圆
/// </summary>
/// <param name="centerPo">椭圆圆心</param>
/// <param name="longAxis">主轴长度</param>
/// <param name="shortAxis">主轴长度</param>
/// <param name="matrix">变换矩阵</param>
public static EllipseElement CreateEllipse(DPoint3d centerPo, double longAxis, double shortAxis, DMatrix3d matrix)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
EllipseElement ellipseElem = new(dgnModel, null, centerPo, longAxis, shortAxis, matrix);
ellipseElem.AddToModel();
return ellipseElem;
}
/// <summary>
/// 在当前模型中创建直线元素
/// </summary>
/// <param name="startPoint"></param>
/// <param name="endPoint"></param>
/// <returns></returns>
public static LineElement CreateLine(DPoint3d startPoint, DPoint3d endPoint)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
//创建直线图元
DSegment3d segment = new(startPoint, endPoint);
//创建直线元素
var line = new LineElement(dgnModel, null, segment);
line.AddToModel();
return line;
}
/// <summary>
/// 在当前模型中创建线串元素
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public static LineStringElement CreateLineString(params DPoint3d[] points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
var pointString = new LineStringElement(dgnModel, null, points);
pointString.AddToModel();
return pointString;
}
/// <summary>
///
/// </summary>
/// <param name="pos">多面体坐标的列表</param>
public static void CreateMesh(List<DPoint3d> pos)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
//TODO
#region create polyface
//DPoint3d p1 = DPoint3d.Zero;//创建多面体端点坐标
//DPoint3d p2 = new(10000, 0, 0);
//DPoint3d p3 = new(0, 10000, 0);
//DPoint3d p4 = new(0, 0, 10000);
//IList<DPoint3d> pos =
//[
// p1,//将多面体端点坐标添加到列表中
// p2,
// p3,
// p4,
//];//创建储存多面体坐标的列表
PolyfaceHeader polyface = new()
{
Point = pos//设置该多面体几何的端点集
};//创建多面体几何
polyface.ActivateVectorsForIndexing(polyface);//激活多面体几何中的数据与索引
List<int> indices =
[
1,
2,
3, //将索引号添加到列表中
];//创建索引列表
polyface.AddIndexedFacet(indices, null, null, indices);//添加索引信息到多面体几何中
indices.Clear();//清空索引列表
indices.Add(1); indices.Add(2); indices.Add(4);//继续将索引号添加到列表中
polyface.AddIndexedFacet(indices, null, null, indices);
indices.Clear();
indices.Add(2); indices.Add(3); indices.Add(4);
polyface.AddIndexedFacet(indices, null, null, indices);
indices.Clear();
indices.Add(1); indices.Add(3); indices.Add(4);
polyface.AddIndexedFacet(indices, null, null, indices);
#endregion
MeshHeaderElement mesh = new(dgnModel, null, polyface);//创建使用多面体几何网格元素
mesh.AddToModel();//将网格元素添加到模型空间中
}
/// <summary>
/// 创建多线
/// </summary>
public static void CreateMultiLine()
{
// TODO
var dgnModel = Session.Instance.GetActiveDgnModel();
DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获取当前模型所属文件
MultilineStyle lineStyle = new("testMultiline", dgnFile);//创建多线元素样式
MultilineProfile profile1 = new()
{
Distance = 0,//设置轮廓偏移基点
UseLinestyle = true,//设置轮廓是否使用线样式
Linestyle = 1//设置轮廓线样式
};//创建多线轮廓
lineStyle.InsertProfile(profile1, 0);//将轮廓信息写入多线样式中
MultilineProfile profile2 = new()
{
Distance = -10000//设置轮廓偏移基点
};//创建多线轮廓
lineStyle.InsertProfile(profile2, 1);//将轮廓信息写入多线样式中
DVector3d vector = DVector3d.UnitZ;//设置多线法线方向向量
DPoint3d p1 = DPoint3d.Zero;//设置多线轨迹控制点
DPoint3d p2 = new(100000, 0, 0);
DPoint3d p3 = new(200000, 200000, 0);
DPoint3d[] pos = { p1, p2, p3 };//创建轨迹点数组
MultilineElement multiline = MultilineElement.CreateMultilineElement(
dgnModel,
null,
lineStyle,
1,
vector,
pos);
/*
* 线
* dgnModel线
* templateElement
* mlineStyle线
* styleScale
* normal线线
* points
*/
multiline.AddToModel();//将多线元素写入模型空间
}
/// <summary>
/// 在当前模型中创建点串元素
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public static PointStringElement CreatePointString(params DPoint3d[] points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
var pointString = new PointStringElement(dgnModel, null, points, true);
pointString.AddToModel();
return pointString;
}
/// <summary>
/// 在当前模型中创建点串元素
/// </summary>
/// <param name="ms">变换矩阵</param>
/// <param name="points"></param>
/// <remarks>矩阵个数要于点数一致,且一一对应</remarks>
/// <returns></returns>
public static PointStringElement CreatePointString(DMatrix3d[] ms, DPoint3d[] points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
var pointString = new PointStringElement(dgnModel, null, points, ms, true);
pointString.AddToModel();
return pointString;
}
/// <summary>
/// 拉伸投影体
/// </summary>
/// <param name="origin">拉伸起点</param>
/// <param name="extrudeVector">拉伸方向及长度</param>
/// <param name="profilePoints"></param>
/// <param name="isSolid"></param>
/// <returns></returns>
public static SurfaceOrSolidElement CreateProjectionSolid(DPoint3d origin, DVector3d extrudeVector, bool isSolid, params DPoint3d[] profilePoints)
{
var dgnModel = Session.Instance.GetActiveDgnModel();
ShapeElement shape = new(dgnModel, null, profilePoints);
/*
* 使
* dgnModel
* templateElement
* profile
* origin
* extrudeVector
* transform
* preferSolidtrue
*/
SurfaceOrSolidElement surface = SurfaceOrSolidElement.CreateProjectionElement(
dgnModel,
null,
shape,
origin,
extrudeVector,
DTransform3d.Identity,
isSolid);
surface.AddToModel();
return surface;
}
/// <summary>
/// 创建旋转体
/// </summary>
/// <param name="shape">轮廓</param>
/// <param name="centerPo">创建旋转体元素的中心点</param>
/// <param name="axis">创建旋转体元素的旋转轴</param>
public static void CreateRevolution(ShapeElement shape, DPoint3d centerPo, DVector3d axis, bool isSolid)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
SurfaceOrSolidElement solid = SurfaceOrSolidElement.CreateRevolutionElement(
dgnModel,
null,
shape,
centerPo,
axis,
Angle.PI.Radians / 2,
isSolid);
/*
*
* dgnModel
* templateElement
* profile
* center
* axis:线
* sweepAngle
* preferSolidtrue
*/
solid.AddToModel();//将旋转体元素写入模型
}
/// <summary>
/// 规则拉伸体
/// </summary>
/// <param name="profileA">截面1</param>
/// <param name="profileB">截面2</param>
public static void CreateRuledSweep(CurveVector profileA, CurveVector profileB)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前激活的model
//创建规则拉伸体 DgnRuledSweep
DgnRuledSweep dgnRuledSweepDetail = new(profileA, profileB, true);
//转化为element 添加到model中
Element element = DraftingElementSchema.ToElement(dgnModel, dgnRuledSweepDetail, null);
element.AddToModel();
}
/// <summary>
/// //在当前模型中创建形元素
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public static ShapeElement CreateShape(params DPoint3d[] points)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
ShapeElement shape = new(dgnModel, null, points);
shape.AddToModel();
return shape;
}
/// <summary>
/// 拉伸体
/// </summary>
/// <param name="profileCurve">拉伸体拉伸平面轮廓线</param>
/// <param name="extrudeCurve">拉伸体截面轮廓线</param>
public static Element CreateSmartSolidFromExtrusion(CurveVector profileCurve, CurveVector extrudeCurve)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
Create.BodyFromCurveVector(out SolidKernelEntity profileEntity, profileCurve, dgnModel);//将拉伸平面轮廓线转化为SolidKernelEntity
Create.BodyFromCurveVector(out SolidKernelEntity extrudeEntity, extrudeCurve, dgnModel);//将截面轮廓线转化为SolidKernelEntity
Create.BodyFromExtrusionToBody(out SolidKernelEntity solid, extrudeEntity, profileEntity, false);
/*
*
* entityOut
* extrudeToIn
* profileIn
* reverseDirectionIn线
*/
Convert1.BodyToElement(out Element solidElem, solid, null, dgnModel);//将实体转换为元素
solidElem.AddToModel();//将元素写入模型空间
return solidElem;
}
public static Element CreateSmartSolidFromLoft(params CurveVector[] profilesIns)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
Create.BodyFromLoft(out SolidKernelEntity entityOut, profilesIns, profilesIns.Length, profilesIns, 0, dgnModel, false, false);
/*
* 线
* bool segmentIn
* entityOut
* profilesIn
* nProfilesIn
* guidesIn线线 使线
* nGuidesIn线线
* modelRefIn
* periodicIn
* segmentIn:线线
*/
Convert1.BodyToElement(out Element eeh, entityOut, null, dgnModel);//将SolidKernelEntity转换为元素
eeh.AddToModel();//将元素写入模型
return eeh;
}
public static Element CreateSmartSolidFromLoft(params ShapeElement[] profilesIns)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
CurveVector[] profilesIn = new CurveVector[profilesIns.Length];//创建截面曲线数组
for (int i = 0; i < profilesIns.Length; i++)
{
var shp0 = profilesIns[i];
profilesIn[i] = CurvePathQuery.ElementToCurveVector(shp0);//将面转换为曲线
}
Create.BodyFromLoft(out SolidKernelEntity entityOut, profilesIn, profilesIn.Length, profilesIn, 0, dgnModel, false, false);
/*
* 线
* bool segmentIn
* entityOut
* profilesIn
* nProfilesIn
* guidesIn线线 使线
* nGuidesIn线线
* modelRefIn
* periodicIn
* segmentIn:线线
*/
Convert1.BodyToElement(out Element eeh, entityOut, null, dgnModel);//将SolidKernelEntity转换为元素
eeh.AddToModel();//将元素写入模型
return eeh;
}
/// <summary>
/// 拉伸智能实体
/// </summary>
/// <param name="profile">轮廓线</param>
/// <param name="vector">拉伸向量(包含拉伸长度及方向信息)</param>
public static Element CreateSmartSolidFromPrimitive(CurveVector profile, DVector3d vector)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
DgnExtrusionDetail detail = new(profile, vector, true);
/*
*
* baseCurve线
* extrusionVector
* capped
*/
SolidPrimitive solid = SolidPrimitive.CreateDgnExtrusion(detail);//使用拉伸信息创建实体
Create.BodyFromSolidPrimitive(out SolidKernelEntity entityOut, solid, dgnModel);//使用拉伸实体创建SolidKernelEntity
Convert1.BodyToElement(out Element eeh, entityOut, null, dgnModel);//将SolidKernelEntity转换为元素
eeh.AddToModel();//将元素写入模型
return eeh;
}
/// <summary>
/// 缝合实核实体
/// </summary>
/// <param name="shapeElements">形状</param>
public static void CreateSmartSolidFromSew(params ShapeElement[] shapeElements)
{
SolidKernelEntity[] tools = new SolidKernelEntity[shapeElements.Length];//创建实核实体列表
for (int i = 0; i < shapeElements.Length; i++)
{
Convert1.ElementToBody(out tools[i], shapeElements[i], false, true, false);//将Shape元素转换为实核实体
}
BrepCellHeaderElement brepCellHeader = null;//初始化智能实体
if (BentleyStatus.Success == Modify.SewBodies(out SolidKernelEntity[] sewns, out SolidKernelEntity[] unsewns, ref tools, 6, 0, 1))//缝合实核实体
{
for (int i = 0; i < sewns.Length; i++)//遍历缝合结果
{
brepCellHeader = new BrepCellHeaderElement(Session.Instance.GetActiveDgnModel(), null, sewns[i]);//创建智能实体
brepCellHeader.AddToModel();//将智能实体写入模型
}
}
}
/// <summary>
/// 扫掠体
/// </summary>
/// <param name="curve">截面</param>
/// <param name="pathCurve">路径</param>
/// <returns></returns>
public static Element CreateSmartSolidFromSweep(CurveVector curve, CurveVector pathCurve)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
Create.BodyFromSweep(out SolidKernelEntity entityOut, curve, pathCurve, dgnModel, false, true, false,
null, null, null, null);
/*
* 使
* entityOut
* profileIn
* pathIn线
* modelRefIn
* alignParallelIn:线
* selfRepairIn
* createSheetIn
* lockDirectionIn使线alignParallelIn为真时有效
* twistAngleIn沿
* scaleIn沿
* scalePointIn:
*/
Convert1.BodyToElement(out Element eeh, entityOut, null, dgnModel);//将SolidKernelEntity转换为元素
eeh.AddToModel();//将元素写入模型
return eeh;
}
/// <summary>
/// 扫掠体
/// </summary>
/// <param name="Profile">截面形状</param>
/// <param name="pathPos">路径点</param>
/// <returns></returns>
public static Element CreateSmartSolidFromSweep(ShapeElement Profile, params DPoint3d[] pathPos)
{
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获取当前的模型空间
CurveVector curve = CurvePathQuery.ElementToCurveVector(Profile);//使用图形元素获得轮廓线
LineStringElement lineString = new(dgnModel, null, pathPos);//创建线串元素
CurveVector pathCurve = lineString.GetCurveVector();//使用线串元素获得扫掠轨迹点
Create.BodyFromSweep(out SolidKernelEntity entityOut, curve, pathCurve, dgnModel, false, true, false,
null, null, null, null);
/*
* 使
* entityOut
* profileIn
* pathIn线
* modelRefIn
* alignParallelIn:线
* selfRepairIn
* createSheetIn
* lockDirectionIn使线alignParallelIn为真时有效
* twistAngleIn沿
* scaleIn沿
* scalePointIn:
*/
Convert1.BodyToElement(out Element eeh, entityOut, null, dgnModel);//将SolidKernelEntity转换为元素
eeh.AddToModel();//将元素写入模型
return eeh;
}
/// <summary>
/// 创建曲面
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public static BrepCellHeaderElement CreateSmartSurface(List<DPoint3d> points)
{
var dgnModel = Session.Instance.GetActiveDgnModel();
CurveVector curve = CurveVector.CreateLinear(points, CurveVector.BoundaryType.Outer, true);//根据列表中的端点坐标创建曲线
Create.BodyFromCurveVector(out var solid, curve, dgnModel);//使用曲线创建SolidEntity
BrepCellHeaderElement brepCellHeader = new(dgnModel, null, solid);//使用SolidEntity创建智能实体
return brepCellHeader;
}
public static void CreateTag(DPoint3d insertPoint, Element elementToTag, object value)
{
DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获得创建文本元素的文件
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得创建文本元素的模型空间
DgnTagDefinition[] tagDefs =
[
new DgnTagDefinition
{
Name = "Line",//设置标签名称
TagDataType = TagType.Double,//设置标签类型
Value = value//设置标签值
},//创建标签定义
];//创建标签定义数组
TagSetElement tagSet = new(dgnModel, tagDefs, tagDefs[0].Name, "", true, dgnFile, 0);//创建标签集元素
tagSet.AddToModel();//将标签集元素写入模型
DMatrix3d orientation = DMatrix3d.Identity;//设置标签变换矩阵
DgnTextStyle style = DgnTextStyle.GetSettings(dgnFile);//从当前激活的文件中获得文字样式
TagElement tag = new(
dgnModel,
null,
tagSet.SetName,
tagSet.SetName,
null,
style,
false,
insertPoint,
orientation,
elementToTag);//创建标注元素
tag.AddToModel();//将标注元素写入模型
}
/// <summary>
/// 创建文本元素
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
public static TextElement CreateText(string content)
{
DgnFile dgnFile = Session.Instance.GetActiveDgnFile();//获得创建文本元素的文件
DgnModel dgnModel = Session.Instance.GetActiveDgnModel();
TextBlockProperties txtBlockProp = new(dgnModel)
{
IsViewIndependent = false//设置文本非独立于视图
};//创建文本属性
ParagraphProperties paraProp = new(dgnModel);//创建段落属性
DgnTextStyle txtStyle = DgnTextStyle.GetSettings(dgnFile);//从激活的文件中获得文字样式
RunProperties runProp = new(txtStyle, dgnModel);//创建运行属性
TextBlock txtBlock = new(txtBlockProp, paraProp, runProp, dgnModel);//创建文本块
txtBlock.AppendText(content);//设置文本块文字内容
TextElement text = (TextElement)TextHandlerBase.CreateElement(null, txtBlock);//创建文本元素
text.AddToModel();//将生成的文本元素写入模型
return text;
}
}
}