
工学博士,仿真秀平台优秀讲师。力学和有限元理论基础扎实,参与完成仿真咨询项目多项,参与编写研究生教材《工程结构优化设计方法与应用》一部及《ANSYS Workbench结构分析理论详解与高级应用》(2020年)、《ANSYS结构有限元高级分析方法与范例应用(第三版)》等ANSYS应用教程多本。累计为国内各行业技术人员开展ANSYS培训或技术讲座逾3000人次,授课特点深入浅出、理论联系实际,广受学员好评。

---------------------------------------------------------------------------------------------版权声明:原创文章,来源老猫电磁馆,本文已经授权,欢迎分享,如需转载请联系作者。


导读:8月我们将为读者朋友带来《新型天线设计仿真实战培训》,邀请原华为/中兴/小米天线专家程胜祥老师亲授,大家抓紧报名吧,名额有限哦。以下是程老师先前在仿真秀官网和APP的直播回放,目前支持反复回看。培训主题:新型天线设计仿真实战培训培训地址:北京(线上同步)培训时间:2024年8月22-23日培训定位:高级培训1培训目标采用理论+软件操作+实例解析讲解方式,讲解天线理论基础和抗金属新型天线和手机新型天线设计方法和思路、以及建模与仿真方法,帮助用户快速掌握实际天线的设计仿真方法。2培训大纲3讲师介绍程胜祥:现任北京科算中心有限公司天线开发部部长。原华为公司终端天线总负责人,负责华为公司所有研究所的手机、固定台、无线上网卡天线的研发工作。在清华大学,指导博士和硕士进行天线相关科研工作。原海军司令部通信部天线专家、滨海新区科技创新先进个人。曾获得过中央军委嘉奖2次,获得专利几十项、软件著作权2项。4时间、地址时间:2024年8月22日-8月23日地址:北京市朝阳区八里庄东里1号CN085报名费用报名费用:4000元(此费用包含培训费、资料费、发票费。)6增值服务报名提供讲师1年答疑专栏服务报名赠送培训全程回放培训学员发放培训证书7报名方式识别下方二维码,获取优惠详情及培训通知8联系我们主办单位:北京赋智工创科技有限公司地址:北京市朝阳区八里庄东里1号CN08-A联系电话:010-52167810来源:仿真秀App

