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

相关文章

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Vuex Actions多参数传递的解决方案

《VuexActions多参数传递的解决方案》在Vuex中,actions的设计默认只支持单个参数传递,这有时会限制我们的使用场景,下面我将详细介绍几种处理多参数传递的解决方案,从基础到高级,... 目录一、对象封装法(推荐)二、参数解构法三、柯里化函数法四、Payload 工厂函数五、TypeScript