首页/文章/ 详情

ANSA二次开发——前期准备

2月前浏览1584

        二次开发的前期准备工作:首先你得先会这个软件,了解到GUI界面上的功能有哪些,这很重要。如果软件都不熟悉,直接去看API文档,效率很低的。虽然通过代码实现的功能比GUI界面的多,但是前期的开发基本上都是对GUI界面的操作通过代码复现。

     随着这两年ANSA使用者越来越多,互联网上关于ANSA二次开发的资料也很容易搜索到了,比如去CSDN,Github,Bilibili这些上面有大佬免费分享的资料。如果你有钞能力,那像技 术邻,仿真秀之类的网站就很适合你。

        当你看把搜索到的资料看个大概后,再去看软件安装目录自带的脚本,推荐去看"<Home-Dir>\scripts\CAD_Translate”目录下的“OpenCADFixGeoBatchMesh.py“与”OpenCADSkinBatchMesh.py“文件,通过名字就能看出来,都是BatchMesh相关的脚本,一个会抽取中面,另一个不会,可以理解为一个是画钣金网格的,另一个是四面体网格的。理解代码所对应的功能,把相关语句改改,应用到工作中,当它能更好的帮助你摸鱼的时候,你才有兴趣继续学下去了,就能理解到二次开发的妙处。

以下是些小知识:

1、带着问题去找API,写了几个脚本后再去挨着看帮助文档的API。

2、交互选择的API与Hm的*createmarkpanel类似:base.PickEntities,

3、查看启动ANSA 的一些配置 就是下图Other旁边问号,比如像网格显示的张牙舞爪的时候,需要在无GUI界面下执行脚本的时候,都能在里面找到对应的配置选项:

4、二次开发不难,就是麻烦,你需要去理解上千个API的用法,这就是熟能生巧的过程,写多了,看多了,自然就掌握了。

啦啦啦啦啦开始水字数啦啦啦啦啦啦啦啦啦开始水字数啦啦啦啦啦啦啦啦啦开始水字数啦啦啦啦---Music响起


来源:TodayCAEer
二次开发ANSAADS钣金
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:2月前
TodayCAEer
本科 签名征集中
获赞 17粉丝 22文章 228课程 0
点赞
收藏
作者推荐

Tcl Call Python