.jpg?imageView2/0/w/450/h/250)
在最近的车展上,有位女士跳到特斯拉的车顶维权,被行政拘留5天。行政处罚是依法办事,但道义上却必须支持消费者维权。女士的做法不妥,但让她做出这种举动的深层原因,却需要有关部门反思。若干年以后我们或许会发现:维权的人士才是推进中国制造最重要的动力。下面先讲一个故事:我担任某企业重大奖评的评委时遇到一个项目。按评奖参考标准,这个项目经济效益不大、难以入选。我却坚决支持入选。项目是这样的:企业每年交货时,有平均有几十次出错。这个项目的目的,是杜绝这类错误。与这家企业的产量相比,交错的比例不到万分之一。出现错误会被用户投诉甚至索赔,但对企业来说损失微乎其微。所以,项目算下来的经济效益很低,达不到评奖标准。我支持这个项目的理由是:对供货的企业来说,错误是万分之一;对这个用户来说,发生的比例可能就是100%。这家用户或许因为收到错误的供货,影响整个工厂的生产,甚至进一步影响用户的用户的,间接损失可能非常大。有个叫做6西格玛的管理理论,要求将产品缺陷率降低到百万分之3.4。这个要求的意义在于:降低缺陷的过程,是不断解决问题的过程,也是技术进步的过程。如果没有这样的要求,员工也就没有推动技术进步的动力,质量的发展就会遇到天花板。我曾经反复强调:技术领先是持续改进的结果。所以,6西格玛是推进企业走向一流的发动机。相当于6西格玛的要求,万分之一的缺陷比目标高了几十倍,是不可忍受的;但从企业效益上讲,减少万分之一的缺陷却不值一提、甚至是赔钱的。我们要求工人和工程师有工匠精神,要求他们坚持持续改进。但是,如果只是口头上要求和鼓励,评奖的时候却不给,这不就是典型的“叶公好龙”吗?所以,我坚决要求给这个项目奖励。我们知道:企业都是价值驱动的。质量要求高到一定程度,必然推动成本的提升。在经济上往往是不合适的。为什么还要推进6西格玛?其实,国外有个说法:一个次品流入用户,可能会导致1000倍的损失。所以,推进6西格玛是值得的。我过去不明白:次品怎么会导致1000倍的损失呢?后来意识到:这种损失往往是用户的间接损失。我家曾经买了某个牌子的中央空调。据说这家企业为了节约保险丝等小零件的成本,经常出质量问题。结果,有一年夏天最热的时候坏掉了,我只要找别的地方住。等修好的时候,10天过去了。当时,我按揭贷款每天还600块钱。10天不能入住,相当于损失了6000元。这10天回不了家,我的火气大得不得了、心情非常差,还花了很长时间交涉。我宁可损失2万元,也不愿遇到这种事情。这就是间接损失,不知道比省几个保险丝贵了多少倍。在我国,厂家把有质量问题的产品修好、更换已经是很不错了。企业往往只会算自己企业的直接损失,而不是用户的间接损失。对许多中国企业来说,百分之几的缺陷率可能是最经济的。所以,中国企业对质量的要求往往比国外差了很多。我还知道很多例子,企业为了降成本,不惜牺牲产品质量。国外的企业为什么重视质量呢?国外的企业重视质量,是因为质量问题的罚款非常重。许多索赔,不仅要有直接损失,还包括间接损失。而且,用户打官司也相对容易。这样,质量问题足可以让企业倾家荡产。于是,企业追求高质量就是符合经济性的。而在我国,消费者维权成本太高,时间都花不起。产品出现小的质量问题,用户只好自己认倒霉。所以,这也助长了企业不重视质量的做法。于是,很多企业在国外重视质量、尊重消费者,到了国内就开始欺负消费者了。这就是所谓“橘生淮南则为橘,生于淮北则为枳”。要改变这种现象,就要改变环境。回到前面的例子。我想,维权的那位女士买了特斯拉的车,原本是件开心的事情。车的价钱对她来说,也不是个小的数字,甚至有可能把多少年的积蓄都拿出来了。遇到车子有毛病,开心的事情变成生气的事情,火气一定很大。交涉过程得不到解决,肯定会火气越来越大。于是做了过头的事情。她做得过火了,被行政处罚了,但我很同情她。我相信,批评她的人自己遇到这种事情,也未必能淡定。前些年,国家推“和谐社会”。要推“和谐社会”,就要消除不和谐的根源。其中,消费引发的不和谐,可能会出现在每一个人身上。政府有责任“不让消费者吃亏”。让消费者开心消费,本质就是推进和谐社会的建设。消费者不吃亏,厂家才会高度关注质量,我国的制造业也才能走向高端。国家整体上走向高质量,往往以牺牲那些质量水平低的企业为代价的。但这就是“正淘汰”。反之,如果没有“正淘汰”,结果一定是“逆淘汰”。有了“正淘汰”,中国的产品质量才能越来越好,中国制造才能逐渐变得强大。所以,推进高质量发展,应从支持消费者维权开始。支持消费者维权,就是支持高质量,就是支持那些重视质量的企业,就是支持中国制造。版权声明:原创文章,作者郭朝晖,来源蝈蝈创新随笔,本文已经授权,欢迎分享,如需转载请联系作者。


