首页/文章/ 详情

基于Python的Solidworks集成与参数自动化建模

4小时前浏览8

1. 目标

通过python语言调用Solidworks软件,进行结构自动化建模(适用零件及装配体),实现模型参数化,为后续结构参数优化提供基础。

2. 软件版本

本案例使用Solidworks2020、Python3.8

3. 参数化模型示例

基于Solidworks软件建立法兰几何模型(单位为mm-deg),如下图所示。

法兰几何模型

使用方程式将需要优化的参数(法兰上端倒角角度及下端圆盘外径)定义为全局变量,如下图所示。

全局变量定义

法兰上端倒角角度参数定义

法兰下端圆盘外径参数定义

4. 模型自动化更新

基于python语言的Solidworks二次开发编程实现模型参数的自动更新,并保存为通用的x_t格式文件。

图4.1 法兰模型自动更新程序


部分代码:

import os, win32com.client

import pythoncom

Nothing = win32com.client.VARIANT(pythoncom.VT_DISPATCH, None) 

swEdition = 2020    # solidworks软件版本

swApp = win32com.client.Dispatch('SldWorks.Application.{}'.format(swEdition - 1992))    # 通过com方式连接软件

 # 模型文件(支持零件和装配体)

# fileName = 'flange.SLDPRT'     # 法兰零件模型

fileName = 'clamping.SLDASM'  # 夹爪装配模型

