一个记录器的二次开发过程

  • 前言
  • 过程
  • 结语

前言

本文介绍了一个源代码中附带的记录器的二次开发过程,记录器的h和cpp文件是源代码自带的。这次花费了我3天的时间,才实现了记录器的添加。

过程

  1. 本记录器名字为SumElementForcesRecorder
  2. 在recorder项目下添加h文件和cpp文件,这里编译时可能会出现cpp文件中的OPS_Export void * OPS_SumElementForcesRecorder()中的OPS_GetString() 报错,OPS_SumElementForcesRecorder()这个函数是不执行的,可以注释掉。
  3. 在classTag.h类中添加新记录器编号,使其能被识别,格式如下:#define RECORDER_TAGS_SumElementForceRecorder 22
  4. 修改recorder项目中的TclRecorderCommands.cpp:首先包含新记录器的头文件,格式为: #include <SumElementForcesRecorder.h>,然后修改其中的TclCreatRecorder()函数,在其中添加该记录器的实例化过程,代码如下:
else if ((strcmp(argv[1], "SumElementForcesRecorder") == 0))
{int numEle = 0;int endEleIDs = 2;bool echoTime = false;int loc = endEleIDs;int flags = 0;int eleData = 0;outputMode eMode = STANDARD_STREAM;ID *eleIDs = 0;int precision = 6;const char* inetAddr = 0;int inetPort;bool closeOnWrite = false;int writeBufferSize = 0;bool doScientific = false;ID* specificIndices = 0;while (flags == 0 && loc < argc)         {if (strcmp(argv[loc],"-ele")==0){if (argc<loc+1){opserr<<"WARNING recorder SumElementForcesRecorder .. -ele tag1?.. - no ele tags specified\n";return TCL_ERROR;}loc++;int eleTag;eleIDs = new ID(0, 32);while (loc < argc && Tcl_GetInt(interp, argv[loc],&eleTag)==TCL_OK)   {(*eleIDs)[numEle] = eleTag;numEle++;loc++;    }Tcl_ResetResult(interp);//if (strcmp(argv[loc],"all")==0)//{// eleIDs = 0;// loc++;//}   }else if ((strcmp(argv[loc],"-time")==0)||(strcmp(argv[loc],"-load")==0)){echoTime = true;loc++;}else if (strcmp(argv[loc],"-file")==0){fileName = argv[loc + 1];eMode = DATA_STREAM;const char* pwd = getInterpPWD(interp);simulationInfo.addOutputFile(fileName, pwd);loc += 2;if (strcmp(argv[loc],"-xml")==0){eMode = XML_STREAM;loc += 1;}}else{eleData = loc;flags = 1;  //表示把所有的可能项都遍历了一边}}if (eMode==DATA_STREAM && fileName!=0){theOutputStream = new DataFileStream(fileName, OVERWRITE, 2, 0, closeOnWrite, precision, doScientific);}else if (eMode == XML_STREAM && fileName != 0){theOutputStream = new XmlFileStream(fileName);}theOutputStream->setPrecision(precision);(*theRecorder) = new SumElementForcesRecorder(*eleIDs, echoTime, theOutputStream);if (eleIDs!=0){delete eleIDs;}}
  1. 然后生成可执行文件,并且运行example.tcl文件,可以看到使用新记录器输出的结果。到此为止,一个简单的记录器二次开发完成。

结语

这是一个比较简单的记录器二次开发实例,主要帮助我们了解记录器的过程,值得一提的是,使用编译可以帮助我们连接OpenSees软件计算过程。记录器的二次开发的难点是对,希望本文能帮助到学习OpenSees二次开发同志。

OpenSees二次开发实例02相关推荐

  1. lisp 圆柱螺旋线_Auto LISP对AutoCAD2002进行二次开发实例——绘制二维函数曲线

    Auto LISP 对 AutoCAD 2002 进行二次开发实例 ---绘制二维函数曲线Ξ李旭荣 ,任奕玲 ,梁秀英 ,刘梅英 (华中农业大学 工程技术学院 ,湖南 武汉 430070) 摘 要:主 ...

  2. solidworks api二次开发实例详解_Solidworks开发语言对比及分析

    很多初学Solidworks二次开发的同学,也许都会纠结使用何种语言进行二次开发.对于Solidworks二次开发的语言,官方有VBA,VB.NET,C#以及C++,四种语言. 用户通常会有如下疑问, ...

  3. python对abaqus本构二次开发_基于Python的Abaqus二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

  4. oa java 二次开发_泛微OA ecology 二次开发实例 开发完整.doc

    泛微OA ecology 二次开发实例 开发完整 二次开发培训文档 ECOLOGY系统框架结构 主要的程序结构 Ecology Classbean 存放编译后的CLASS文件 js 系统中使用的JAV ...

  5. OpenSees二次开发

    OpenSees二次开发 有关时间的函数传递搞定 有关rigidDiaphragm命令的bug解决 时间:2021/05/29 有关时间的函数传递搞定 时间:2021/05/29 在这里插入代码片 有 ...

  6. Python 语言 SAP2000 二次开发 实例

    目 录 Blog Links Remarks Example Blog Links DalNur | 博客总目录 Python语言 SAP2000 二次开发 -- 概述 Python语言 SAP200 ...

  7. 基于python的abaqus二次开发_基于PYTHON的ABAQUS二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

  8. objectarx用户交互_AutoCAD2010二次开发实例教程(附光盘ObjectARX)

    导语 AutoCAD软件二次开发牵涉的面非常广,不可能在一本书中将其完全论述.王文波和邹清源等编著的<AutoCAD2010二次开发实例教程>把AutoCAD软件二次开发的内容归为实体对象 ...

  9. arcgis python实例_arcgis二次开发_arcgis二次开发python_arcgis二次开发实例

    [1.rar] - QQ连连看的源码.单消秒杀挂机等功能喜欢的朋友请拿去研究 [qqCHAR.rar] - qq 验证码识别程序 可以叫准确的识别出qq登陆前的验证码 [1.rar] - 本书以Vis ...

最新文章

  1. 基于监督学习+自监督学习的智能抠图,精确到发丝 | CVPR 2020
  2. 全球及中国工业水性涂料行业销售前景与竞争态势研究报告2022年
  3. “低代码”开发管理应用,这家大型连锁企业也说好
  4. Codeforces Beta Round #7 C. Line (扩展欧几里德)
  5. java双层for循环
  6. 【ES6(2015)】Function函数
  7. 谈谈有什么方法可以快捷实现多场景下的线程安全
  8. 10个精妙的Java编码最佳实践
  9. iOS开发之各种动画各种页面切面效果
  10. TypeScript笔记(3)—— 使用WebPack工具
  11. C#中对 XML节点进行添加,删除,查找和删除操作
  12. Control-Tree
  13. ICON设计的7个实用原则
  14. 论文写作——1 论文的框架与introduction段落安排
  15. 前端--阶段笔记(一)H5CSS3 新版
  16. matlab怎么显示bfm模型的纹理模型,【计算机视觉基础】如何通过BFM模型得到人脸关键特征点的信息...
  17. 新南威尔士 计算机硕士,新南威尔士大学计算机硕士申请条件及案例
  18. AI基础:入门人工智能必看的论文
  19. Win10 系统时间同步失败解决方案
  20. 为什么别人进步你退步,你应该如何提升自己

热门文章

  1. 宽网多媒体发布系统产品简介
  2. mysql字段的相似度_SQL字段的相似度
  3. 高分通过CKA认证考试指南
  4. NETapp Snapshot介绍
  5. 猿如意中的【格式工厂】工具的安装与使用教程,格式转换这个工具就够了
  6. DLL版本不兼容问题
  7. C# winfrom中Flash播放使用axShockwaveFlash控件设置透明XP出现白色背景解决办法,仿QQ魔法表情效果...
  8. 最新kali之nbtscan
  9. 基于TI毫米波雷达IWR1642的多目标识别与定位
  10. 项目经理“三个绝技”轻松做好进度管理