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

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单