simlab python二次开发2-一键生成轴瓦并设定节点号

simlab python二次开发2-一键生成轴瓦并设定节点号

  • 1、节点坐标计算并建立
    • 1.1、建坐标原点节点,并得到Model-1.gda
    • 1.2、轴瓦节点计算并建立
  • 2、由节点建面
    • 2.1、由4个节点建面得到3个面单元Body
    • 2.2、得到Bodies名称
    • 2.3、根据==Bodies名称选面特征==(放入Group_1组)
    • 2.4、镜像选择的面
  • 3、旋转面得到体SLBodies
  • 4、==simlab.getBodiesWithSubString==()得到SLBodies名称
  • 5、MergeBodies
  • 6、平移拷贝轴瓦
  • 7、根据节点坐标重定义节点号

1、节点坐标计算并建立

1.1、建坐标原点节点,并得到Model-1.gda

#***************************************************************
#SimLab Version 2022 
#Created at Mon Apr 22 19:05:48 2024
#***************************************************************
#For debugging this python script,Please comment(#) out the line "from hwx import simlab" and uncomment the line "import simlab"
#import simlab
from hwx import simlabUnitSystem=''' <UnitSystem UUID="3aca8564-4d38-4b0b-887c-6a542d4001c6"><SetCurrentDisplaySystem Name="MPA (mm t N s)"/></UnitSystem>''';
simlab.execute(UnitSystem);NodeByXYZ=''' <NodeByXYZ UUID="F200B5A2-D615-4d01-8DE2-25596B3B1EB8"><tag Value="-1"/><Name Value=""/><LocalCoordinateSystem Value="0"/><Position Value="0 mm,0 mm,0 mm"/><Node Value="1"/><UniqueNodeId Value="0"/><ModelName Value=""/></NodeByXYZ>''';
simlab.execute(NodeByXYZ);

1.2、轴瓦节点计算并建立

