tekla二次开发代码
三维详图设计软件Tekla Structures二次开发

三维详图设计软件Tekla Structures的二次开发摘要:本文介绍了三维详图设计软件tekla structures中采用.net二次开发技术的实际应用,通过实例介绍一个.net的二次开发,解决了软件创建钢梁的低效、繁琐问题,说明tekla structures二次开发对详图设计效率有很大帮助。
关键词:.net三维详图设计软件详图深化设计 tekla structures 二次开发3d detailing software development of tekla structures zhou shubing(zhejiang hang xiao steel structure co.ltd,hang zhou)abstract: this article describes the tekla structures 3d detailing software using a secondary development. net net secondary development of the practical application of the technology introduced through examples, to solve the software to create a steel beam inefficient, cumbersome problem description teklastructures secondary development of detail design efficiency.keywords:. net 3d detailing software design tekla structures detailing development中图分类号:u442.6文献标识码: a 文章编号:1、引言详图深化设计是钢结构施工图设计与工厂加工及现场施工之间的一道重要环节,通过详图深化设计图纸,钢结构施工图得以具体指导工厂加工和现场施工。
如何调试Revit二次开发代码

1.打开Revit,打开visual studio,以下简称VS。
准备好要调试代码的dll文件。
2.在VS中打开要调试代码
3.在需要调试的地方加入断点,如下图所示
4.VS菜单中工具->附加到进程,在打开的对话框中选择Revit,并点击附加按钮
5.进入Revit,打开附加模块->外部工具,选择您要调试的代码所对应的dll,并点击Run
按钮
6.回到VS窗口,如果您的处理执行到了断点位置,则断点处那行代码变黄
7.OK,代码可以调试了,不会调试的恶补一下这方面的知识吧!
8.发现那个地方需要修改,点击停止调试,然后修改代码,并重复3-6重新开始调试。
停
止调试按钮如下图所示
注:在需要频繁修改代码时,不要使用addin加载你插件的dll,这样会导致你修改代码后编译时提示dll正在被使用!。
项目二次开发源代码及详细说明

项目二次开发源代码及详细说明I. 项目介绍本文档描述了一个二次开发项目的源代码及详细说明。
该项目是基于一个开源的企业资源管理系统进行二次开发,以满足特定客户的需求。
原始系统功能包括客户关系管理、订单管理、库存管理等,但客户需要在原始系统的基础上增加一些新的功能,比如业务报表的定制、权限管理的优化等。
为了满足客户的需求,我们需要对原系统进行二次开发,修改和添加一些功能,以适应客户的特定业务需求。
II. 项目目标1. 通过二次开发,实现客户需求的定制化功能,并满足特定的业务需求。
2. 优化原系统的权限管理模块,增强系统的安全性和稳定性。
3. 重构原系统的报表模块,实现业务报表的定制化功能。
4. 对原系统的库存管理模块进行优化,提高系统的性能和稳定性。
III. 项目源代码及详细说明1. 新增功能模块:客户需要系统新增一个产品价格管理模块,方便他们随时根据市场需求调整产品的价格。
我们在系统中增加了产品价格管理的功能模块,客户可以在这个模块中根据自己的需求,对产品的价格进行调整。
以下是新增功能模块的主要源代码及详细说明:```python# 产品价格管理模块import datetimefrom django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100, verbose_name='产品名称')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='产品价格') create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间')class Meta:verbose_name = '产品'verbose_name_plural = verbose_name# 增加产品价格调整记录模型class PriceAdjustRecord(models.Model):product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name='产品')old_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整前价格')new_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整后价格')adjust_time = models.DateTimeField(default=datetime.now, verbose_name='调整时间')class Meta:verbose_name = '价格调整记录'verbose_name_plural = verbose_name```上面的代码是在原系统中新增的产品价格管理模块的源代码。
TEKLA二次开发之AUTOCAD线条模型导入TEKLA