file = os.path.join(os.getcwd(), fileName)

 if 'SLDPRT' in file:

    swApp.openDoc(file, 1)      # 打开零件模型文件

    partDoc = swApp.activeDoc     # 定义模型对象为当前打开的零件模型

 elif 'SLDASM' in file:

    swApp.openDoc(file, 2)      # 打开配模型文件

    assemDoc = swApp.activeDoc     # 定义模型对象为当前打开的装配模型

    components = assemDoc.GetComponents(True)

    for index in range(len(components)):

        if components[index].name  == 'WFD-C-A2416B-12-006A 夹爪连接板3-8':

            component = components[index]

            break

    partDoc = component.GetModelDoc2

    comName = component.name

    boolstatus = assemDoc.Extension.SelectByID2(comName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

assemDoc.EditPart()

……

swApp.closeDoc(file)

swApp.exitApp()

下面的内容为付费内容,购买后解锁。

内容简介:通过Python调用Solidworks软件,实现结构参数化建模与自动化更新,适用零部件及装配体模型,附件给出了python代码及案例文件。

SolidWorkspython二次开发参数优化
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-10-10
最近编辑:4小时前
TreatLee
博士 | CAE产品仿真经... catia abaqus isight Tosca
获赞 39粉丝 91文章 9课程 9
点赞
收藏
作者推荐

基于Catia和Abaqus的一种通用参数化建模及自动化仿真分析方法

自动化仿真分析和结构参数优化的功能,通常均需要通过脚本程序实现。然而,对于不同拓扑结构的产品,仿真分析中需要加载/约束的位置通常会有所不同,使得实现自动化仿真的程序很难做到通用。因此,当产品结构的拓扑构型变化时,自动化仿真程序也需要相应的修改,程序不具有通用性。例如:Abaqus中一般通过线/面上点的坐标或线/面的索引id来获取,但当结构拓扑改变时,所需加载/约束的点/线/面也会改变,其索引id和其上点的坐标均会改变,使得程序中线/面的选择很难实现通用。此外,针对较复杂的结构,仿真程序中需要选择的线/面等较多,通过程序实现约束位置的选择十分不便。本文提出了一种通用的参数化建模及自动化仿真分析方法,可用于不同拓扑结构的产品自动化仿真分析和结构参数优化。实现思路如下: (1)在第三方CAD软件(本文以Catia为例)建立结构的参数化模型,并将该模型的所有加载/约束的点/线/面提取出来,并按照一定的命名规则进行命名(如:pressure、cload、tie、symmetry、disp等); (2)将CAD模型导入CAE软件(文本以Abaqus为例)中,通过事先约定的“名称---载荷/约束类型”规则,对CAD模型中的点/线/面施加对应的约束/载荷(如:pressure---该位置施加压力载荷、cload---该位置施加集中力载荷、tie---该位置施加固定约束、symmetry---该位置施加对称约束、disp---该位置施加位移约束等)。 该方法也适用于将结构的几何模型导入第三方网格划分软件生成网格模型,再导入Abaqus中实现在孤立网格上的自动约束和加载。1. 基于Catia的参数化建模 不失一般性,本文以如下图结构作为示例,详细介绍为实现通用结构的自动化仿真分析,采用商用CAD软件Catia的参数化建模方法。图 Catia中结构参数化模型 如上图所示,零件由两个几何体组成,并建立了两个设计参数(totalLength和totalWidth),并将设计参数导出到designTable中(链接到文件designTable.txt)。提取所需加载/约束的线/面特征存放入几何图形集中,并按照一定的规则命名(本示例中,temp_pressure表示该面施加压力载荷,temp_disp123表示该面施加XYZ三个方向的约束,其余类似)。 由于Abaqus对其导入的几何模型(sat、igs、stp、Catia V5等)通常采用默认的命名方式(-1、-2,-3等)进行命名,无法延用几何模型中零部件/几何集等原有的名称(stp格式也仅可以保留装配模型的零部件名称)。因此,无法直接满足 “名称---载荷/约束类型”的命名规则。为了解决该问题,可以将几何模型与每个载荷约束面分别存储为一个文件,文件名遵循 “名称---载荷/约束类型”规则,并分别导入Abaqus中。 本文基于Python语言对Catia进行二次开发,自动输出以下文件(本文以stp格式为例)。 其中,testPart.stp为实体几何模型文件,其余stp文件为待加载/约束的几何线/面特征。 部分代码如下:def updateModel(): import win32com.client import os current_path = os.getcwd() fileList = os.listdir(current_path) for file in fileList: if file.endswith('stp'): os.remove(file) catia = win32com.client.Dispatch('catia.application') docs = catia.documents partDoc = docs.open(os.path.join(current_path, "testPart.CATPart")) part = partDoc.part relations = part.Relations table = relations.item("designTable") table.FilePath = os.path.join(current_path, 'designTable.txt') part.Update() partDoc.ExportData(os.path.join(current_path, "testPart.stp"), "stp") …………2. 基于Abaqus的自动化仿真分析 (1) 将第1节中的所有stp文件均导入Abaqus中,并对除testPart.stp几何模型外的所有几何线/面特征创建set和surface,名称沿用“名称---载荷/约束类型”的命名规则; (2) 将第1节中的所有stp文件对应的几何特征进行布尔运算,生成新部件(新部件保留了原始部件所创建的set和surface,便于材料的赋予和约束载荷的直接施加,而无需使用程序实现对线/面等的提取); (3) 对新部件进行网格划分; (4) 根据set和surface的名称,创建对应的载荷/约束。 注意:对于几何线特征,布尔运算时无法进行合并,因此,当需要对几何线施加约束或载荷时,需要额外处理(下图中的createSetWithNodes函数)。处理思路为: (1) 获取结构外表面的所有节点; (2) 判断节点是否位于几何特征线上; (3) 存储所有位于几何特征线的节点,并创建set。 代码框架如下:3. 应用推广 以上方法/程序具有如下通用性: (1) 上述基于Catia的参数化建模可以用其它CAD软件替代,只需保证加载/约束线/面的命名规则,并分别导出即可; (2) 若结构拓扑不变,仅尺寸变化,则只需更新designTable.txt文件中的设计参数值即可,自动化仿真程序保持不变,可用于结构尺寸优化; (3) 若结构拓扑不变,而加载/约束的线/面有变化,则只需更新catia模型文件中提取的几何图形集中对应的线/面,自动化仿真程序保持不变; (4) 若加载/约束的类型有增加,只需在自动化仿真程序中扩充相应加载/约束程序(补充一次即可); (5) 若拓扑构型有变化,需要在Catia中重新建立参数化模型,并根据命名规则提取待加载/约束的几何特征,而自动化仿真程序保持不变(或少量修改)。

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