Python SolidWorks 二次开发—SolidWorks中的事件实现

Python SolidWorks 二次开发—SolidWorks中的事件实现



前言

事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。
SolidWorks中的事件有如下几种,分别为:
DAssemblyDocEvents(装配体),
DDrawingDocEvents(工程图),
DFeatMgrViewEvents(特征管理),
DModelViewEvents(模型视图),
DMouseEvents(鼠标),
DPartDocEvents(零件),
DSldWorksEvents(SolidWorks),
DTaskpaneViewEvents(任务查看)。


一、如何实现com事件

这里以excel为例,网上示例很多,这里简单给个示例,代码如下:

from win32com.client import DispatchWithEvents

class ExcelEvents:
    def OnNewWorkbook(self, wb):
        print('打开excel新文档')

def main():    
    excelApp = DispatchWithEvents("Excel.Application", ExcelEvents)
    excelApp.Visible = True
    book=excelApp.Workbooks.Add()

if __name__ == '__main__':
    main()

在excel中实现事件是用的DispatchWithEvents函数,提前定义好相关的事件类,并将类以参数的形式调用,类中定义的事件函数名需要查找帮助,并不是随其定义的,执行以上代码会在终端输出"打开excel新文档"的内容,说明事件功能已经实现

二、SolidWorks中如何实现com事件

在SolidWorks中如果使用DispatchWithEvents会报错,所以不能直接使用,以下是SolidWorks中调用事件的示例代码,代码如下:

import pythoncom
import win32com.client 
class SldEvents(win32com.client.getevents("SldWorks.Application")):
    def OnFileOpenNotify(self, FileName):
        print(f'打开的文件名为:{FileName}')
    def OnFileNewNotify(self, NewDoc=None, DocType=None):
        print('test',NewDoc,DocType)
def main():
    swApp=win32com.client.Dispatch('SldWorks.Application')
    swApp.CommandInProgress =True
    swModel=swApp.ActiveDoc
    events=SldEvents(swApp)
    errors=win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, -1)
    warnings=win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, -1)
    filename=r'C:\test\test.sldprt'
    swModel=swApp.OpenDoc6(filename, 1, 1, "", errors, warnings)

if __name__ == '__main__':
    main()

可以看到,在SolidWorks中使用事件和excel类似,都需要先定义事件类,并且在类中需要使用win32com.client.getevents定义是继承那个事件的基础类,在主函数中先实例化此事件类,完成后运行以上代码,会在终端提示“打开的文件名为:C:\test\test.sldprt”,需要将示例中的文件路径进行修改。
SolidWorks中其他事件和以上代码相同,都需要线定义对应的类事件,在事件出发前需要实例化,然后相应的事件就会触发。
大多数com事件使用DispatchWithEvents函数就可以,SolidWorks中事件的用法不太一样,按照以上示例代码使用即可实现。
事件的使用有时可能会降低效率,是否使用需结合实际使用环境决定。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值