Tekla 二次开发:Brep API 完全解析 - 钢结构资源网 Tekla插件 CAD工具 犀牛GH汉化 套料 Tekla 二次开发:Brep API 完全解析 - 钢结构资源网 Tekla插件 CAD工具 犀牛GH汉化 套料

Tekla 二次开发:Brep API 完全解析

TEKLA API
Brep
Tekla Structures 二次开发
 
边界表示(BRep)· 完全 API 解析

 

Tekla Structures Brep API 完全解析

 

Brep(Boundary Representation,边界表示)是用于在 Tekla 模型中创建实体几何零件的核心类。它通过定义起始点与终止点,配合截面与材质信息,在模型中生成具有指定截面形状的一维拉伸实体。该类继承自 Part,提供了完整的创建、查询、修改和删除方法。

 

一、继承体系

Brep 是一个密封类(sealed),无法被其他类继承。它的继承链如下:

System.Object
  └── ModelObject
        └── Part
              └── Brep (sealed)

Brep 直接继承了 Part 的所有几何与属性操作能力,并实现了 InsertSelectModifyDelete 等实体对象的生命周期方法。

二、构造函数

Brep 提供两个构造函数:

构造函数 说明
Brep() 无参构造。自动初始化所有默认值。
Brep(Point startPoint, Point endPoint) 通过起点和终点构造。任一参数为 null 时会自动创建新的 Point()。

无参构造函数自动完成以下初始化:

  • StartPoint = 新的 Point()(坐标全为 0)
  • EndPoint = 新的 Point()(坐标全为 0)
  • Class = "1"
  • Name = "BREP"
  • StartPointOffset = 新的 Offset()
  • EndPointOffset = 新的 Offset()
// 无参构造
Brep brep = new Brep();

// 带起止点构造
Brep brep2 = new Brep(
    new Point(0, 0, 0),
    new Point(1000, 0, 0)
);

三、属性

自身属性

属性 类型 说明
StartPoint Point 获取或设置 Brep 实体的起始点坐标。
EndPoint Point 获取或设置 Brep 实体的终止点坐标。
StartPointOffset Offset 获取或设置起始点的偏移量。
EndPointOffset Offset 获取或设置终止点的偏移量。

继承自 Part / ModelObject 的属性

属性 类型 继承自 说明
Name string Part 零件名称,默认 "BREP"。
Class string Part 零件等级,默认 "1"。
Finish string Part 表面处理代码,如 "GALV"。
PartNumber string Part 零件编号。
AssemblyNumber string Part 构件编号。
Profile Profile Part 实体的截面,通过 Profile.ProfileString 指定。
Material Material Part 实体的材质,通过 Material.MaterialString 指定。
Position Position Part 控制实体在截面方向上的位置。
Identifier Identifier ModelObject 模型对象的唯一标识符。
ModificationTime DateTime ModelObject 对象最后修改时间。
UserPhase int ModelObject 用户定义的状态阶段。
注意:以上仅为最常用的属性,Part 与 ModelObject 还提供更多细节属性,如 DeformingData、UserDefinedProperty 等,可按需查阅 API 文档。

四、枚举类型

本类未定义任何公开枚举类型。Brep 的内部类型标识由模型枚举 ModelObjectEnum.BREP 进行识别,在插入和修改时通过 ModelModuleManager.CheckModules(ModelObjectEnum.BREP) 进行模块校验。

五、方法

自身方法

方法 返回类型 说明
Insert() bool 将 Brep 写入模型数据库。内部校验参数后导出到模型。成功返回 true。
Select() bool 根据当前 Identifier 从模型中读取 Brep 的属性与几何数据。
Modify() bool 将修改后的 Brep 数据更新回模型。
Delete() bool 从模型中删除该 Brep 实体。

继承方法

方法 返回类型 说明
GetSolid() Solid 返回零件的三维实体几何。
GetBolts() List<BoltGroup> 获取连接到此零件的螺栓组。
GetUserProperty(string name) double 获取用户定义属性的值(双精度)。
SetUserProperty(string name, double value) bool 设置用户定义属性。
GetReportProperty(string name) string 获取报告属性(字符串)。
GetCenterLine() Line 获取零件的中心线。
GetPartMark() string 获取零件标记。

六、完整代码示例

示例1:创建一块基本 Brep 实体

using Tekla.Structures.Model;
using Tekla.Structures.Geometry3d;

