前言:本文主要探讨如何通过宏将零件下的所有Body或者自选的Body批量生成Product的思路。同时,进一步探讨代码的优化方法,希望对大家有所帮助。

0视频演示

高清视频请访问如下链接查看:

1目录

0. 视频演示

1. 目录

2. 编程思路

3. 如何获取装配下的指定对象

4. 如何创建装配文档

5. 如何对窗口排序

6. 如何选择粘贴的模式

7. 如何实现装配子集间Body的复制

8. 如何实现全选Body和自选Body

9. 如何解决装配重名的问题

10. 如何过滤掉PartNumber中不需要的字符

11. 详细代码

12. 参考资料

2编程思路

首先我们设计如下窗体,用于交互:

接下来,我们为这个窗体添加相应的功能就可以了。

从零件的Body创建Product大概的思路为:

1)获取到零件下的Body特征

2)用Selection方法复制Body

3)获取到装配下的PartDocument 的Part特征

4)用Selection 方法粘贴Body

5)尽可能多的考虑其他Error情况,提前规避

如下的代码就能实现从零件的Body创建Product,这是我已经简化过的核心代码,本文的代码都是在这个基础上增加其他功能演变而来的:

3如何获取装配下的指定对象

获取到Product下的Body的代码为:

CATIA.ActiveDocument.Product.Products.Item(1).ReferenceProduct.Parent.Part.Bodies.Item(1).Shapes.Item(1)

这句里面有两个关键属性,ReferenceProduct和parent的概念,理解了这两个属性,那么对于装配下如何获取指定对象基本就有思路了。

ReferenceProduct是Product的属性,parent就是它的父级。

下表是我从TypeName、Name、PartName和PartNumber四个维度对上面这句代码的详细比较,我觉得下面这个表看明白了,也就能理解和运用上面的代码了。

4如何创建装配文档

查询V5Automation.chm手册,得到如下信息:

所以很容易就得到了,新建一个装配文档的方法:

Set oPartDoc = CATIA.ActiveDocument

Set oProductDoc = CATIA.Documents.Add("Product")

5如何对窗口排序

查询V5Automation.chm手册,得到如下信息:

所以很容易就得到了,新建一个对窗口进行垂直排序的方法:

CATIA.Windows.Arrange catArrangeTiledVertical

CATIA.Windows.Item(1).Activate

6如何选择粘贴的模式

查询V5Automation.chm手册,得到如下信息:

所以很容易就得到了,按照结果进行选择性粘贴的方法:

CATIA.ActiveDocument.Selection.PasteSpecial

"CATPrtResultWithOutLink"

7如何实现装配子集间Body的复制

我们可以先利用上面的知识做一个简单的实例,如下图,将Product下第一个Product里的Body复制到第二个Product中

大家看直接看代码就可以了,有兴趣的可以尝试在这个基础上再增加些功能

这里重点强调下,更新是个问题。目前想出来的一种方法,大家可以参考下:

CATIA.Documents.Item(CATIA.ActiveDocument.Product.

Products.Item(2).ReferenceProduct.Parent.Name).Part.Update

8如何实现全选Body和自选Body

使用For...Next进行循环遍历,当然也可以用For obody in Each Bodies.

全选的代码如下:

可选的话使用selection3进行选择就可以,固定套路,代码如下:

我们可以使用with ...End with 来优化代码,至少目前我所看到的墙外大佬的代码,with的使用基本是家常便饭了。不管书写、阅读还是修改起来也方便很多,让我想起了学Python的时候,一直强调的优雅两个字,扯远了。

9如何解决装配重名的问题

我们都知道,在CATIA DesignMode下同时出现两个相同PartNumber的文件,CATIA会提示报错,要求重命名。

但是Body名称重名这个是允许的。如果我们想让新生成的Product下的零件的PartNumber和Body的名称相同的话,就必须要解决重名的问题,否则要么名称不变,要么就容易产生Error.

这里分享一种思路,供大家参考。我在做的时候,先遍历检查Part中的Body名称,如果有重名,那么就在名称后加Rename&i进行区分,这样生成的Product就不会有重名了。代码如下:

10如何过滤掉PartNumber中不需要字符

在进行设计后的数据交换时,为了轻量化,很多人习惯使用如下装配模式下的从装配生成零件的命令,如下所示:

细心的话,会发现,我们生成的零件文档里的Body名称是这样的:

你猜的没错,就是“\”,这个其实是个非法字符,我们在转化为Product时,要把“\”去掉的。我们可以全程使用Replace方法去掉:

同样我们还可以去掉空格、“-”、等等字符

代码书写如下:

11详细代码

>>>窗体代码:

>>>模块代码

>>>初始化CATIAPart

>>>打开文件对话框选择文件

>>>自定义拷贝Part下的Body生成Product

>>>拷贝Part下的所有Body生成Product

