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在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS