Python SolidWorks 二次开发---SolidWorks如何判断零件是钣金件还是焊接件(型材件)

Python SolidWorks 二次开发—SolidWorks如何判断零件是钣金件还是焊接件(型材件)



前言

通常我们在用SolidWorks 设计产品时,经常会用到钣金件或焊接件(型材件)两个模块,用这两个模块设计出来的东西,后期在整理BOM时要根据不同的零件及加工方式,将钣金件交由钣金车间进行生产加工,焊接件(型材件)交由焊接车间进行生产加工,这里介绍下如何快速提出出以上两种零件类型,进行快速的图纸分类。


一、钣金件的识别

这里介绍2中可以识别是否为钣金零件的方法

1、 用IsSheetMetal方法实现,以下为示例代码,为实现以下示例代码要求根装配下均为零件,如有装配体零件还需递归零件,否则会报错

import win32com.client

vBodyInfo=win32com.client.VARIANT(16396,None)

def main():
    sldver=2018
    swApp=win32com.client.Dispatch(f'SldWorks.Application.{sldver-1992}')
    swApp.CommandInProgress =True
    swApp.Visible =True
    swModel = swApp.ActiveDoc
    # 获取所有comp
    vComponents = swModel.GetComponents(True)
    for swComp in vComponents:
        # 获取实体         
        vBodies = swComp.GetBodies3(0, vBodyInfo)
        if vBodies:
            body=vBodies[0]    
            # 判断实体是否钣金特征生成
            boolstatus=body.IsSheetMetal()
            if boolstatus:
                print('是钣金件')
            else:
                print('不是钣金件')

if __name__ == '__main__':
    main()

2、 用SetBendState方法实现,以下为示例代码,为实现以下示例代码要求根装配下均为零件,如有装配体零件还需递归零件,否则会报错

import win32com.client

def main():
    sldver=2018
    swApp=win32com.client.Dispatch(f'SldWorks.Application.{sldver-1992}')
    swApp.CommandInProgress =True
    swApp.Visible =True
    swModel = swApp.ActiveDoc
    # 获取所有comp
    vComponents = swModel.GetComponents(True)
    for swComp in vComponents:
        # 将comp对象转换为ModelDoc2对象
        compMod=swComp.GetModelDoc2
        # 获取折弯信息
        res = compMod.GetBendState
        if res==0:
            print('不是钣金件')
        else:
            print('是钣金件')

if __name__ == '__main__':
    main()

3、 两种方法的比较

方法名称优点缺点适用场合
IsSheetMetal准确率高,可以对所有body对象进行判断Body2 对象方法,调用麻烦零件body是由多种方式创建的,如钣金,焊件,实体等
SetBendStateModelDoc2对象方法,调用方便,速度快只能判断单个零件,有可能误判只能使用钣金创建零件,如由其他方法可能误判

二、焊接件的识别

用IsWeldment方法实现,以下为示例代码,为实现以下示例代码要求根装配下均为零件,如有装配体零件还需递归零件,否则会报错

import win32com.client

def main():
    sldver=2018
    swApp=win32com.client.Dispatch(f'SldWorks.Application.{sldver-1992}')
    swApp.CommandInProgress =True
    swApp.Visible =True
    swModel = swApp.ActiveDoc
    # 获取所有comp
    vComponents = swModel.GetComponents(True)
    for swComp in vComponents:
        # 将comp对象转换为ModelDoc2对象
        compMod=swComp.GetModelDoc2
        # 判断是否焊接件
        res = compMod.IsWeldment
        if res:
            print('是焊接件')
        else:
            print('不是焊接件')

if __name__ == '__main__':
    main()

总结:

以上的示例仅为演示方法的实现,如根装配下还有装配体,以上代码可能会报错,需要递归处理。

无论是钣金件还是焊接件,建议在零件设计时都只单独使用钣金模块或者是焊件模块,不建议混合使用,虽然设计时候省事,后期处理会比较麻烦,而且以上函数在处理混合建模的零件可能会出现误判的情况。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SolidWorks可以通过Python编程语言进行二次开发Python是一种简单易学的脚本语言,拥有丰富的库和模块,可以很好地与Solidworks集成。 首先,为了进行SolidWorks二次开发,我们需要安装SolidWorks API以及Python的相关库。SolidWorks API是一组可用于对SolidWorks进行编程访问的库和接口。Python的相关库包括pywin32和comtypes,用于与SolidWorks的COM接口进行交互。 使用Python进行SolidWorks二次开发可以实现许多功能,如自动化生成零件、装配和工程图。我们可以使用Python脚本读取和修改SolidWorks、创建和操作零件和装配,以及生成和管理工程图。Python也可以帮助我们进行CAD数据的处理和分析,如提取尺寸信息、计算质量和重心等。 在二次开发中,我们可以编写Python脚本来快速完成重复性的任务,提高工作效率。Python的易学性和代码的简洁性使得二次开发变得更加容易,无需编写繁琐的代码,可以快速实现想要的功能。 除了使用已有的库和模块,我们还可以使用SolidWorks的API文档和示例代码来学习和开发自己的功能。SolidWorks提供了详细的API文档,其中包含各种对象和方法的说明,以及示例代码和教程来帮助我们开始二次开发。 总之,通过使用Python进行SolidWorks二次开发,我们可以实现自动化、快速和高效的CAD任务处理,并且具有灵活性和可扩展性。这极大地促进了CAD工程师在实际工作中的效率和创造力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值