Simlab python二次开发1-将所有缸套内表面半径加大1mm

75 篇文章 1 订阅
21 篇文章 0 订阅
本文介绍了如何使用SimlabPython进行模型文件的二次开发,具体步骤包括获取包含特定字符串的Bodies,创建Body类Group,选择并扩展圆柱面内表面的半径。
摘要由CSDN通过智能技术生成

1、打开模型文件

#***************************************************************
#SimLab Version 2020 Beta
#Created at Tue Oct 15 11:22:28 2019
#***************************************************************
#For debugging this python script,Please comment(#) out the line "from hwx import simlab" and uncomment the line "import simlab"
from hwx import simlab
#import simlab


ImportGda=''' <ImportGda UUID="D896F6DF-56FA-4134-9AD1-1010BF292223" gda="" CheckBox="ON">
  <tag Value="1"/>
  <Name Value="./SampleBolck.gda"/>
  <FileName Value="D:/study/CAEpython/getBodiesFromGroup_sample./SampleBolck.gda"/>
  <Units Value="MilliMeter"/>
  <Output/>
 </ImportGda>''';
simlab.execute(ImportGda)

和matlab类似,加;不打印结果
在这里插入图片描述

2、getBodiesWithSubString()从名字得到Bodies

outputBodies=simlab.getBodiesWithSubString("SampleBolck.gda", ["Liners_*"])

结果为元胞类型
在这里插入图片描述

3、建Body类Group

3.1、定义放入Group中的Bodies

CreateGroup=''' <CreateGroup UUID="899db3a6-bd69-4a2d-b30f-756c2b2b1954" CheckBox="OFF" isObject="4">
  <tag Value="-1"/>
  <Name Value="Liner_Bodies" OldValue=""/>
  <SupportEntities>
   <Entities>
    <Model>SampleBolck.gda</Model>
    <Body>'''+str(outputBodies).replace("'",'"').strip('()')+'''</Body>
   </Entities>
  </SupportEntities>
  <Type Value="Body"/>
  <Color Value="255,206,0,"/>
  <Dup Value="1"/>
 </CreateGroup>''';

在这里插入图片描述

3.2、建Group

simlab.execute(CreateGroup)

在这里插入图片描述

4、将缸套内表面建组,并扩半径1mm

4.1、simlab.getBodiesFromGroup()