12参考资料

1.V5Automation.chm帮助文档

2. Eng-tips论坛资料

3.本文涉及到的模型和代码请访问如下链接下载:

4.3D模型来源于网络。

教程来自慧舟软件

PLM应用工程师

伍松 提供

python catia二次开发_CATIA VBA二次开发教程|使用零件的Body生成Product相关推荐

  1. pb界面框架开发_CATIA CAA二次开发草图界面框架类:CATSketcherCommands

    SketcherInterfaces 类 CATSketcherCommands 用法:您必须按原样使用此类.你不应该派生它. public class CATSketcherCommands 方法索 ...

  2. CATIA软件VBA二次开发:Excel文件中点坐标数据导入与生成点应用程序编写

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 前几期为大家介绍了基于VBA二次开发的CATIA软件焊点坐标数据导出应用程序编写以及焊点小球生成工具应用程 ...

  3. 480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程

    480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程 ===============课程目录=============== ├─(1) 01-Pyt ...

  4. python如何使用sdk_Python实现海康威视SDK二次开发-1

    此贴能起到的作用 通过这个帖子,能了解到如何用Python调用海康SDK,实现业务逻辑需要结合哪些资料,这些接口的参数是怎么样的,如何翻译成Python,如何传参,参数中的一些变量,常量可以怎样查找. ...

  5. excel 调用barTender打印条码 VBA 调用BarTender打印标签BarTender二次开发 VBA 条码打印 VBA二维码打印 Excel条码打印 Excel二维码打印

    制造业使用二维码标签的原因有很多,以下是一些主要的原因: 1. 商品跟踪:二维码标签可让制造商和供应商跟踪货物的生产和出货情况.二维码中可以包含有关商品的所有必要信息,如生产日期.批次号.产品型号等. ...

  6. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发

    二维码组成结构基本介绍 二维码识别背景介绍 视觉的方法可以用来估计位置和姿态.最容易想到的是在目标上布置多个容易识别的特征,这样使用opencv相机标定和.相机畸变矫正.轮廓提取.solvepnp来获 ...

  7. python能二次开发cad么_2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)

    本项目使用手动创建,意为不使用SDK模板. 从Visual Studio的"文件"下拉菜单中,选择"新建"->"项目...". 在出现 ...

  8. 2021.4.7 美团买菜后端开发实习生(二面)(含总结)(已oc)

    title: 2021.4.7 美团买菜后端开发实习生(二面) tags: 面经 2021.4.7 美团买菜后端开发实习生(二面) 自我介绍 Java学习时长 final关键字的作用(见下文) 注解有 ...

  9. 视频教程-微信公众平台深度开发v2.0第3季——二维码、模板消息-微信开发

    微信公众平台深度开发v2.0第3季--二维码.模板消息 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考) ...

  10. python项目二:多种验证码及二维码输出

    python项目二:多种验证码及二维码输出 ` import os import qrcode import random import time import tkinter from pystri ...

最新文章

  1. 重磅!教育部:不得将发论文和物质奖励挂钩,防止高额奖励论文
  2. 无法激活“Pylance“扩展, 因为它依赖于未加载的 Python 扩展。解决办法
  3. 如何改变computed执行_企业管理|执行力差的企业一般有这几个点没做好
  4. Java反射机制和动态代理实例
  5. main函数与命令行参数
  6. php5.6 交叉编译,Cross-compile - 龙芯开源社区
  7. 风控特:关系网络特征工程入门实践
  8. CodeForces:54
  9. Kubernetes应用跨可用区实战
  10. du,df命令和磁盘管理
  11. 脚本实现为一系列账号生成随机密码
  12. 云电脑搭配量子计算机,量子计算机和量子模拟器
  13. java小项目:抽签小程序
  14. 安装Mendeley后Word中没有出现对应的Mendeley插件
  15. c语言实训作业,c语言实训报告评语
  16. 文件储存器 - IP通讯技术
  17. 测试dns的工具--rndc,dig命令----DNS排错,在线修改bind(nsupdate)
  18. Splitter Control for Dialog
  19. <数据库> LEAD函数的用法 Leetcode 1709. 访问日期之间最大的空档期
  20. 一个屌丝程序猿的人生(四十七)

热门文章

  1. 【知识分享】Batch(批处理)-学生管理系统可视化界面的应用
  2. Ubuntu安装兄弟打印机驱动
  3. 使用putty进行Linux串口连接
  4. 如何在kylo中添加数据源
  5. AUC PR曲线 学习曲线
  6. php mysql是bs还是cs_bs和cs架构的区别是什么
  7. PR视频转场预设 10个快节奏极限运动空间扭曲效果PR转场过渡预设
  8. Excel键盘快捷键大全(二)
  9. cesium拾取pick系列(拾取坐标和对象)
  10. 谷歌浏览器主题背景图片保存方法