OpenCASCADE入门——7.8.0版本通过源码自编译,生成解决方案,用draw进行简单尝试

本文主要是介绍OpenCASCADE入门——7.8.0版本通过源码自编译,生成解决方案,用draw进行简单尝试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

目录

  • 引出
  • OpenCASCADE源码自编译
    • 首先安装cmake 和 vs
    • 然后安装两个重要的库TCL/TK和FreeType
      • TCL/TK的安装
        • nmake编译【失败的尝试】
        • activestate上下载安装包【失败】
          • 官网论坛查,也失败
        • 编译的再次尝试【应该是64位】
      • FreeType安装
        • 进行编译
    • 用cmake进行编译
    • 最终生成解决方案
    • 设置启动项,运行
  • 总结
  • 其他
    • 自定义信号和槽
      • 1.自定义信号
      • 2.自定义槽
      • 3.建立连接
      • 4.进行触发
    • 自定义信号重载
      • 带参数的
      • 按钮触发
      • 信号触发信号
      • 拓展
    • lambda表达式
      • 返回值
      • mutable修饰
      • 案例

引出

OpenCASCADE入门——7.8.0版本通过源码自编译,生成解决方案,用draw进行简单尝试


OpenCASCADE源码自编译

首先安装cmake 和 vs

Windows下CMake安装教程_window 安装cmake-CSDN博客

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后安装两个重要的库TCL/TK和FreeType

构建 OCCT - Open CASCADE Technology Documentation

开放式 CASCADE 技术:构建 OCCT (opencascade.org)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果没有配置好第三方库就会报错

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

官网文档中说明了要先安装好这两个库

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TCL/TK的安装

https://www.tcl.tk/doc/howto/compile.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

nmake编译【失败的尝试】

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

插曲:处理windows下,‘nmake‘不是内部或外部命令,也不是可运行的程序或批处理文件

然后我装了一个msvc编译环境,但其实不是这样搞的

在这里插入图片描述

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还是报错,说Visual C++compiler environment not initialized.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

期间还重启电脑,安装编译库,均以失败告终

重启了电脑,然后装了一个库

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上的尝试以失败告终

正确的nmake方式是打开如下控制台窗口

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

activestate上下载安装包【失败】

https://www.activestate.com/products/tcl/

需要注册一个账号,才可以下载

[Tcl/Tk 安装 - 哔哩哔哩 (bilibili.com)](https://www.bilibili.com/read/cv22487672/#:~:text=点击绿色的 Download Latest Version 按钮,下载最新版。 注意:默认下载的是x64版,针对64位系统。 如果使用的是32位的win7,则应该下载tcl-8.6.13-installer-1.13.0-x86.msi 下载之后双击安装包就可以安装,安装完毕后,在window开始菜单中会出现:,其中Tcl dommand shell对应Tcl语言解释器 tclsh.exe Tk graphical console对应Tk图形解释器 wish.exe)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

终于TCL,TK安装成功

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是这个后面在vs中编译会报错

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

官网论坛查,也失败

TKDraw 项目无法在 W32 中构建。( 7.5.0 版 ) - 论坛 Open Cascade Technology

即便在官网的论坛中找解决方案还是不行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译的再次尝试【应该是64位】

tcl/tk编译 - ParamousGIS - 博客园 (cnblogs.com)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个有误,应该用64位的那个编译

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

D:\PetFile\myPrograme\theThridPackage\tclBuid

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

nmake -f makefile.vc INSTALLDIR=D:\PetFile\myPrograme\theThridPackage\tclBuid TCLDIR=D:\PetFile\myPrograme\theThridPackage\tcl8.6.14

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上版本出现问题,应该用64位编译

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FreeType安装

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进行编译

进入这个目录,用vs打开,打开后运行一下,获得编译后DLL文件

D:\PetFile\myPrograme\theThridPackage\freetype-2.10.1\builds\windows\vc2010

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面这种错误方式后面会报错

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

中间有问题,后来又重新生成了一下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后在cmake中配置这些第三方的包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面用的是错误的包,失败了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用cmake进行编译

点击configure进行配置的验证

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后点击generate生成

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最终生成解决方案

Windows11+VS2022+OCCT7.6.0安装配置记录_vs2022 occ-CSDN博客

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

设置启动项,运行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


总结

OpenCASCADE入门——7.8.0版本通过源码自编译,生成解决方案,用draw进行简单尝试


其他内容

其他

自定义信号和槽

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);// 重置窗口daxiaothis->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();});

这篇关于OpenCASCADE入门——7.8.0版本通过源码自编译,生成解决方案,用draw进行简单尝试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018742

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很