tcl是ToolCommandLanguage的首字母缩写,发展至今,目前使用较多的,可能是以下几个领域,altair的HyperWork产品、IC行业,Python,perl,haskell等语言使用作为GUI库。用户少那么弊端就很明显,对应的交流就少,缺少维护,缺少开源社区,反之对应的语言是什么呢,心中都有个答案,Python,是吧,又不是自己造轮子,gitclone一下方便快捷。Python,既然发展得如此迅猛,tcl如何搭上这艘快船呢,他提供了一个关键的函数,exec,使用起来也是很简单。最重要的是,将python.exe的目录置为当前。再就是你调用的包,包含在当前解释器。内网的小伙伴,anaconda安排上,解决大部分模块安装问题直接上代码,exec调用Python文件#Pythondefadd(a,b):returna+bsum=add(10,20)print(sum)#tclsetALTAIR_HOME[hm_info-appinfoALTAIR_HOME]setpython_s_dir&quot;/hwsolvers/common/python/python3.4/win64&quot;setpython_dir[format$ALTAIR_HOME%s$python_s_dir]cd$python_dirsetscriptsDir[filedir[infoscript]]setsum[execpython[filejoin$scriptsDiradd].py]puts$sumPython传递参数基于sys模块#Python文件内容importsysdefadd(a,b):returnint(a)+int(b)sum=add(sys.argv[1],sys.argv[2])print(sum)‍#tcl文件内容setALTAIR_HOME[hm_info-appinfoALTAIR_HOME]setpython_s_dir&quot;/hwsolvers/common/python/python3.4/win64&quot;setpython_dir[format$ALTAIR_HOME%s$python_s_dir]cd$python_dirsetsum[execpythonadd1.py5010]puts$sum通过捕获标准输出获取数据exec直接运行Python脚本setpython_script{importnumpyasnprandom_numbers=np.random.randn(100)print(random_numbers)}cd&quot;D:/Users/jintian/anaconda3&quot;setresult[execpython&lt;&lt;$python_script]puts&quot;$result&quot;GUI界面运行setpython_script{fromPyQt6.QtCoreimportQDateTime,Qt,QTimerfromPyQt6.QtWidgetsimport(QApplication,QCheckBox,QComboBox,QDateTimeEdit,QDial,QDialog,QGridLayout,QGroupBox,QHBoxLayout,QLabel,QLineEdit,QProgressBar,QPushButton,QRadioButton,QScrollBar,QSizePolicy,QSlider,QSpinBox,QStyleFactory,QTableWidget,QTabWidget,QTextEdit,QVBoxLayout,QWidget)classWidgetGallery(QDialog):def__init__(self,parent=None):super(WidgetGallery,self).__init__(parent)self.originalPalette=QApplication.palette()styleComboBox=QComboBox()styleComboBox.addItems(QStyleFactory.keys())styleLabel=QLabel(&quot;&amp;Style:&quot;)styleLabel.setBuddy(styleComboBox)self.useStylePaletteCheckBox=QCheckBox(&quot;&amp;Usestyle&#39;sstandardpalette&quot;)self.useStylePaletteCheckBox.setChecked(True)disableWidgetsCheckBox=QCheckBox(&quot;&amp;Disablewidgets&quot;)self.createTopLeftGroupBox()QApplication.processEvents()self.createTopRightGroupBox()QApplication.processEvents()self.createBottomLeftTabWidget()QApplication.processEvents()self.createBottomRightGroupBox()QApplication.processEvents()self.createProgressBar()QApplication.processEvents()styleComboBox.textActivated.connect(self.changeStyle)self.useStylePaletteCheckBox.toggled.connect(self.changePalette)disableWidgetsCheckBox.toggled.connect(self.topLeftGroupBox.setDisabled)disableWidgetsCheckBox.toggled.connect(self.topRightGroupBox.setDisabled)disableWidgetsCheckBox.toggled.connect(self.bottomLeftTabWidget.setDisabled)disableWidgetsCheckBox.toggled.connect(self.bottomRightGroupBox.setDisabled)topLayout=QHBoxLayout()topLayout.addWidget(styleLabel)topLayout.addWidget(styleComboBox)topLayout.addStretch(1)topLayout.addWidget(self.useStylePaletteCheckBox)topLayout.addWidget(disableWidgetsCheckBox)mainLayout=QGridLayout()mainLayout.addLayout(topLayout,0,0,1,2)mainLayout.addWidget(self.topLeftGroupBox,1,0)mainLayout.addWidget(self.topRightGroupBox,1,1)mainLayout.addWidget(self.bottomLeftTabWidget,2,0)mainLayout.addWidget(self.bottomRightGroupBox,2,1)mainLayout.addWidget(self.progressBar,3,0,1,2)mainLayout.setRowStretch(1,1)mainLayout.setRowStretch(2,1)mainLayout.setColumnStretch(0,1)mainLayout.setColumnStretch(1,1)self.setLayout(mainLayout)self.setWindowTitle(&quot;Styles&quot;)self.changeStyle(&#39;Windows&#39;)defchangeStyle(self,styleName):QApplication.setStyle(QStyleFactory.create(styleName))self.changePalette()defchangePalette(self):if(self.useStylePaletteCheckBox.isChecked()):QApplication.setPalette(QApplication.style().standardPalette())else:QApplication.setPalette(self.originalPalette)defadvanceProgressBar(self):curVal=self.progressBar.value()maxVal=self.progressBar.maximum()self.progressBar.setValue(curVal+(maxVal-curVal)//100)defcreateTopLeftGroupBox(self):self.topLeftGroupBox=QGroupBox(&quot;Group1&quot;)radioButton1=QRadioButton(&quot;Radiobutton1&quot;)radioButton2=QRadioButton(&quot;Radiobutton2&quot;)radioButton3=QRadioButton(&quot;Radiobutton3&quot;)radioButton1.setChecked(True)checkBox=QCheckBox(&quot;Tri-statecheckbox&quot;)checkBox.setTristate(True)checkBox.setCheckState(Qt.CheckState.PartiallyChecked)layout=QVBoxLayout()layout.addWidget(radioButton1)layout.addWidget(radioButton2)layout.addWidget(radioButton3)layout.addWidget(checkBox)layout.addStretch(1)self.topLeftGroupBox.setLayout(layout)defcreateTopRightGroupBox(self):self.topRightGroupBox=QGroupBox(&quot;Group2&quot;)defaultPushButton=QPushButton(&quot;DefaultPushButton&quot;)defaultPushButton.setDefault(True)togglePushButton=QPushButton(&quot;TogglePushButton&quot;)togglePushButton.setCheckable(True)togglePushButton.setChecked(True)flatPushButton=QPushButton(&quot;FlatPushButton&quot;)flatPushButton.setFlat(True)layout=QVBoxLayout()layout.addWidget(defaultPushButton)layout.addWidget(togglePushButton)layout.addWidget(flatPushButton)layout.addStretch(1)self.topRightGroupBox.setLayout(layout)defcreateBottomLeftTabWidget(self):self.bottomLeftTabWidget=QTabWidget()self.bottomLeftTabWidget.setSizePolicy(QSizePolicy.Policy.Preferred,QSizePolicy.Policy.Ignored)tab1=QWidget()tableWidget=QTableWidget(10,10)tab1hbox=QHBoxLayout()tab1hbox.setContentsMargins(5,5,5,5)tab1hbox.addWidget(tableWidget)tab1.setLayout(tab1hbox)tab2=QWidget()textEdit=QTextEdit()textEdit.setPlainText(&quot;Twinkle,twinkle,littlestar,\n&quot;&quot;HowIwonderwhatyouare.\n&quot;&quot;Upabovetheworldsohigh,\n&quot;&quot;Likeadiamondinthesky.\n&quot;&quot;Twinkle,twinkle,littlestar,\n&quot;&quot;HowIwonderwhatyouare!\n&quot;)tab2hbox=QHBoxLayout()tab2hbox.setContentsMargins(5,5,5,5)tab2hbox.addWidget(textEdit)tab2.setLayout(tab2hbox)self.bottomLeftTabWidget.addTab(tab1,&quot;&amp;Table&quot;)self.bottomLeftTabWidget.addTab(tab2,&quot;Text&amp;Edit&quot;)defcreateBottomRightGroupBox(self):self.bottomRightGroupBox=QGroupBox(&quot;Group3&quot;)self.bottomRightGroupBox.setCheckable(True)self.bottomRightGroupBox.setChecked(True)lineEdit=QLineEdit(&#39;s3cRe7&#39;)lineEdit.setEchoMode(QLineEdit.EchoMode.Password)spinBox=QSpinBox(self.bottomRightGroupBox)spinBox.setValue(50)dateTimeEdit=QDateTimeEdit(self.bottomRightGroupBox)dateTimeEdit.setDateTime(QDateTime.currentDateTime())slider=QSlider(Qt.Orientation.Horizontal,self.bottomRightGroupBox)slider.setValue(40)scrollBar=QScrollBar(Qt.Orientation.Horizontal,self.bottomRightGroupBox)scrollBar.setValue(60)dial=QDial(self.bottomRightGroupBox)dial.setValue(30)dial.setNotchesVisible(True)layout=QGridLayout()layout.addWidget(lineEdit,0,0,1,2)layout.addWidget(spinBox,1,0,1,2)layout.addWidget(dateTimeEdit,2,0,1,2)layout.addWidget(slider,3,0)layout.addWidget(scrollBar,4,0)layout.addWidget(dial,3,1,2,1)layout.setRowStretch(5,1)self.bottomRightGroupBox.setLayout(layout)defcreateProgressBar(self):self.progressBar=QProgressBar()self.progressBar.setRange(0,10000)self.progressBar.setValue(0)timer=QTimer(self)timer.timeout.connect(self.advanceProgressBar)timer.start(1000)if__name__==&#39;__main__&#39;:importsysapp=QApplication(sys.argv)gallery=WidgetGallery()gallery.show()sys.exit(app.exec())}cd&quot;D:/Users/jintian/anaconda3&quot;setresult[execpython&lt;&lt;$python_script&amp;]拓展训练,如何使用tcl调取Python,对网格节点进行聚类分析,留给大家了,Python能够基于HyperWork平台干哪些有趣的事情,也交由大家探索了。看到这里了点点关注吧来源:TodayCAEer

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