python catia二次开发_CATIA VBA二次开发教程|使用零件的Body生成Product
前言:本文主要探讨如何通过宏将零件下的所有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相关推荐
- pb界面框架开发_CATIA CAA二次开发草图界面框架类:CATSketcherCommands
SketcherInterfaces 类 CATSketcherCommands 用法:您必须按原样使用此类.你不应该派生它. public class CATSketcherCommands 方法索 ...
- CATIA软件VBA二次开发:Excel文件中点坐标数据导入与生成点应用程序编写
本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 前几期为大家介绍了基于VBA二次开发的CATIA软件焊点坐标数据导出应用程序编写以及焊点小球生成工具应用程 ...
- 480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程
480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程 ===============课程目录=============== ├─(1) 01-Pyt ...
- python如何使用sdk_Python实现海康威视SDK二次开发-1
此贴能起到的作用 通过这个帖子,能了解到如何用Python调用海康SDK,实现业务逻辑需要结合哪些资料,这些接口的参数是怎么样的,如何翻译成Python,如何传参,参数中的一些变量,常量可以怎样查找. ...
- excel 调用barTender打印条码 VBA 调用BarTender打印标签BarTender二次开发 VBA 条码打印 VBA二维码打印 Excel条码打印 Excel二维码打印
制造业使用二维码标签的原因有很多,以下是一些主要的原因: 1. 商品跟踪:二维码标签可让制造商和供应商跟踪货物的生产和出货情况.二维码中可以包含有关商品的所有必要信息,如生产日期.批次号.产品型号等. ...
- Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发
二维码组成结构基本介绍 二维码识别背景介绍 视觉的方法可以用来估计位置和姿态.最容易想到的是在目标上布置多个容易识别的特征,这样使用opencv相机标定和.相机畸变矫正.轮廓提取.solvepnp来获 ...
- python能二次开发cad么_2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)
本项目使用手动创建,意为不使用SDK模板. 从Visual Studio的"文件"下拉菜单中,选择"新建"->"项目...". 在出现 ...
- 2021.4.7 美团买菜后端开发实习生(二面)(含总结)(已oc)
title: 2021.4.7 美团买菜后端开发实习生(二面) tags: 面经 2021.4.7 美团买菜后端开发实习生(二面) 自我介绍 Java学习时长 final关键字的作用(见下文) 注解有 ...
- 视频教程-微信公众平台深度开发v2.0第3季——二维码、模板消息-微信开发
微信公众平台深度开发v2.0第3季--二维码.模板消息 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考) ...
- python项目二:多种验证码及二维码输出
python项目二:多种验证码及二维码输出 ` import os import qrcode import random import time import tkinter from pystri ...
最新文章
- 重磅!教育部:不得将发论文和物质奖励挂钩,防止高额奖励论文
- 无法激活“Pylance“扩展, 因为它依赖于未加载的 Python 扩展。解决办法
- 如何改变computed执行_企业管理|执行力差的企业一般有这几个点没做好
- Java反射机制和动态代理实例
- main函数与命令行参数
- php5.6 交叉编译,Cross-compile - 龙芯开源社区
- 风控特:关系网络特征工程入门实践
- CodeForces:54
- Kubernetes应用跨可用区实战
- du,df命令和磁盘管理
- 脚本实现为一系列账号生成随机密码
- 云电脑搭配量子计算机,量子计算机和量子模拟器
- java小项目:抽签小程序
- 安装Mendeley后Word中没有出现对应的Mendeley插件
- c语言实训作业,c语言实训报告评语
- 文件储存器 - IP通讯技术
- 测试dns的工具--rndc,dig命令----DNS排错,在线修改bind(nsupdate)
- Splitter Control for Dialog
- <数据库> LEAD函数的用法 Leetcode 1709. 访问日期之间最大的空档期
- 一个屌丝程序猿的人生(四十七)