一、准备阶段
1.Tekla structures 21.0
2.visual studio 2022企业版
以上是我使用的版本,使用的编译语言是C#
二、其他辅助材料
1.TeklaOpenAPI_Reference.chm开发文档,是Tekla的安装目录下自带的,21.0版本的路径是C:\TeklaStructures\21.0\help\enu,可以参考一下,或者可以直接在Tekla的安装目录下搜索文件名。该文件里包含所有二次开发会用到的api接口的类,在后续开发过程中可以一直用到。
2.Tekla developer center,网址是https://developer.tekla.com/,这是Tekla官网的一个开发者中心,里面有很多二次开发的教程和资料,可以自行学习。
三、创建梁
1.打开Tekla软件,新建一个文件;
2.打开Visual studio创建一新项目;

3.
项目命名

4.点击视图,点击工具箱,会出现工具箱一栏

在工具箱中找到button按钮,鼠标左键点击不松开,拖拽到窗体中来

会出现一个按钮,以及这个按钮的属性栏,点击text可以改按钮的显示名字,这里我们改成创建梁,直接用鼠标可以调整按钮的大小

5.双击窗体进入代码编程页面

6.在TeklaOpenAPI Reference的官方文档中,给出的梁创建的例子如下:

7.可以看到首先是需要引用2个程序包:一个是Tekla.Structures.Model,另一个是Tekla.Structures.Geometry3d,引用方法有两种:
- 直接在项目中引用。这两个程序包也是在安装目录下自带的,可以在Visual studio的项目中直接选择引用——添加引用——浏览——以找到您想要引用的类库。



- 在visual studio中下载,引用——管理NuGet程序包——浏览——搜索Tekla——会出现Tekla的所有包,只需下载你所需要的包即可。


8.程序包引用之后就可以编写代码了,直接把辅助文档中的代码复制过来Point会报错,因为因为point在Tekla.Structures.Geometry3d和System.Drawing两个名称空间中都有point这个变量,导致不能正确引用,这样程序就不知道这个point代表的是哪个名称空间中的point,所以我们可以把最上面的Drawing包注释掉,就不会报错了。

9.点击运行,打开beam.Profile.ProfileString = “H1001006*8”;Tekla会发现已创建一个梁。如果创建失败可能是因为两个原因:
- 中国环境中没有此截面材料,解决方法就是将截面材料改成中国环境中存在的材料,如:beam.Profile.ProfileString = “H1001006*8”;
- 模型视图没有刷新,解决方法是加入自动刷新的方法:
Model model = new Model(); model.CommitChanges();
10.完成代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
//using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Tekla.Structures;
using Tekla.Structures.Model;
using Tekla.Structures.Geometry3d;
namespace Tekla_Model04
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Model model = new Model();
private void button1_Click(object sender, EventArgs e)
{
Point point = new Point(0, 0, 0);
Point point2 = new Point(1000, 0, 0);
Beam beam = new Beam();
beam.StartPoint = point;
beam.EndPoint = point2;
beam.Profile.ProfileString = "H100*100*6*8";
beam.Finish = "PAINT";
beam.StartPointOffset = new Offset();
beam.EndPointOffset = new Offset();
bool result = false;
result = beam.Insert();
//Model model = new Model();
model.CommitChanges();
//Console.WriteLine("result");
}
}
}
1609

被折叠的 条评论
为什么被折叠?



