首页/文章/ 详情

HyperWork 2024 -二次开发语言由Tcl过度到Python案例集

2月前浏览830

有了前文的铺垫,本篇文章将介绍如何将一些常见的Tcl API转换为Python API的方式,以帮助大家更好地了解两者的功能实现,以及差异。


1:创建component












#### tcl*createentity comps name="Component1"
#### Pythonimport hmimport hm.entities as entsession = hm.Session()
model = hm.Model(session.get_all_models()[0])comp1 = ent.Component(model)comp1.name = "Component1"


2:添加节点












#### Tcl代码*createnode 10.0 20.0 30.0 0
# Python代码import hmimport hm.entities as ent
session = hm.Session()model = hm.Model(session.get_all_models()[0])nodeNew = ent.Node(model) nodeNew.localcoordinates = [0,0,0]

3:定义材料





















#### Tcl代码*createentity mats name=Al*setvalue mats id=1 cardimage="MAT1"*setvalue mats id=1 STATUS=2 1=70000*setvalue mats id=1 STATUS=2 3=0.3*setvalue mats id=1 STATUS=2 4=2700

#### Python代码import hmimport hm.entities as ent
session = hm.Session()model = hm.Model(session.get_all_models()[0])mat1 = ent.Material(model)mat1.name = "Al"mat1.cardimage = "MAT1"mat1.E = 7e04mat1.Nu = 0.3mat1.Rho = 2700

4:设置属性






#### Tcl代码*createentity props name=property*setvalue props id=1 cardimage=PSHELL*setvalue props id=1 STATUS=2 95=1*setvalue props id=1 100201={mats 1}
#### Python代码import hmimport hm.entities as ent
session = hm.Session()model = hm.Model(session.get_all_models()[0])
prop1 = ent.Property(model)prop1.name = "property"prop1.cardimage = "PSHELL"
prop1.PSHELL_T = 1.0mat1 = hm.Collection(model, ent.Material)for mat in mat1:    mat_id = mat    breakprop1.materialid = mat_id


5、交互选择













#### Tcl*createmarkpanel elem 1 "select elem"*maskentitymark elements 1 0
###Pythonimport hmimport hm.entities as ent
model = hm.Model()col_elem = hm.CollectionByInteractiveSelection(model, ent.Element)for elem in col_elem:    model.hideentity(elem)


6、结果查询






### tcl*createmarkpanel property 1 ""foreach temp [hm_getmark property 1] {    puts [list [hm_getvalue property id=$temp dataname=name] \               [hm_getvalue property id=$temp dataname=materialid] \               [hm_getvalue property id=$temp dataname=95]]}

### pythonimport hmimport hm.entities as entimport prettytable as pt

def main():    model = hm.Model()    prop_data = list()    props = hm.Collection(model, ent.Property)    for p in props:        prop_name = p.name        prop_id = p.id        prop_cardimage = p.cardimage        if prop_cardimage == "PSHELL":            prop_thickness = p.PSHELL_T        else:            prop_thickness = ""        if p.materialid:            mat = p.materialid            mat_name = mat.name            mat_id = mat.id            mat_cardimage = mat.cardimage        else:            mat_name = "-"            mat_id = "-"            mat_cardimage = "-"        prop_data.append(            [                prop_name,                prop_id,                prop_cardimage,                prop_thickness,                mat_name,                mat_id,                mat_cardimage,            ]        )
   tab = pt.PrettyTable(        [            "Prop Name",            "Prop ID",            "Prop Cardimage",            "Prop Thickness",            "Mat Name",            "Mat ID",            "Mat Cardimage",        ]    )
   tab.add_rows(prop_data)    print(tab)
if __name__ == "__main__":    main()


  通过上述几个常见的Tcl API转换示例,相信大家已经对如何将HyperWork 2024中的Tcl代码过度到Python代码有了初步的了解,更多细节还是在帮助文挡里边。


Python语言在二次开发中的强大功能和简洁语法,将大大提高开发效率和代码质量,两者之间还是存在差异,例如Collection返回的就是迭代器,写习惯就好了。


在实际项目中,可以根据需要进一步扩展和深入使用Python API。就自己去探索了。


昨天拍到的奇观,天空惊现八个排列整齐的🛸🛸🛸🛸🛸🛸🛸🛸


 

实际上是灯光倒影[旺柴][旺柴][旺柴]






来源:TodayCAEer
ACT二次开发python材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-01
最近编辑:2月前
TodayCAEer
本科 签名征集中
获赞 18粉丝 28文章 243课程 0
点赞
收藏
作者推荐

模态工况创建工具与约束模态创建

