CATIA入门操作案例:从玫瑰花到吹风机的详细建模教程
CATIA入门操作案例:从玫瑰花到吹风机的详细建模教程
本文将详细介绍如何使用CATIA软件绘制玫瑰花和吹风机的步骤。通过本文的学习,读者将掌握CATIA的基本建模技巧,包括曲面建模、阵列、倒角等操作。
玫瑰花建模
画中间的花蕾
首先绘制玫瑰花的花蕾部分。这里将花蕾改成了实体。
画花瓣
在零件设计模式下,厚轮廓画曲面实体
使用零件设计模式绘制花瓣的曲面实体。
进行圆周阵列,完整径向
对花瓣进行圆周阵列,使其在径向上完整分布。
对花瓣进行倒角
为花瓣添加倒角,使其看起来更加自然。
再画一层花瓣
画叶子
在新的几何体里面绘制叶子
定义凹槽,反转边
叶子阵列
对叶子进行阵列,使其围绕花杆分布。
画花杆
使用肋条画杆子
使用肋条工具绘制花杆。
将两个零件体进行合并
将绘制好的花瓣、叶子和花杆合并成一个完整的玫瑰花模型。
一支玫瑰花
完成单支玫瑰花的建模。
画一束玫瑰花
先平移一下
将单支玫瑰花平移位置。
复制粘贴一份
复制粘贴玫瑰花模型。
旋转个角度
将复制的玫瑰花旋转一定角度。
进行圆形阵列
对玫瑰花进行圆形阵列,形成一束玫瑰花的效果。
再画一层
增加更多层次的玫瑰花,使模型更加丰富。
最终的成品
完成最终的一束玫瑰花模型。
吹风机建模
吹风机壳体多截面曲面
绘制吹风机的扫掠引导线
绘制多截面的3个扫掠轮廓
绘制多截面曲面
吹风机后壳桥接曲面
吹风机把手多截面曲面
绘制吹风机把手扫掠曲线
绘制把手多截面扫掠截面
定义多截面扫掠曲面
进行曲面的修剪
绘制把手的后盖
进行曲面的结合
绘制内凹的圆曲面
进行倒角
把绘制的所有曲面结合起来
进入零件工作台,定义厚曲面
绘制进气凹槽
异形弹簧建模
新建几何体
草图编辑,画一条样条线
进行扫掠,圆心和半径
画出曲面上的螺旋线
定义直线,选择曲线的角度/法线
在曲线上创建点
支持面选择扫掠面,角度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;
按钮触发
// 用一个按钮调用下课
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();
});