一、写在文前3月14日,我收到了仿真秀专栏作者陈开伟老师编著,机械工业出版社发行的专业图书《Abaqus二次开发:内核与GUI应用实例详解》,非常欣喜。该书籍得到了SIMULINA仿真技术总监白锐和Abaqus应用专家/仿真秀优秀讲师曹金凤和江丙云博士的作序推荐。该书涵盖了Abaqus内核与GUI二次开发的各个方面。内核开发部分包括Abaqus内核的基本结构、数据类型、函数接口以及常用命令等内容,通过不同复杂程度的实例演示了如何使用Abaqus内核脚本开发实现功能扩展。GUI开发部分包括AbaqusCU的基础知识、控件、布局、模式和关键字等内容,也给出众多实例教给读者如何使用AbaqusCUIToolkit定制插件界面和主窗口界面。本书提供了大量实例源代码和示例代码,带领读者更加深入地了解Abaqus的二次开发过程和实现方法。同时,书中也注重帮助读者养成良好的规范化编程习惯,以提高代码的可读性和可移植性。经作者授权同意,我把该书第四章《实例:批量化施加螺栓力》全部内容分享到这里,让读者朋友亲身感受:本书不仅是一本关于Abaqus二次开发的实用指南,对读者来说更是不可多得的学习宝典。欢迎订阅和分享,以下是正文:二、实例介绍本章介绍一个批量施加螺栓力的前处理内核脚本,它能够对装配体中所有的螺栓一键施加螺栓力载荷。演示模型如图4-1所示,装配体中有四个螺栓,它们的位置和方向都不同。两个较细的螺栓来自一个螺栓部件实例,另外两个较粗的来自另一个部件。模型文件保存为chapter4\4bolts.cae,版本是Abaqus2017,脚本AutoBoltLoad.py也一并保存在该目录中。打开模型,运行脚本AutoBoltLoad.py。切换到Load模块,可以看到这四个螺栓都加载了螺栓力载荷,如图4-2所示。该脚本是个相对通用的程序,从整体来看,实现过程分为两个部分:对部件操作和对装配体操作。之所以要在部件中切割,是因为装配体中的螺栓方向和位置都不相同,不容易精确把控,而在部件则相对容易很多。而螺栓力的施加只能在装配状态中进行,包括获取切割面和基准轴,所以这部分要在遍历所有部件实例时进行。图4-1未施加螺栓力的装配体图4-2施加螺栓力的装配体三、脚本代码AutoBoltLoad.py1#-*-coding:utf-8-*-2'''此脚本用于批量施加螺栓力荷载'''3fromabaqusimport*4fromabaqusConstantsimport*5fromcaeModulesimport*67defdisplayDatum(flag):8'''设置是否显示基准'''9vp=session.viewports[session.currentViewportName]10ifflag=='on':11vp.assemblyDisplay.geometryOptions.setValues(datumPointLabels=ON,\12datumAxes=ON,datumPoints=ON)13ifflag=='off':14vp.assemblyDisplay.geometryOptions.setValues(datumPointLabels=OFF,\15datumAxes=OFF,datumPoints=OFF)1617defbolt(boltIns):18'''遍历螺栓部件实例,获得螺栓部件列表'''19boltPart=[]20forboltinboltIns:21#通过部件实例得到部件,并形成列表22ifbolt.partnotinboltPart:23boltPart.append(bolt.part)24#若部件为Lock状态,则解锁25ifbolt.part.isLocked()==1:26bolt.part.Unlock(reportWarnings=False)27#返回部件列表28returnboltPart2930defcutBolt(bolts):31'''在螺栓部件的中心位置切割螺栓'''32#遍历全部螺栓部件33forboltinbolts:34#删除已有基准35fts=bolt.features36forftinfts.keys():37#判断特征关键字的前5个字符是否为'Datum',符合则删除该特征38ifft[:5]=='Datum':39bolt.deleteFeatures((ft,))40bolt.regenerate()41#获取螺栓实体BoundingBox的中心点坐标42c=bolt.cells43coor=c.getBoundingBox()44coorX=(coor['high'][0]+coor['low'][0])/245coorY=(coor['high'][1]+coor['low'][1])/246coorZ=(coor['high'][2]+coor['low'][2])/247#在中心点处创建基准点48datumPoint=bolt.DatumPointByCoordinate(coords=(coorX,coorY,coorZ))49#在中心点处以Y轴创建基准轴50datumAxisPart=bolt.DatumAxisByPrincipalAxis(principalAxis=YAXIS)51#在中心点处垂直于基准轴切割螺栓52d=bolt.datums53bolt.PartitionCellByPlanePointNormal(cells=c,point=d[datumPoint.id],\54normal=d[datumAxisPart.id])5556defgetLoadFace(oneIns):57'''利用基准点获取螺栓力加载截面'''58ds=oneIns.datums59fordinds.values():60#属性数量为1的是基准点,属性数量为2的是基准轴61iflen(d.__members__)==1:62#获取基准点的坐标,以元组的形式赋值给coor63coor=d.pointOn64#使用findAt()查找切面65fs=oneIns.faces66f1=fs.findAt((coor,),)67#为切面创建Region对象,并返回68region=regionToolset.Region(side1Faces=f1)69returnregion7071defgetAxis(oneIns):72'''在基准中获取螺栓基准轴'''73ds=oneIns.datums74#基准轴才有属性direction75fordinds.values():76ifhasattr(d,'direction'):77datumAxisIns=d78#返回基准轴79returndatumAxisIns8081if__name__=='__main__':82'''主程序'''83#通用代码,获取一系列视口和模型对象84vpName=session.currentViewportName85vp=session.viewports[vpName]86modelName=session.sessionState[vpName]['modelName']87m=mdb.models[modelName]88a=m.rootAssembly89ins=a.instances90stps=m.steps9192insList=[]93#将所有部件实例并入列表insList中94foriinins.values():95insList.append(i)96#如果部件实例列表为空,弹出警告对话框97ifinsList==[]:98getWarningReply(message='当前模型中没有部件实例',buttons=(YES,NO))99#如果没有分析步,弹出警告对话框。有分析步则获取名称100iflen(stps)==1:101getWarningReply(message='当前模型中没有分析步',buttons=(YES,NO))102else:103stepName=stps.keys()[1]104#如果装配体处于Lock状态,解锁105ifa.isLocked==1:106a.unlock()107108#获取螺栓部件109boltPart=bolt(insList)110#切割螺栓部件111cutBolt(boltPart)112#重新生成模型113try:114a.regenerate()115exceptBaseException:116a.restore()117118i=1119#遍历所有螺栓部件实例120foreachInsininsList:121#获取切割面和基准轴122region=getLoadFace(eachIns)123datumAxisIns=getAxis(eachIns)124#施加螺栓力125m.BoltLoad(name='boltLoad-'+str(i),createStepName=stepName,region=region,126magnitude=1450,boltMethod=APPLY_FORCE,datumAxis=datumAxisIns)127i+=1128#关闭基准显示129displayDatum('off')四、脚本要点如果想实现的目标需要由几个步骤配合才能完成,可以在编写脚本之前先将过程梳理清楚。具体来说,本脚本的流程主要有以下四个步骤:第一步:从螺栓部件实例中获取所有的螺栓部件,将其装入列表中;第二步:遍历螺栓部件,在每个螺栓的中心点处垂直于旋转轴进行切割;第三步:遍历螺栓部件实例,提取切割形成的载荷面和基准轴;第四步:施加螺栓力载荷。前三个步骤以自定义函数实现。第一步,获取所有螺栓部件,此功能由函数bolt()实现。函数体中遍历所有部件实例,第23行由部件实例反向获取部件,将它们添加到一个列表中,列表在第28行由return语句返回。由于要对模型进行操作,如果部件处于Lock状态,需要通过第26行解锁。第二步,切割螺栓,该功能由cutBolt()完成。函数以上一步返回的部件列表为参数,对它进行遍历。为防止误操作,首先在第39行删除已有的基准。接着用getBoundingBox()获取边界坐标,尽管装配体中螺栓摆放的位置和方向都不一样,但它们都由Abaqus创建,作为部件,它们的方向是一致的,因此边界坐标具有规律性。第44行~第46行,获取部件中心点处的坐标,第48行在中心点处创建一个基准点。通过该基准点和Y方向基准轴,第53行~第54行将螺栓实体切割,以便施加螺栓力。前两步是对部件进行操作,后两步则是对部件实例进行处理。第三步,由getLoadFace()提取切割产生的载荷面。函数体中,利用部件实例中基准属性的数量来获取切割面,如果基准属性的数量为1,表示只有一个pointOn属性,且该pointOn即为上一步在中心位置创建的基准点,第63行获取该点的坐标。目前切割面已经存在,第66行利用findAt()即可获取此切割面,将它创建为Region对象后,以return语句返回。到目前为止,施加螺栓力还缺基准轴对象,该基准轴不是部件中的基准轴,而是部件实例中的基准轴。函数getAxis()可以获取螺栓基准轴,函数体中第76行通过hasattr()判断基准对象中是否包含属性direction,direction即为基准轴。如包含,则获取它,并以return语句返回。第四步,施加螺栓力载荷。这个功能由Abaqus自带的BoltLoad()完成。主程序中第120行对所有的部件实例做遍历,第122行~第123行获取切割面和基准轴后,第125行~第126行用BoltLoad()即可对螺栓实例施加螺栓力载荷,此处的载荷值统一设为1450N,也可以使用if语句,判断螺栓的规格,施加不同的载荷值。作为一个较为完善的脚本,除了实现主体功能,还需要考虑到其他情况,比如模型中不存在部件实例、没有创建分析步和模型处于Lock状态等,出现这些问题都会直接终止脚本的运行。因此,需要提前做出防范语句,脚本中第97行~第106行,使用if语句做判断,如果出现问题,可以用getWarningReply()弹出警告对话框,提示相应的错误信息。此外,还要考虑重复执行脚本可能会出现的问题,这些代码可以在完成主体结构后再编写。脚本的操作对象为所有装配件。如果装配体中包含其他非螺栓部件,需要修改第92行~第95行,将螺栓部件实例的名称添加到列表insList中。这是纯内核脚本的局限之处,如果内核脚本与GUI搭配使用,可以通过光标选择螺栓,这样能避免手动修改内核脚本,使用起来更加友好。编写较长或较为复杂的脚本时,可以适当使用多个def函数。函数可以将具有独立功能的代码段封装起来,方便调用和管理,本脚本定义了5个函数。通过自定义函数,可以将大段代码分解成若干个小的、可重用的模块,既可以避免重复编写相似的代码,还能提高代码的可读性和可维护性,使程序更加简洁。在编写自定义函数时,需要注意以下几点。1)函数之间的职责应明确,不应该出现重复或冲突的情况。2)函数的参数不应过多,并尽可能遵循一个函数只实现一个功能的原则。3)函数的命名应该准确、易于理解。4)函数应有清晰简明的注释,以方便后期维护或其他开发人员的理解。各个函数编写完成后,将它们以一定的顺序组合起来,放在主程序中,从而完成整个流程。五、写在最后本章介绍了一个批量施加螺栓力的前处理内核脚本。演示的装配体中,螺栓的规格并不一致,各个螺栓的摆放位置和方向也不一样。脚本先通过部件实例获取螺栓的部件,对各部件进行遍历,自动获取螺栓实体的中心点,切割螺栓实体,再在部件实例中获取切割面和基准轴,从而施加螺栓力。此外,脚本中还加入了一些防错语句,对可能出现的问题做出提示。(完)来源:仿真秀App


