CATIA进阶操作——创成式曲面设计入门(1)线架设计,三维点、直线、平面、曲线

目录

引出

CATIA进阶操作------创成式曲面设计入门(1)线架设计,三维点、直线、平面、曲线


三维空间点生成


三维直线


三维平面


三维曲线







总结

CATIA进阶操作------创成式曲面设计入门(1)线架设计,三维点、直线、平面、曲线


其他内容

异形弹簧

新建几何体

草图编辑,画一条样条线

进行扫掠,圆心和半径

画出曲面上的螺旋线

定义直线,选择曲线的角度/法线

在曲线上创建点

支持面选择扫掠面,角度7度,终点设置大一点,选中支持面上的几何图形

再次选择扫掠,圆心和半径

双击修改,调整一下样条曲线

其他

自定义信号和槽

1.自定义信号

写到signals下

返回void

需要声明,不需要实现

可以有参数,可以重戟

2.自定义槽

返回void

需要声明,也需要实现

可以有参数,可以重载

写到public slot下或者public或者全局函数

3.建立连接

java 复制代码
// 老师饿了,学生请吃饭
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

带参数的

java 复制代码
    void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;
    void (Student::*StudentSlot)(QString) = &Student::treat;
java 复制代码
void Student::treat(QString foodName){
    // QString -> char * 先转成QByteArray(.toUtf8())  再转成Char* ()
    qDebug() << "请老师吃。。。" << foodName.toUtf8().data();
}

按钮触发

java 复制代码
    // 用一个按钮调用下课
    QPushButton *btn = new QPushButton("下课了",this);

    // 重置窗口daxiao
    this->resize(600,400);

    connect(btn,&QPushButton::clicked,this,&Widget::classIsOver);

信号触发信号

java 复制代码
    // 无参的信号和槽连接
    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表达式

java 复制代码
    [=](){
        btn->setText("aaa");
    }();

返回值

java 复制代码
    int ret = []()->int{return 1000;}();
    qDebug() << "ret = " << ret;

mutable修饰

java 复制代码
    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;

案例

java 复制代码
    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();
    });
相关推荐
—Miss. Z—1 分钟前
计算机二级MySQL选择题考点Ⅱ
数据库·mysql·oracle
敖行客 Allthinker1 分钟前
IM 融合专题:后端架构师的核心修炼
java·开发语言·数据库
翔云12345611 分钟前
MySQL 中 CURRENT_TIMESTAMP 到底取的是 INSERT 时间,还是 COMMIT 时间?
数据库·mysql
HAPPY酷11 分钟前
【ROS2】16G 内存笔记本跑 ROS2 仿真?VMware 虚拟机“保姆级”配置指南 (R9 7940HX + RTX 4060)
java·linux·ide·windows·pycharm
矜持的左手18 分钟前
硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复
数据库·oracle
欢呼的太阳8 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
折哥的程序人生 · 物流技术专研9 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
researcher-Jiang9 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
喜欢的名字被抢了10 小时前
MySQL基础入门:从零理解数据库与SQL
数据库·mysql·教程
Elastic 中国社区官方博客11 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