Open CASCADE学习|2个TCL命令转C++

2024-02-10 21:44
文章标签 c++ 学习 命令 open cascade tcl

本文主要是介绍Open CASCADE学习|2个TCL命令转C++,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、torus aTorus 10 2

该命令的实现代码为:

static Standard_Integer anasurface (Draw_Interpretor& ,Standard_Integer  n, const char** a)
{if (n < 2) return 1;gp_Ax3 loc;
​Standard_Integer i;
​if (n < 5) {loc = gp_Ax3(gp_Pnt(0,0,0),gp_Dir(0,0,1),gp_Dir(1,0,0));i = 2;}else if (n < 8) {loc = gp_Ax3(gp_Pnt(Draw::Atof(a[2]),Draw::Atof(a[3]),Draw::Atof(a[4])),gp_Dir(0,0,1),gp_Dir(1,0,0));i = 5;}else if (n < 11) {loc = gp_Ax3(gp_Pnt(Draw::Atof(a[2]),Draw::Atof(a[3]),Draw::Atof(a[4])),gp_Dir(Draw::Atof(a[5]),Draw::Atof(a[6]),Draw::Atof(a[7])));i = 8;}else if (n < 14) {loc = gp_Ax3(gp_Pnt(Draw::Atof(a[2]),Draw::Atof(a[3]),Draw::Atof(a[4])),gp_Dir(Draw::Atof(a[5]),Draw::Atof(a[6]),Draw::Atof(a[7])),gp_Dir(Draw::Atof(a[8]),Draw::Atof(a[9]),Draw::Atof(a[10])));i = 11;}elsereturn 1;
​Handle(Geom_Geometry) result;
​if (!strcasecmp(a[0],"plane")) {Handle(Geom_Plane) C = new Geom_Plane(loc);result = C;}else {if (i >= n) return 1;Standard_Real par1 = Draw::Atof(a[i]);if (!strcasecmp(a[0],"cylinder")) {Handle(Geom_CylindricalSurface) C = new Geom_CylindricalSurface(loc,par1);result = C;}else if (!strcasecmp(a[0],"sphere")) {Handle(Geom_SphericalSurface) C = new Geom_SphericalSurface(loc,par1);result = C;}else {if (i+1 >= n) return 1;Standard_Real par2 = Draw::Atof(a[i+1]);if (!strcasecmp(a[0],"cone")) {par1 *= (M_PI / 180.0);Handle(Geom_ConicalSurface) C =new Geom_ConicalSurface(loc,par1,par2);result = C;}else if (!strcasecmp(a[0],"torus")) {Handle(Geom_ToroidalSurface) C =new Geom_ToroidalSurface(loc,par1,par2);result = C;}}    }
​DrawTrSurf::Set(a[1],result);return 0;
}

转化为C++代码:

gp_Ax3 loc = gp_Ax3(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1), gp_Dir(1, 0, 0));Handle(Geom_ToroidalSurface) aTorus =new Geom_ToroidalSurface(loc, 10, 2);

2、mkedgecurve aHelixEdge 0.01

该命令的实现代码为:

static Standard_Integer mkedgecurve (Draw_Interpretor& ,Standard_Integer n,const char** a)
{
​if (n < 3) return 1;Standard_Real Tolerance = Draw::Atof(a[2]) ;
​TopoDS_Shape S = DBRep::Get(a[1]);if (S.IsNull()) return 1;BRepLib::BuildCurves3d(S,Tolerance) ;return 0 ;
}

转化为C++代码:

BRepLib::BuildCurves3d(aHelixEdge,0.01);

这篇关于Open CASCADE学习|2个TCL命令转C++的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698115

相关文章

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象