模态工具的二次开发性价比不高,本身手动来做就比较简单,两分钟能解决的问题,就算是压缩在10秒内,意义也不大的,但是开发的工作量反倒不少,所以在开发的时候尽量考虑多一点。自由模态工况比较简单,指定频率范围、或者指定阶数,也可以混合使用,而后创建工况卡片就OK了。但是对于需要约束模态就比较麻烦了,比如车身的蓄电池支架模态,这就需要在车上截取指定范围内的模型,并约束边界的节点。或者约束指定位置的节点,然后renumber为指定的ID,手动来做这就比较麻烦了。所以开发了界面如图所示,也是跟着的ANSA的风格写了一个一样的,并添加了截取模型的功能,输入中心坐标以及截取方向以及对应的距离,即可完成模型截取与约束。以及节点renumber的功能,用于约束指定节点,进一步减少用户操作。但是这次不是演示程序的使用,而是介绍下约束模态的分析工况创建。从老版本过渡到新版本的时候,需要注意模态工况有些许变化,工况将通过LoadStepInputs创建。1.Create>LoadStepInputs.2.SetConfigtype,selectRealEigenvalueextraction.3.ForType,selectEIGRL.下面是详细的约束模态分析工况创建步骤。在开始之前,请将本教程中使用的文件复制到工作目录。·channel_brkt_modal.hm要使用OptiStruct完成模态分析模型的设置,您需要定义一个包含METHOD和SPC语句的模态SUBCASE。图1.1、启动HyperMesh并设置OptiStruct用户配置文件一.启动HyperMesh。此时将打开“UserProfile”对话框。二.选择OptiStruct,然后单击OK。这将加载用户配置文件。它包括适当的模板、宏菜单和导入读取器,将HyperMesh的功能缩减到与生成OptiStruct模型相关的功能。2、打开模型一.单击“File>Open>Model”。二.选择保存到工作目录中的channel_brkt_modal.hm文件。三.单击“Open”。channel_brkt_modal.hm数据库将加载到当前HyperMesh会话中,替换现有数据。3、设置模型3.1查看和编辑材料,此步骤可以从模型浏览器中完成。一.在“模型浏览器”中,展开“Material”文件夹以显示模型中的两种材料。二.单击aluminum。材料条目将显示在实体编辑器中。三.对于RHO,输入2.7e-9。四.重复步骤1至3,为钢材的RHO输入7.9e-9。3.2创建modalLoadStepInput这可以使用“LoadStepInputs”创建子面板来完成。一.在“模型浏览器”中,右键单击并选择“Create>LoadStepInputs”。二.对于Name(名称),输入modal。三.设置配置类型,选择RealEigenvalueextraction.。四.对于“Type”,请选择“EIGRL”。五.对于ND,请输入10。ND指定要提取的模式数。图2.3.3创建约束LoadCollector一.在ModelBrowser中,右键单击并选择Create>LoadCollector。二.对于Name(名称),输入constraints。三.将“CardImage”设置为“None”。3.4创建约束OptiStructSPC一.在ModelBrowser中展开Component文件夹。二.单击通道组件旁边的geometry图标以打开几何图形显示。三.单击工具栏中的“IsometricView”图标。您将沿着通道底表面周围的线条在节点上创建SPC约束,如下图所示。图3.在通道上应用约束四.单击“BCs>Create>Constraints”以打开“Constraints”面板。五.将实体选择器切换到lines。六.在通道底部表面的上选择线。切换到透明元素模式,可以清楚地看到所选的线条,如下图所示::图4.七.激活自由度(DOF)1到6。o选择的自由度将受到约束,而没有选择的自由度将是自由的。o自由度1、2和3是x、y和z的平移自由度。o自由度4、5和6是x、y和z旋转自由度。八.对于size=,输入10。九.单击create>return退出面板。3.5映射约束在此步骤中使用LoadonGeom面板。一.在Analysis页面中,单击“loadongeom”。二.单击loadcols,然后选择约束。三.单击“select”,完成loadcollector的选择。四.单击maploads。约束与几何线关联的每个节点。五.单击“return”退出面板。3.6定义加载步骤在此步骤中使用LoadStepEntityEditor。定义loadstep用于引用载荷、约束和模态collector。一.在“模型浏览器”中,右键单击并选择“Create>LoadStep”。二.对于Name(名称),输入normal_modes。三.对于“Analysistype”,请选择“Normalmodes”。四.对于METHOD(STRUCT),选择modal。五.对于SPC,选择loadcollectorconstraints。3.7定义结果文件的格式在控制卡片面板中,使用OUTPUT卡为AltairH3D和HyperMesh.res格式添加两个输出请求。一.单击Setup>Create>ControlCards以打开ControlCards面板。二.单击next转到controlcards的下一面板菜单。三.选择控制卡片OUTPUT。请注意,在卡片图像中,一个OUTPUT行设置为默认值。这指定OptiStruct将结果输出到HyperMesh命令文件。四.单击默认值,然后从弹出菜单中选择H3D。五.对于number_of_outputs=,输入2。第二行OUTPUT行出现在卡片中。六.再次单击默认值,然后选择HM作为第二种输出类型。这指定OptiStruct将结果输出到H3D文件和.res文件,可以在HyperViewPlayer中查看。此外,还会输出HTML报告文件,并在其中嵌入H3D文件。七.单击return以返回到“控制卡片”面板。注:OUTPUT按钮为绿色。这表明卡片被导出到OptiStruct输入文件。八.单击return退出面板。4、提交作业一.在“Analysis”页面中,单击“OptiStruct”面板。图5.访问OptiStruct面板二.点击saveas。三.在saveas对话框中,指定写入OptiStruct模型文件的位置,并输入modal_analysis作为文件名。对于OptiStruct求解器模型,建议使用.fem扩展名。四.点击保存。输入文件字段显示在“另存为”对话框中指定的文件名和位置。五.将导出选项切换开关设置为all。六.将运行选项切换开关设置为analysis。七.将内存选项切换设置为memorydefault。八.单击“OptiStruct”以启动OptiStruct作业。如果作业成功,新的结果文件应该在modal_analysis.fem所在的目录中。Fem是刚刚导出的。modal_analysis.out文件是查找错误消息的好地方,如果存在任何错误,文件中的错误信息可以帮助调试模型。来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