TEKLA二次开发之AUTOCAD线条模型导入TEKLA
1.在CAD中,输入作为图层的TEXT,格式为构件前缀~杆件截面名(波浪号是必须的,用于区别构件前缀和杆
件截面的分隔符),如左下图,用二次开发命令CTLAYERBYTEXT,将这些TEXT创建成各个图层,如右下图所示。
2.用二次开发命令RELAYERCOL,为各图层的颜色重新改颜色,这些颜色在导入到TEKLA后即为杆件的等级色,
结果如下图所示。
3.在CAD中1:1的画好线条(LINE),并在各直线旁边写上构件前缀,如下图所示。
4.用二次开发命令MODLINELAYBYTXT,根据每根直线旁边的构件前缀,将直线置入到对应的图层里,结果如下
图所示。
5.至此,在AUTOCAD中的准备工作已经完成,用二次开发命令OPUTKSJM,将这些直线信息输出成KSJM文件,
以便TEKLA的开发工具读取。
6.启动TEKLA的二次开发的快速建模的工具,点击“浏览…”按钮,找到前面的KSJM文件,如下图所示。
零件
前缀由程序对截面进行分析获得,如H型钢即为H,圆管即为O,圆钢即为D,角钢即为L等,构件前缀即为前面提及的图层名波浪号前得字段,零件起始号、构件起始号、名称、材质、抛光都可以在此修改,零件的等级色即为前面提及的图层颜色值,也有程序指定。
7.点击工具的“创建”按钮,即可以在TEKLA中将模型建好,在这个模型中,可以通过不同的颜色来判断截面
的不同,方便下一步的建节点工作,下图即为完成后的模型。
eclipse jenkins二次开发例子