SYNOPSYS™光学设计软件,是目前世界上功能强大的光学设计软件之一。58 年的发展更新和 Windows 界面使得新手很容易上手使用;能轻松面对更高的专业需求。其开发者 OSD 公 司是世界领先的光学设计软件的开发者之一, 同时提供光学设计服务,OSD 公司几乎在所有类 型的光学系统设计方面有着丰富的经验,包括测试仪器、天文、照明、微光夜视、红外系统、目 镜等方面,设计完成了超过了 28000 个的项目。

CrownCAD(皇冠CAD)是国内首款、完全自主的基于云架构的三维CAD平台。 用户在任意地点和终端打开浏览器(www.crowncad.com)即可进行产品设计和协同分享。

Altair是一家领先的企业级工程软件供应商,它支持从概念设计到服务运营的整个产品生命周期的创新、缩短开发时间和降低成本。Altair集成的软件套件,可以通过多个学科优化设计性能,包括结构、运动、流体、热管理、电磁学、系统建模和嵌入式系统,同时还提供数据分析和真实的可视化渲染。

ANSYS软件是美国ANSYS公司研制的大型通用有限元分析(FEA)软件,是世界范围内增长最快的计算机辅助工程(CAE)软件,能与多数计算机辅助设计(CAD,computer Aided design)软件接口,实现数据的共享和交换,如Creo, NASTRAN、Algor、I-DEAS、AutoCAD等。是融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析软件。