#***************************************************************
#SimLab Version 2022 
#Created at Sun Apr 21 20:29:55 2024
#***************************************************************
#For debugging this python script,Please comment(#) out the line "from hwx import simlab" and uncomment the line "import simlab"
#import simlab
from hwx import simlab
import numpy as np
import csvUnitSystem=''' <UnitSystem UUID="3aca8564-4d38-4b0b-887c-6a542d4001c6"><SetCurrentDisplaySystem Name="MPA (mm t N s)"/></UnitSystem>''';
simlab.execute(UnitSystem);Ni=7 #轴瓦数
Nj=7 #单轴瓦轴向x节点数
Nk=60 #周向节点数
R=[30.,32.] #轴瓦内外半径
L=163 #轴瓦间距
x=[0.,2.,6.,12.] #第一个半轴瓦节点轴向坐标
xx=[-x[3],-x[2],-x[1],x[0],x[1],x[2],x[3]] #第一个轴瓦节点轴向坐标
ang=np.linspace(0.,np.pi,Nk,False)
y=np.cos(ang)
z=np.sin(ang)
with open('C:/Users/Admin/Documents/SimLab/nodes.csv', 'w', newline='') as file:writer = csv.writer(file)for i in range(Ni):for j in range(Nj):for k in range(Nk):writer.writerow((i*L+xx[j],y[k],z[k],str(i+1)+str(j+1)+str(k+1).zfill(3))xij=[[[x[0],R[0],0.],[x[1],R[0],0.],[x[2],R[0],0.],[x[3],R[0],0.]],[[x[0],R[1],0.],[x[1],R[1],0.],[x[2],R[1],0.],[x[3],R[1],0.]]]
for i in range(2):for j in range(4):        NodeByXYZ=''' <NodeByXYZ UUID="F200B5A2-D615-4d01-8DE2-25596B3B1EB8"><tag Value="-1"/><Name Value=""/><LocalCoordinateSystem Value="0"/><Position Value="'''+str(xij[i][j][0])+''' mm,'''+str(xij[i][j][1])+''' mm,'''+str(xij[i][j][2])+''' mm"/><Node Value="'''+str(i+1)+str(j+1)+'''"/><UniqueNodeId Value="0"/><ModelName Value="Model_1.gda"/></NodeByXYZ>''';simlab.execute(NodeByXYZ);

在这里插入图片描述

2、由节点建面

2.1、由4个节点建面得到3个面单元Body

for i in range(3):CreateFaceFromFourNodes=''' <FaceUsingFourNodes gda="" UUID="6C69767C-8731-433c-8474-BE95AE45FCDE"><SupportEntities PythonDoc="The four nodes defining the vertices of the face"><Entities><Model>Model_1.gda</Model><Node>1'''+str(i+1)+''',1'''+str(i+2)+''',2'''+str(i+1)+''',2'''+str(i+2)+'''</Node></Entities></SupportEntities><x_no.ofElements Value="1"/><y_no.ofElements Value="1"/><Element_type Value="Quad"/><tag Value="-1"/></FaceUsingFourNodes>''';simlab.execute(CreateFaceFromFourNodes);

在这里插入图片描述

2.2、得到Bodies名称

在这里插入图片描述

2.3、根据Bodies名称选面特征(放入Group_1组)

SelectFeatures=''' <SelectFeatures CheckBox="ON" UUID="CF82E8FB-9B3E-4c02-BA93-9466C1342C6E"><SupportEntities><Entities><Model>Model_1.gda</Model><Body>'''+str(outputBodies).replace("'",'"').strip('()')+'''</Body></Entities></SupportEntities><Arcs Value="0" MinValue="0 mm" MaxValue="0 mm"/><ArcsAll Value="216"/><Circles Value="0" MinValue="0 mm" MaxValue="0 mm"/><CirclesAll Value="0"/><Cones Value="0" MinValue="0 mm" MaxValue="0 mm"/><ConeAll Value="0"/><FullCone Value="0"/><ClosedPartialCone Value="0"/><OpenPartialCone Value="0"/><TaperAngle Angle="0 deg" Value="0"/><Dics Value="0" MinValue="0 mm" MaxValue="0 mm"/><DicsAll Value="0"/><HollowDics Value="0" MinValue="0 mm" MaxValue="0 mm"/><HollowDicsAll Value="0"/><Cylinders Value="0" MinValue="0 mm" MaxValue="0 mm"/><CylindersAll Value="0"/><FullCylinder Value="0"/><ClosedPartialCylinder Value="0"/><OpenPartialCylinder Value="0"/><Fillets Value="0" MinValue="0 mm" MaxValue="0 mm"/><FilletsOption Value="1"/><PlanarFaces Value="1"/><FourEdgedFaces Value="0"/><ConnectedCoaxialFaces Value="0"/><ThroughBoltHole Value="0" MinValue="0 mm" MaxValue="0 mm"/><BlindBoltHole Value="0" MinValue="0 mm" MaxValue="0 mm"/><BlindBoltHoleDepth Value="0" MinValue="0 mm" MaxValue="0 mm"/><SlotEdges Value="0" MinValue="0 mm" MaxValue="0 mm"/><SlotEdgesAll Value="0"/><CreateGrp Value="1" Name="Group_1"/><ArcLengthBased Value=""/><AngleBased Value=""/><SharpEdges Option="" Angle="" Value=""/></SelectFeatures>''';
simlab.execute(SelectFeatures);

2.4、镜像选择的面

Mirroring=''' <Mirroring CheckBox="ON" gda="" UUID="67e16ad8-f140-4976-b9f7-e9c4f9e7005b"><tag Value="-1"/><Name Value=""/><SupportEntities><Entities><Model>Model_1.gda</Model><Body>'''+str(outputBodies).replace("'",'"').strip('()')+'''</Body></Entities></SupportEntities><PlanePoints><RegionObject><Plane><Finite Value="0"/><Pt1 Value="0.000000000000 mm,24.548256049718 mm,6.451743950282 mm,"/><Pt2 Value="0.000000000000 mm,24.548256049718 mm,-6.451743950282 mm,"/><Pt3 Value="0.000000000000 mm,37.451743950282 mm,-6.451743950282 mm,"/><Pt4 Value="0.000000000000 mm,37.451743950282 mm,6.451743950282 mm,"/></Plane></RegionObject></PlanePoints><Copy Value="1"/><WithLBC Value="0"/><LocalCoordinateSystem Value=""/><Output/></Mirroring>''';
simlab.execute(Mirroring);

在这里插入图片描述

3、旋转面得到体SLBodies

Revolve=''' <FEARevolve gda="" UUID="AF802B42-CD64-41a1-B964-52906F7AA888"><tag Value="-1"/><Name Value="FEARevolve1"/><DirNode Value=""/><FirstEntity><Entities><Model>Model_1.gda</Model><Face></Face></Entities></FirstEntity><SecondEntity Value=""/><RowIndex Value=""/><LimitFaces Value=""/><Model Value=""/><layers Value="'''+str(Nk)+'''"/><elementtype Value="0"/><revolvetype Value="0"/><GuideEdge Value=""/><Output/><RegionObject><Axis><Pt1 Value="-4.000000000000 mm,0.000000000000 mm,0.000000000000 mm,"/><Pt2 Value="4.000000000000 mm,0.000000000000 mm,0.000000000000 mm,"/><Angle Value="360.000000000000 deg"/></Axis></RegionObject></FEARevolve>''';
simlab.execute(Revolve);

在这里插入图片描述

4、simlab.getBodiesWithSubString()得到SLBodies名称

outputBodies=simlab.getBodiesWithSubString("Model_1.gda", ["SLBody*"])

在这里插入图片描述

5、MergeBodies

MergeBodies=''' <BodyMerge gda="" UUID="FA9128EE-5E6C-49af-BADF-4016E5622020"><tag Value="-1"/><Name Value="BodyMerge2"/><SupportEntities><Entities><Model>Model_1.gda</Model><Body>'''+str(outputBodies).replace("'",'"').strip('()')+'''</Body></Entities></SupportEntities><Delete_Shared_Faces Value="0"/><Output_Body_Name Value=""/><RedoFlag Value=""/><Output/></BodyMerge>''';
simlab.execute(MergeBodies);

在这里插入图片描述

6、平移拷贝轴瓦

outputBodies=simlab.getBodiesWithSubString("Model_1.gda", ["SLBody*"])

在这里插入图片描述

Translation=''' <Translation CheckBox="ON" UUID="26b085e8-d9a3-4baf-95f2-9f3eb75ac454"><tag Value="-1"/><Name Value=""/><SupportEntities><Entities><Model>Model_1.gda</Model><Body>'''+str(outputBodies).replace("'",'"').strip('()')+'''</Body></Entities></SupportEntities><RegionObject><TranslationDirection><DirectionVector Value="1.000000000000 mm,0.000000000000 mm,0.000000000000 mm,"/></TranslationDirection></RegionObject><UnitVector Value="0"/><Magnitude Value="1"/><DistanceVector Value="'''+str(L)+''' mm"/><CoorId Value="0"/><Copy Value="1"/><WithLBC Value="0"/><No.Of.Copies Value="'''+str(Ni-1)+'''"/><LocalCoordinateSystem Value=""/><Output/></Translation>''';
simlab.execute(Translation);

在这里插入图片描述

7、根据节点坐标重定义节点号

SetNodeID=''' <SetNodeId UUID="28706164-a6f5-4544-b4a9-c052c4ccc60f"><tag Value="-1"/><Type Value="1" SetNodeIdType="2"/><RenumberPickedNodes><StartNodeId Value="0"/><Offset Value="0"/><CheckDuplicates Value="0"/><Nodes/><SetRBEId Value="0"/></RenumberPickedNodes><RenumberNodesByLocation><Model Value="Model_1.gda" Given="1"/><Tolerance Value="0.001 mm"/><CheckDuplicates Value="0"/><ImportOrExport Option="1" Value="./nodes.csv"/><Nodes Value="" ModelIds="" EntityTypes=""/><NewNodeIds/></RenumberNodesByLocation><RenumberPistonNodes><StartNodeId/><Faces/><StartNodes/><IgnoredNodes Value=""/><ModifyNodes Value=""/><Symmetry Value="0"/><RadialOffset Value="0"/><AxialOffset Value="0"/><Skip Value="0"/><Mirror Value="0"/><CreateFace Value="0"/><PistonTolerance Value="0.0"/><PlaneRegionPoints/></RenumberPistonNodes><RenumberBearingNodes><StartNodeId Value="0"/><Offset Value="0"/><StartNode/><AxialNode/><CircularNode/><Faces/></RenumberBearingNodes><RenumberPinBoss><StartNode/><ArcNode/><StartNodeId/><RadialOffset/><AxialOffset/><Faces/><IncludeMidNodes Value=""/></RenumberPinBoss><RenumberCrankRbeNumbering><JournalRBE Value="0"/><JrnlStartId Value="0"/><IncrAcrossJrnl Value="0"/><IncrWithinJrnl Value="0"/><PinRBE Value="0"/><PinStartId Value="0"/><IncrAcrossPin Value="0"/><IncrWithinPin Value="0"/></RenumberCrankRbeNumbering><RenumberEdgeNodes><Edges/><StartNode/><NextNode/><StartNodeId Value="1"/><Offset Value="1"/></RenumberEdgeNodes><Output/></SetNodeId>''';
simlab.execute(SetNodeID);

### 三级目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript介绍

JavaScript&#xff08;简称“JS”&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。它最初由Netscape公司的Brendan Eich在1995年设计实现&#xff0c;用于为网页添加动态效果和交互功能。作为开发Web页面的脚本语言而出名&#xff0c;但它也…

AR爆发的前夜,Rokid站在了门口

文&#xff5c;刘俊宏 摆脱6寸的手机屏幕&#xff0c;栖居在300寸大屏的智慧生活是什么样子&#xff1f; 4月20日&#xff0c;Rokid在新品AR Lite空间计算套装的发布会上&#xff0c;“硬刚”了苹果的Vision Pro。 Rokid AR Lite空间计算套装 Rokid AR Lite与苹果Vision Pro…

el-upload组件如何上传blob格式的url地址视频

el-upload组件如何上传blob格式的url地址视频 一、存在问题二、直接上代码 需求&#xff1a;想把视频地址url:“blob:http://localhost:8083/65bd3c0f-52ec-4844-b85e-06fdb5095b7b”&#xff0c;通过el-upload组件上传 el-upload是Element UI中用于文件上传的组件&#xff0c;…

中文医疗大模型及中文底座大模型参考

参考&#xff1a;https://github.com/HqWu-HITCS/Awesome-Chinese-LLM 中文底座大模型 中文医疗大模型

c#学习入门1

一、环境配置 颜色主题 字体设置 行号设置 二、第一个应用程序 1. 在解决方案下创建一个新项目 第一种注释&#xff1a;两杠注释 第二种注释&#xff1a;星号注释 第三种注释&#xff1a;三杠注释(只有在花括号后面输出才会自动补全&#xff09; 2.控制台输入打印基础语句 输…

第⑯讲:Ceph集群Pool资源池管理以及PG的数据分布的核心技术要点

文章目录 1.Pool资源池的管理1.1.查看Pool资源池列表1.2.创建一个Pool资源池1.3.查看Pool资源池的参数信息1.4.修改Pool资源池的参数信息1.5.为Pool资源池设置应用模式1.6.重命名Pool资源池1.7.设置Pool资源池的限额1.8.删除Pool资源池1.9.查看Pool资源池的利用率 2.PG的数据分…

产品经理必会12个产品模型

很多运营经理&#xff0c;常常觉得产品成功的决定性因素是“产品做得好”。 而很多产品经理却认为&#xff0c;产品互抄太严重了&#xff0c;差异化的竞争要点是“产品运营得好”。 在商业高速发展时代&#xff0c;成功产品定义往往不是单点成功&#xff0c;而是由3大要素共同…

统计单词数量(文件)(*)

请编写函数&#xff0c;统计英文文章的单词数量。 函数原型 int CountWord(FILE *f); 说明&#xff1a;参数 f 为文件指针。函数值为该文件的单词数量。 裁判程序 #include <stdio.h> #include <stdlib.h> #include <ctype.h>int CountWord(FILE *f);in…

就业班 第三阶段(负载均衡) 2401--4.18 day2 nginx2 LVS-DR模式

3、LVS/DR 模式 实验说明&#xff1a; 1.网络使用NAT模式 2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域 3.所有节点网关均指定真实网关 主机名ip系统用途client172.16.147.1mac客户端lvs-server172.16.147.154centos7.5分发器real-server1172.16.…

SpringBoot整合PDF动态填充数据并下载

目录 目录 一、准备环境 二、iTextPDF介绍 三、步骤 四、访问查看结果 五、源代码参考 一、准备环境 ①下载一个万兴pdf软件 ②准备一个pdf 文件 二、iTextPDF介绍 这是一个用于生成PDF文档的Java库&#xff0c; 文档创建与修改&#xff1a;iTextPDF能够从零开始创建…

Java基础:单例模式,Spring源码中有哪些单例模式

单例模式是一种常用的软件设计模式&#xff0c;其目的是确保一个类仅有一个实例&#xff0c;并提供一个全局访问点来获取这个唯一实例。在Java中&#xff0c;实现单例模式通常需要遵循以下几个关键原则&#xff1a; 私有化构造器&#xff1a;将类的构造器声明为private&#xf…

4.2 Python列表(list)

Python list列表详解 在实际开发中&#xff0c;经常需要将一组&#xff08;不只一个&#xff09;数据存储起来&#xff0c;以便后边的代码使用。说到这里&#xff0c;一些读者可能听说过数组&#xff08;Array&#xff09;&#xff0c;它就可以把多个数据挨个存储到一起&#…

学习Rust的第11天:模块系统

Rust的模块系统可以使用它来管理不断增长的项目&#xff0c;并跟踪 modules 存储在何处。 Rust的模块系统是将代码组织成逻辑片段的有效工具&#xff0c;因此可以实现代码维护和重用。模块支持分层组织、隐私管理和代码封装。Rust为开发人员提供了多功能和可扩展的方法来管理项…

用 Pytorch 训练一个 Transformer模型

昨天说了一下Transformer架构&#xff0c;今天我们来看看怎么 Pytorch 训练一个Transormer模型&#xff0c;真实训练一个模型是个庞大工程&#xff0c;准备数据、准备硬件等等&#xff0c;我只是做一个简单的实现。因为只是做实验&#xff0c;本地用 CPU 也可以运行。 本文包含…

Vue阶段练习:tab栏、进度条、

阶段练习旨在学习完Vue 指令、计算属性、侦听器-CSDN博客后&#xff0c;进行自我检测&#xff0c;每个练习分为效果显示、需求分析、静态代码、完整代码、总结 四个部分&#xff0c;效果显示和准备代码已给出&#xff0c;我们需要完成“完整代码”部分。 练习1&#xff1a;tab栏…

LSB隐写是什么?

LSB隐写是什么&#xff1f; 所需知识二进制位LSB的概念LSB在数值中的作用LSB在量化中的应用小结 LSB隐写原理应用威胁与挑战改进补充资料 所需知识 二进制数 位&#xff08;bit&#xff09; LSB概念 二进制 在计算机科学中&#xff0c;二进制数是一种数制&#xff0c;使用两…

开源大数据集群部署(二十一)Spark on yarn 部署

作者&#xff1a;櫰木 1 spark on yarn安装&#xff08;每个节点&#xff09; cd /root/bigdata/ tar -xzvf spark-3.3.1-bin-hadoop3.tgz -C /opt/ ln -s /opt/spark-3.3.1-bin-hadoop3 /opt/spark chown -R spark:spark /opt/spark-3.3.1-bin-hadoop32 配置环境变量及修改配…

攻防世界---misc---再见李华

1.下载附件是解压之后得到一张图片 2.使用常规方法后没有得到什么信息&#xff0c;接着用winhex分析&#xff0c;发现有压缩包 &#xff0c;里面还有个key.txt 3.接着用kali使用命名foremost进行分离&#xff0c;得到压缩包&#xff0c;里面的key.txt需要密码 4.接着给压缩包暴…

IDEA代码重构

重构 重构的目的&#xff1a; 提高代码的可读性、可维护性、可扩展性和性能。 重命名元素 重命名类 当我们进行重命名操作的时候可以看到第六行存在一个R(rename)&#xff0c;点击后就会弹出所偶有引用&#xff0c;这样可以避免我们在修改后存在遗漏引用处未修改。 我们可以通过…

生成计算机注册信息:硬盘,主板和CPU组合 根据计算机硬盘,主板,CPU生成注册信息

目录 一.总体说明 二.完整代码 三.逐行分析 一.总体说明 注册信息是用于识别和验证计算机的唯一标识符。在生成注册信息时,通常会包含计算机的硬盘、主板和CPU的相关信息。这些信息可以用于授权软件、管理许可证、防止盗版以及进行系统配置和维护等方面。 具体而言,注册…