eclipse jenkins二次开发例子以下是一个基本的Eclipse Jenkins二次开发示例:1. 创建一个Eclipse插件项目:- 打开Eclipse,选择“File” -> “New” -> “Project”。
- 在弹出的对话框中,选择“Plug-in Project”作为项目类型,然后点击“Next”。
- 输入项目名称和项目位置,然后点击“Next”。
- 在“Template”页面上,选择“Hello, World!”模板,然后点击“Next”。
- 在“Plugin Content”页面上,选择“Generate an activator with a basic class”,然后点击“Next”。
- 在“Dependencies”页面上,选择“Jenkins Core”作为依赖项,然后点击“Next”。
- 在“Options”页面上,选择合适的选项,然后点击“Finish”来创建项目。
2. 添加Jenkins扩展点:- 打开项目的`plugin.xml`文件。
- 在扩展标签`<extension>`中添加一个扩展点,例如: xml<extensionpoint="jenkins.jobs"><jobTypename="MyJob"class="com.example.MyJob"plugin="my-plugin-id"/></extension>- 这将在Jenkins中注册一个名为“MyJob”的自定义作业类型。
3. 创建自定义作业类型:- 在项目中创建一个新的Java类,例如`com.example.MyJob`。
- 让该类继承`hudson.model.AbstractProject`,并实现必要的方法。
- 在类中添加必要的注解和逻辑,例如:java@Extensionpublic class MyJob extendsAbstractProject<FreeStyleProject, FreeStyleBuild> { // 添加必要的构造函数和其他方法@Overrideprotected Class<FreeStyleProject> getProjectClass() {return FreeStyleProject.class;}@Overridepublic FreeStyleBuild createExecutable() throws IOException {// 创建并返回一个可执行的构建对象}}- 可以根据需要添加其他自定义逻辑。
基于C#的AutoCAD建筑构件库二次开发

块, R u n t i m e为运 行 模块 。在 V S 2 0 1 5中, 通过 启用 外 部 程 序 a c a d . e x e来进行调 试。设置调用塔 吊的 C A D命名 为 A d d T d , 即
在A u t o C A D界面 中使 用此命令 即可绘制塔 吊。
2 . 2 图形 界 面 交互 模 块
关键词 : 构件库
A u t o C A D ቤተ መጻሕፍቲ ባይዱ # 二次开发
[ a s s e mb l y : C o m ma n d C l a s s ( t y p e o f ( T d . D r a w t d ) ) ]
n a me s p a c e T d
近年 来 , 国内外对 A u t o C A D 二 次 开 发 进 行 了深 入 的 研 究 l 2 J , 因为该软件在建筑业具有 极其 广泛 的适 用性 , 较好 的三
二 次 开 发 。
三维 图形绘 制模 块需要 调用 A u t o d e s k . A u t o C A D提供 的类
库, D a t a b a s e S e r v i c e s 为数 据 服 务 模 块 , G e o m e t r y为几 何 编 辑 模
然而 A u t o C A D的二 次开发软件选择种类众多 , 性能各 异 , 初
{ c l a s s D r a w t d { [ C o mm a n d M e t h o d ( “ A d d T d ” ) ]
p u b l i c v o i d A d d T d( ) …
维显示效果 , 较高 的显 示精 度 J 。 国内一些 知名 建筑 软 件厂 商, 如鲁班软件 、 天正软件 的核心产 品都是基于 A u t o C A D进行 的
caxa二次开发例子代码

caxa二次开发例子代码#include "stdafx.h"#include "eb_api.h" // CAXA EB API 函数#include "resource.h"void dymGenTwoPtLine1(int& step,int& flag); // 两点线方法1 void dymGenTwoPtLine2(int& step,int& flag); // 两点线方法2 int usrAppendDraw(int& step,int& flag){AFX_MANAGE_STATE(AfxGetStaticModuleState())static int c hoice=0; // 注意这里一定要用静态(static)来声明用于纪录选择结果的变量if(step==0) // 第一步{ebClearMenu(); // 清理立即菜单区ebGetMenuChoiceBrk("两点线(方法1)@两点线(方法2)",&choice); //弹出立即菜单项ebRegisterPopMenu(); // 登记工具点菜单}// 根据选择要绘制线的类型来执行相应的函数switch(choice){case 0:dymGenTwoPtLine1(step,flag);break;case 1:dymGenTwoPtLine2(step,flag);break;default:break;}return RT_NORMAL;}/*用第一种方法绘制两点线,这种方法是建立临时直线节点,通过绘制结点的办法来实现拖动效果,使用这种方法具有一定的通用性,可推广到绘制块、箭头、文字等复杂图形,但要特别注意的一点是,为了避免内存泄漏,当绘制完成或取消操作时应该及时使用ebFreeNode函数释放掉临时结点,这点非常重要*/void dymGenTwoPtLine1(int &step,int &flag){static EB_POINT p1,p2; // 注意: 这些在消息循环过程中要发生static int continues=0; // 变化的量应采用静态声明static int maner=0;static int style=0;static double len = 100.0;int ret = 0;int ret1 = 0,ret2 = 0;static EB_NODE line=NULL; // 临时直线,该直线用于中间过程的操作if(line==NULL)line=ebBuildLine(p1,p2); // 如果临时直线还没有创建则先创建一条直线elseebSetLineData(line,p1,p2); // 如果临时直线已经创建则根据两端点修改该直线直线// 以下的代码是为了实现绘制时的拖动效果,if(flag == ERASE_TRACE) // 如果当前绘图标志为擦除时{ebDrawXOR(TRUE); // 打开异或绘图方式ebDrawNode(line); // 绘制一遍直线ebFirstFlag=TRUE; // 置首次绘制标志为真ebDrawXOR(FALSE); // 关闭异或绘图方式return;}if(flag == UPDATE_TRACE) // 如果当前绘图标志为更新时{ebDrawXOR(TRUE);if(ebFirstFlag==TRUE) // 如果这条直线从未画过,则将首次绘制标志置为假ebFirstFlag = FALSE;else // 如果这条直线已经画过,则将再次绘制一遍这条直线,在异或方式下即擦除该直线ebDrawNode(line);ebGetPoint(&p2); // 得到直线的第二点坐标ebSetLineData(line,p1,p2); // 修改直线的两端点坐标ebDrawNode(line); // 将修改后的直线重画一遍ebDrawXOR(FALSE);return;}switch(step){case 0: // 第一步创建立即菜单,并提示输入直线的第一点ebGetMenuChoice("连续@单个",&continues);ebGetMenuChoice("非正交@正交",&maner);ebGetMenuChoiceCondition("点方式@长度方式",&style,&maner,1);ebGetMenuRealCondition("长度:",&len,0.0001,100000,&style,1);ebPrompt("第一点:");break;case 1: // 当用鼠标拾取点或用键盘输入点坐标后,提示输入第二点ret1 = ebGetPoint(&p1); // 得到第一点坐标if(ret1==RT_FINISH||ret1==RT_USERBRK) // 如果点鼠标右键或按键盘的ESC键,则结束绘图{ebFreeNode(line); // 释放临时直线结点所占用内存line=NULL;ebEndCommand(); // 结束命令ebClearMenu(); // 清除菜单return;}flag = UPDATE_TRACE; // 设置绘图方式为更新方式ebSetLineData(line,p1,p2);if(style==0) // 如果绘制普通两点线则提示输入第二点ebPrompt("第二点:");else if(style=1) // 如果以正交方式绘制,则提示输入直线长度ebPrompt("输入长度:");break;case 2: // 第三步得到第二点坐标并绘制这条直线ret2 = ebGetPoint(&p2); // 取第二点坐标if(ret2==RT_FINISH||ret2==RT_USERBRK){ebFreeNode(line); // 释放临时直线结点所占用内存line=NULL;ebEndCommand();ebClearMenu();return;}if(maner==1){ // 正交线,仅作简化处理p2.x=p1.x+len;p2.y=p1.y;}ebInitUndo(); // 初始化UNDO/REDO缓冲区,这样可以是此后插入到// 系统图形数据库中的结点元素可执行UNDO/REDO操作EB_NODE m_line=ebBuildLine(p1,p2); // 以p1和p2点创建一条新的直线结点ebInsNodeT oSys(m_line); // 将该直线插入到系统图形数据库if(continues==0) // 如果要求绘制连续直线{ //连续step = 1; // 设定下一次消息循环从第二步开始p1=p2;flag = UPDATE_TRACE;ebPrompt("第二点:");}else{step = 0;ebPrompt("第一点:");}break;}}/*用第二种方法绘制两点线,这种方法是利用直线的两个点坐标(静态值)和直接绘制直线的函数ebDrawLine绘制直线办法来实现拖动效果,而不必建立临时直线节点,因此不会涉及到内存泄漏,比较安全使用这种方法只适用于绘制点、直线、圆和圆弧几种简单的类型,通用性不如第一种方法但是使用起来比第一种方法简单,在绘制简单图形以及可以用简单类型组合的图形时应尽量使用这种方法。
TEKLA二次开发案例自学手册

TEKLA⼆次开发案例⾃学⼿册这种材料⾯向开发⼈员,他们在Tekla Open API⽅⾯的经验很少。
这包括具有⼀定量指导的练习,但是没有太多⾃动学习和⽐较新颖的东西。
1 Tekla Structures的Tekla Open API的⾃学材料练习的⽬的和结构这种⾃学材料包含练习,以帮助您学习和实践Tekla Open API的基本概念。
想要覆盖开发⼈员可能⾯临的问题都是不可能的,因此特地介绍了⼀些典型的例⼦。
熟悉API后,您可以为其他情况开发⾃⼰的应⽤程序。
这个练习分为⼏个较⼩的练习,⼀个创建⼩建筑物的应⽤程序,然后从那⾥⽣成图纸。
练习包含⼀些建模和图纸的练习。
还包括对话框的使⽤。
在每次练习中,您将在Tekla Structures中看到最终结果的图像,您也可以获取⽰例代码。
下⼀个练习开始时可以使⽤相同的⽰例代码。
如果你⾃⼰的代码太不⼀样以⾄于⽆法轻松地继续练习,你可以使⽤⽰例代码库。
参考⼿册在开始练习之前,强烈建议您阅读Open API的参考⼿册。
参考⼿册TeklaOpenAPI_Reference.chm包含在Open API启动包中。
参考⼿册是使⽤API构建新软件时⾮常宝贵的资源。
关于如何使⽤不同的对象和⽅法有很多很好的例⼦。
这些练习中应使⽤参考⼿册。
以下章节包括⾃学API的练习。
在第1.1章中,有关如何在Microsoft Visual Studio 2010中设置新项⽬以及如何使⽤API的练习。
建模和对话练习在第2章介绍,绘图练习在第3章中介绍。
1.1在Visual Studio中创建⼀个新项⽬您将学习在项⽬中使⽤API所需要做的⼯作。
前提:当您要测试您的应⽤程序时,您需要运⾏Tekla Structures并打开模型,最好是空模型。
1.1.1创建⼀个新的.NET应⽤程序项⽬。
第⼀步是启动Microsoft Visual Studio 2010并从⽂件菜单创建⼀个新项⽬(新建->项⽬)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Tekla的安装目录(D:\TeklaStructures\13.0\nt\bin\plugins\)中为我们提供了.Net API接口,利用这些接口,可以实现对Tekla模型的控制和修改操作。
本贴将讲述一个最简单的在Tekla 中创建梁对象的示例,通过一个按钮在运行的Tekla进程中快速创建模型。
需要注意的是,运行此示例程序时Tekla程度需要打开一个模型。
要连接Tekla模型数据库,需要在C#中添加“Tekla.Structures.Model”的引用,按钮下代码如下(C#):
private void button1_Click(object sender,EventArgs e)
{
Model M=new Model();
if(M.GetConnectionStatus())//判断是否获取了Tekla进程
{
Tekla.Structures.Point Pt1=
new Tekla.Structures.Point(0,0,0);
Tekla.Structures.Point Pt2=
new Tekla.Structures.Point(6000,0,0);
Tekla.Structures.Point Pt3=
new Tekla.Structures.Point(6000,3000,0);
Tekla.Structures.Point Pt4=
new Tekla.Structures.Point(0,3000,0);
Tekla.Structures.Point Pt5=
new Tekla.Structures.Point(0,0,3000);
Tekla.Structures.Point Pt6=
new Tekla.Structures.Point(6000,0,3000);
Tekla.Structures.Point Pt7=
new Tekla.Structures.Point(6000,3000,3000);
Tekla.Structures.Point Pt8=
new Tekla.Structures.Point(0,3000,3000);
Beam C1=new Beam(Pt1,Pt5);
Beam C2=new Beam(Pt2,Pt6);
Beam C3=new Beam(Pt3,Pt7);
Beam C4=new Beam(Pt4,Pt8);
C1.Profile.ProfileString="HM440*300*11*18";
C2.Profile.ProfileString="HM440*300*11*18";
C3.Profile.ProfileString="HM440*300*11*18";
C4.Profile.ProfileString="HM440*300*11*18";
C1.Material.MaterialString="Q235B";
C2.Material.MaterialString="Q235B";
C3.Material.MaterialString="Q235B";
C4.Material.MaterialString="Q235B";
="Column";
="Column";
="Column";
="Column";
C1.Position.Depth=Position.DepthEnum.MIDDLE;
C2.Position.Depth=Position.DepthEnum.MIDDLE;
C3.Position.Depth=Position.DepthEnum.MIDDLE;
C4.Position.Depth=Position.DepthEnum.MIDDLE;
Beam B1=new Beam(Pt5,Pt6);
Beam B2=new Beam(Pt6,Pt7);
Beam B3=new Beam(Pt7,Pt8);
Beam B4=new Beam(Pt8,Pt5);
B1.Profile.ProfileString="HN400*200*8*13";
B2.Profile.ProfileString="HN400*200*8*13";
B3.Profile.ProfileString="HN400*200*8*13";
B4.Profile.ProfileString="HN400*200*8*13";
B1.Material.MaterialString="Q235B";
B2.Material.MaterialString="Q235B";
B3.Material.MaterialString="Q235B";
B4.Material.MaterialString="Q235B";
="Beam";
="Beam";
="Beam";
="Beam";
C1.Insert();//插入梁到模型数据库
C2.Insert();
C3.Insert();
C4.Insert();
B1.Insert();
B2.Insert();
B3.Insert();
B4.Insert();
mitChanges();
}。