public void CreateBasicBrep()
{
    // 1. 创建 Brep 对象,指定起点和终点
    Brep brep = new Brep(
        new Point(0, 0, 0),
        new Point(1000, 0, 0)
    );

    // 2. 设置基本属性
    brep.Profile.ProfileString = "HEA200";
    brep.Material.MaterialString = "Steel_Undefined";
    brep.Finish = "GALV";
    brep.Name = "MyBrep";

    // 3. 设置起点/终点偏移(可选)
    brep.StartPointOffset = new Offset();
    brep.StartPointOffset.Dx = 50;
    brep.EndPointOffset = new Offset();
    brep.EndPointOffset.Dx = 50;

    // 4. 插入模型
    bool result = brep.Insert();
    if (result)
        Console.WriteLine("Brep 创建成功,ID:" + brep.Identifier.ID);
    else
        Console.WriteLine("创建失败,请检查参数是否有效");
}

示例2:查询并修改已有 Brep

public void ModifyExistingBrep(int brepId)
{
    Brep brep = new Brep();
    brep.Identifier.ID = brepId;

    // 1. 选中模型中的 Brep,读取当前数据
    if (!brep.Select())
    {
        Console.WriteLine("未找到指定的 Brep");
        return;
    }

    // 2. 修改表面处理和材质
    brep.Finish = "BLAST";
    brep.Material.MaterialString = "Stainless";

    // 3. 修改终点位置(沿 Y 向偏移 200mm)
    Point newEnd = new Point(
        brep.EndPoint.X,
        brep.EndPoint.Y + 200,
        brep.EndPoint.Z
    );
    brep.EndPoint = newEnd;

    // 4. 提交修改
    if (brep.Modify())
        Console.WriteLine("Brep 修改成功");
    else
        Console.WriteLine("修改失败");
}

示例3:删除 Brep

public void DeleteBrep(int brepId)
{
    Brep brep = new Brep();
    brep.Identifier.ID = brepId;

    if (brep.Delete())
        Console.WriteLine("Brep 已删除");
    else
        Console.WriteLine("删除失败,请检查 ID 是否存在");
}

示例4:遍历模型中的所有 Brep

using Tekla.Structures.Model;

public void ListAllBreps()
{
    Model model = new Model();
    ModelObjectEnumerator enumerator = model.GetModelObjectSelector()
        .GetAllObjectsWithType(ModelObjectEnum.BREP);

    while (enumerator.MoveNext())
    {
        Brep brep = enumerator.Current as Brep;
        if (brep != null)
        {
            Console.WriteLine($"ID: {brep.Identifier.ID}, " +
                $"截面: {brep.Profile.ProfileString}, " +
                $"起点: ({brep.StartPoint.X}, {brep.StartPoint.Y}, {brep.StartPoint.Z})");
        }
    }
}

七、常见问题与注意事项

  • 必须设置的属性:StartPointEndPointProfileMaterial 是插入模型的前提。若有缺失,将抛出 ArgumentException,提示 "Required information missing"。
  • 起止点不能重合:内部校验方法 BrepParametersCheck() 会检查两点是否相等。若坐标相同,将抛出 ArgumentException,提示 "Input Points must be different"。
  • 参数校验时机:Insert()Modify() 都会先调用 BrepParametersCheck() 进行校验,确保起止点非 null、截面非空、材质非 null。
  • Offset 的作用:StartPointOffsetEndPointOffset 分别控制实体在起点和终点处的延伸/缩进量,常用于调整与其他零件的搭接关系。
  • 无参构造后的默认状态:调用 new Brep() 后,起止点坐标全为 0,Profile 和 Material 未设置。必须在调用 Insert() 前完成赋值。
  • 生命周期方法一致性:SelectModifyDelete 在执行前都会检查 Identifier 的有效性,若无效将抛出 ArgumentException
  • 内部数据结构:Brep 在底层使用两个 dotContourPoint_t 结构表示起止点,并通过 ToStruct / FromStruct 进行内存映射转换。
  • 性能考量:批量创建或修改时,建议在循环外复用 Model 对象,并及时调用 CommitChanges() 优化事务性能。
  • 坐标系:起止点坐标使用模型全局坐标,截面方向由 Tekla 内部根据起点到终点的方向向量自动计算。

八、总结

  • Brep 是 Tekla Open API 中用于创建边界表示实体零件的核心类,继承自 Part
  • 必须通过 StartPointEndPoint 定义实体起止位置,并设置 ProfileMaterial
  • 提供 StartPointOffsetEndPointOffset 用于控制实体端部的延伸或缩进。
  • 重写的 InsertSelectModifyDelete 提供了完整的生命周期管理。
  • 内部通过 BrepParametersCheck() 严格校验参数,起止点不能重合,四个关键属性缺一不可。
  • 继承自 PartModelObject 的大量属性和方法使几何查询、属性修改和关系获取非常便捷。
  • 开发时应注意参数校验规则、Offset 的正确使用,并正确理解 Brep 的一维拉伸几何特征。
 

本文适用于 Tekla Structures 2017 及以上版本。

评论 0

sitemap