从Body类Group中取得Bodies的名称(元胞

Liner_Bodies=simlab.getBodiesFromGroup('Liner_Bodies');

在这里插入图片描述

4.2、选择圆柱特征,建面组

i=1;

#下面的for 循环将所有的缸套内表面选择后建组,并扩半径1 mm(45-46):
#本示例只将Liners_2进行处理:
#for LinerBody in Liner_Bodies:
    LinerBody=Liner_Bodies[0] #######
    GroupName="Bore_"+str(i)
    
    SelectFeatures=''' <SelectFeatures UUID="CF82E8FB-9B3E-4c02-BA93-9466C1342C6E" CheckBox="ON">
      <SupportEntities>
       <Entities>
        <Model>SampleBolck.gda</Model>
        <Body>"'''+LinerBody+'''",</Body>
       </Entities>
      </SupportEntities>
      <Arcs MinValue="0.0" MaxValue="0.0" Value="0"/>
      <ArcsAll Value="1"/>
      <Circles MinValue="0.0" MaxValue="5" Value="0"/>
      <CirclesAll Value="0"/>
      <Cones MinValue="0.0" MaxValue="0.0" Value="0"/>
      <ConeAll Value="0"/>
      <FullCone Value="0"/>
      <ClosedPartialCone Value="0"/>
      <OpenPartialCone Value="0"/>
      <Dics MinValue="0.0" MaxValue="0.0" Value="0"/>
      <DicsAll Value="0"/>
      <HollowDics MinValue="0.0" MaxValue="0.0" Value="0"/>
      <HollowDicsAll Value="0"/>
      <Cylinders MinValue="44" MaxValue="45" Value="1"/>
      <CylindersAll Value="0"/>
      <FullCylinder Value="1"/>
      <ClosedPartialCylinder Value="0"/>
      <OpenPartialCylinder Value="0"/>
      <Fillets MinValue="0.0" MaxValue="0.0" Value="0"/>
      <FilletsOption Value="1"/>
      <PlanarFaces Value="0"/>
      <FourEdgedFaces Value="0"/>
      <ConnectedCoaxialFaces Value="0"/>
      <ThroughBoltHole MinValue="0.0" MaxValue="0.0" Value="0"/>
      <BlindBoltHole MinValue="0.0" MaxValue="0.0" Value="0"/>
      <BlindBoltHoleDepth MinValue="0.0" MaxValue="0.0" Value="0"/>
      <CreateGrp Name="'''+GroupName+'''" Value="1"/>
      <ArcLengthBased Value=""/>
     </SelectFeatures>''';
    simlab.execute(SelectFeatures);

在这里插入图片描述

4.3、根据圆柱面(面组名)得到端点坐标和半径

AxPt1,AxPt2,Rad=simlab.getCylindricalFaceAttributes(GroupName)

在这里插入图片描述
可测知面的半径为45mm
在这里插入图片描述

4.4、将圆柱面(面组名)根据端点坐标扩半径1mm

    AlignCylinder=''' <AlignCylinder UUID="5D271AC4-A0CE-411f-9E60-E7B17CB8B1B7" CheckBox="ON">
      <tag Value="-1"/>
      <Name Value=""/>
      <Entities>
       <Group>"'''+GroupName+'''",</Group>
      </Entities>
      <Axis Point1="'''+str(AxPt1).strip('()') + '''" Point2="'''+str(AxPt2).strip('()') + '''" Value="Select"/>
      <Radius Value="46"/>
      <ProjectMidNodes Value="0"/>
      <EntityType Value="1"/>
     </AlignCylinder>''';
    simlab.execute(AlignCylinder);
    
    i=i+1

在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,你的问题是关于R语言对H=1.3+(a)*(1-exp(-b*D))^c 模型进行simlab敏感性分析。我来给你详细解答一下。 Simlab是一个用于敏感性分析和参数估计的R语言包。Simlab提供了一些函数,可以帮助用户进行参数估计和敏感性分析,特别是在建立复杂模型时。对于H=1.3+(a)*(1-exp(-b*D))^c 模型,你可以使用Simlab包中的函数,对模型参数进行敏感性分析。下面是具体步骤: 1. 安装Simlab包。你可以在R语言中使用如下命令进行安装: `install.packages("SimLab")` 2. 加载Simlab包。你可以在R语言中使用如下命令进行加载: `library(SimLab)` 3. 准备数据。你需要准备一组树高和直径的数据集,这些数据将用于建立模型和进行敏感性分析。 4. 建立模型。你需要使用R语言中的函数来建立模型,如下所示: `model <- function(a, b, c, D) { 1.3 + (a)*(1-exp(-b*D))^c }` 5. 进行敏感性分析。你可以使用Simlab包中的sens函数来计算模型参数的敏感性。下面是一个例子: ``` sensitivity <- sens(model, xnames = c("a", "b", "c"), xvalues = c(1, 1, 1), xlims = c(0, 10), data = your_data, plot = TRUE) ``` 在这个例子中,我们使用了sens函数来进行敏感性分析。其中,xnames参数指定了模型中需要进行敏感性分析的参数名;xvalues参数指定了这些参数的初始值;xlims参数指定了这些参数的取值范围;data参数指定了用于建立模型和进行敏感性分析的数据集;plot参数指定是否需要生成图形。 最后,sens函数将返回一个包含敏感性分析结果的列表。你可以使用summary函数来查看统计数据,使用plot函数来查看图形。 希望这个回答能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值