目录
引出
最近在研究catia二次开发,发现网上的资料非常有限,尤其是博客文件比较少,这个系列文章是本人的学习笔记,分享出来,只为抛砖引玉,希望对你有帮助。
CATIA二次开发VB入门(1)——认识catia二次开发,宏的录制、回放和编辑
认识CATIA二次开发
V5 AUTOMATION开发
刘瑞欣 vb程序设计教程
Excel中的vba开发
catia中的vba开发
宏的录制、回放和编辑
宏代码精简
录制到项目中,录制成一个模块
catia的vba开发环境设置,取消dim的限值,这样就可以不用定义变量,便于简化录制的宏程序
Sub CATMain()
Set partDocument2 = CATIA.Documents.Add("Part")
Set part2 = partDocument2.Part
Set body1 = part2.Bodies.Item("零件几何体")
Set sketches1 = body1.Sketches
Set originElements1 = part2.OriginElements
Set reference1 = originElements1.PlaneYZ
Set sketch1 = sketches1.Add(reference1)
part2.InWorkObject = sketch1
Set factory2D1 = sketch1.OpenEdition()
Set circle2D1 = factory2D1.CreateClosedCircle(0#, 0#, 20)
sketch1.CloseEdition
part2.InWorkObject = sketch1
Set hybridShapeFactory1 = part2.HybridShapeFactory
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0#, 0#, 0#)
Set reference2 = part2.CreateReferenceFromObject(sketch1)
Set hybridShapeExtrude1 = hybridShapeFactory1.AddNewExtrude(reference2, 60#, 60#, hybridShapeDirection1)
hybridShapeExtrude1.SymmetricalExtension = 0
body1.InsertHybridShape hybridShapeExtrude1
part2.InWorkObject = hybridShapeExtrude1
part2.Update
End Sub
画圆柱阵列
Sub CATMain()
Set partDocument2 = CATIA.Documents.Add("Part")
Set part2 = partDocument2.Part
Set body1 = part2.Bodies.Item("零件几何体")
Set sketches1 = body1.Sketches
Set originElements1 = part2.OriginElements
Set reference1 = originElements1.PlaneYZ
Set sketch1 = sketches1.Add(reference1)
part2.InWorkObject = sketch1
Set factory2D1 = sketch1.OpenEdition()
'--------------------------------------------
For i = 0 To 99
Set circle2D1 = factory2D1.CreateClosedCircle(50 * i, 0#, 20)
Next
'--------------------------------------------
sketch1.CloseEdition
part2.InWorkObject = sketch1
Set hybridShapeFactory1 = part2.HybridShapeFactory
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0#, 0#, 0#)
Set reference2 = part2.CreateReferenceFromObject(sketch1)
Set hybridShapeExtrude1 = hybridShapeFactory1.AddNewExtrude(reference2, 60#, 60#, hybridShapeDirection1)
hybridShapeExtrude1.SymmetricalExtension = 0
body1.InsertHybridShape hybridShapeExtrude1
part2.InWorkObject = hybridShapeExtrude1
part2.Update
End Sub
每次画完都自动更新,这样能实时看到caita的变化
宏Macro文件的3种类型
宏的保存:文件夹,项目,catia文件
保存到文件中的两种后缀格式,catiaScript和vbScript,即catia脚本和vb脚本
catvba模式的导出
宏的默认编辑器设置
宏加入到工具条中
选择catiavba项目作为当前的宏库
工具,自定义选项卡
可以设置图标
按住,拖到工具条中
方式一:工具条中,点击图标运行,显示弹窗
方式二:作为catia脚本,直接双击运行
插曲:工具条的恢复
总结
CATIA二次开发VB入门(1)——认识catia二次开发,宏的录制、回放和编辑
其他内容
发生肾么事了??
鼠标中键旋转不了
解决:特征树不显示参数关系
我的窗口去哪了?
插曲:草图工具的调出
插曲:颜色工具栏显示
如果没有看到能更改颜色的工具栏,则点击如下
弹窗警告
警告:创建约束是临时的
操作技巧
技巧:快速隐藏不相关元素
快速隐藏不相关的元素
异形弹簧
新建几何体
草图编辑,画一条样条线
进行扫掠,圆心和半径
画出曲面上的螺旋线
定义直线,选择曲线的角度/法线
在曲线上创建点
支持面选择扫掠面,角度7度,终点设置大一点,选中支持面上的几何图形
再次选择扫掠,圆心和半径
双击修改,调整一下样条曲线
其他
自定义信号和槽
1.自定义信号
写到signals下
返回void
需要声明,不需要实现
可以有参数,可以重戟
2.自定义槽
返回void
需要声明,也需要实现
可以有参数,可以重载
写到public slot下或者public或者全局函数
3.建立连接
// 老师饿了,学生请吃饭
connect(te,&Teacher::hungry,st,&Student::treat);
4.进行触发
自定义信号重载
当自定义信号和槽出现重载
8.1 需要利用还数指针明确指向函数的地址·
8.2void(Teacher::tsignal )QString )=&Teacher::hungry;
8.3 QString转成char *
8.3.1.ToUtf80转为QByteArray
8.3.2.Data0转为Char *
8.4信号可以连接信号
8.5断开信号disconnect
带参数的
void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;
void (Student::*StudentSlot)(QString) = &Student::treat;
void Student::treat(QString foodName){
// QString -> char * 先转成QByteArray(.toUtf8()) 再转成Char* ()
qDebug() << "请老师吃。。。" << foodName.toUtf8().data();
}
按钮触发
// 用一个按钮调用下课
QPushButton *btn = new QPushButton("下课了",this);
// 重置窗口daxiao
this->resize(600,400);
connect(btn,&QPushButton::clicked,this,&Widget::classIsOver);
信号触发信号
// 无参的信号和槽连接
void (Teacher::*teacherSignal2)(void) = &Teacher::hungry;
void (Student::*StudentSlot2)(void) = &Student::treat;
connect(te,teacherSignal2,st,StudentSlot2);
// 信号连接信号
connect(btn,&QPushButton::clicked,te,teacherSignal2);
断开信号disconnect
拓展
1、信号是可以连接信号
2、一个信号可以连接多个槽函数
3、多个信号可以连接同一个糟函数
4、信号和槽函数的参数必须类型一一对应
5、信号和槽的参数个数是不是要一致?信号的参数个数可以多余槽函数的参数个数
connect(信号的发送者,发送的信号signal信号),信号接受者,槽函数SLOT)
优点:参数直观
缺点:编译器不会检测爸数类型:
lambda表达式
[=](){
btn->setText("aaa");
}();
返回值
int ret = []()->int{return 1000;}();
qDebug() << "ret = " << ret;
mutable修饰
QPushButton *myBtn1 = new QPushButton(this);
QPushButton *myBtn2 = new QPushButton(this);
myBtn1->move(100,100);
int m = 10;
connect(myBtn1,&QPushButton::clicked,this,
[m]()mutable {m=100+10;qDebug()<< m;});
connect(myBtn2,&QPushButton::clicked,this,
[=](){qDebug()<<m;});
qDebug() << m;
案例
QPushButton * btnClose = new QPushButton;
btnClose->setText("close");
btnClose->move(100,0);
btnClose->setParent(this);
connect(btnClose,&QPushButton::clicked,this,
[=](){
btnClose->setText("关闭");
emit te->hungry("娃哈哈");
// this->close();
});
标签:VB,CATIA,QPushButton,part2,Set,catia,信号,二次开发,sketch1
From: https://blog.csdn.net/Pireley/article/details/139230928