一、Macad3D编译。

二、mayo编译。

mayo 是OpenCASCADE的一个衍生项目,其他还有好多项目。

我的目的是读取stp转换成gltf,mayo满足需求

本来,Macad3D也是可以读取stp的,还是C#代码,但是编译出错了。

按照mayo的window教程,准备环境,包括安装QT(Qt5.15在线安装,一文搞定 - 知乎),其中的Fiddler下载地址似乎需要VPN,不过这里应该有相应的下载资料。

1.QT安装完添加PATH,QTDIR=G:\Qt\5.15.2\msvc2019_64

2.opencascade安装完,添加OCCDIR=C:\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0,OpenCASCADE-7.6.0-vc14-64里面也有个qt5.11.2-vc14-64文件夹。

3.打开x64 Native Tools Command Prompt for MSVC

4.运行命令

call "%OCCDIR%\env.bat"
REM Warning: OpenCascade's env.bat overwrites QTDIR environment variable and sets another location
set QTDIR="G:\Qt\5.15.2\msvc2019_64"
set PATH="%QTDIR%\bin;%PATH%"
cd %WORKDIR%
git clone https://github.com/fougue/mayo.git
cd mayo
mkdir build && cd build

env.bat应该是设置opencascade的环境

----

qmake是QT下面的qmake.exe,就是上面的set PATH,不过似乎没有效果,手动设置一下添加G:\Qt\5.15.2\msvc2019_64\bin到Path中。

5.1 输入

qmake ..\mayo.pro
nmake all

nmake all提示找不到opencascade的hxx文件。

5.2 删除build下的所有文件,输入

qmake -t vcapp ..\mayo.pro

6.用Visual Studio 2022打开mayo.vcxproj

编译mayo项目,还是找不到hxx文件。

设置附加包含目录,

再编译

设置附加库目录

再编译

卡住了

-----------------------

后来多次操作发现,qmake操作不是独立的,必须是和前面的env.bat等操作后执行才行,那样的话创建的vs项目就能设置好正确的目录。

因为set path后会导致qmake找不到,我就重新打开了一个窗口,导致env.bat的执行就没有效果了。应该是这些指令。

call "%OCCDIR%\env.bat"
cd %WORKDIR%
git clone https://github.com/fougue/mayo.git
cd mayo
mkdir build && cd build
qmake -t vcapp ..\mayo.pro

编译,结果:

修改几个QT相关的目录的设置

附加包含目录

编译,可以生成mayo.exe了。

运行又出错了。

将C:\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\win64\vc14\bin的所有dll拷贝到debug目录下,运行,提示找不到tbbmalloc.dll,FreeImage.dll,freetype.dll,avcodec-57.dll。

tbbmalloc.dll:C:\OpenCASCADE-7.6.0-vc14-64\tbb_2017.0.100\bin\intel64\vc14 下的所有dll。

FreeImage.dll:C:\OpenCASCADE-7.6.0-vc14-64\freeimage-3.17.0-vc14-64\bin

freetype.dll:C:\OpenCASCADE-7.6.0-vc14-64\freetype-2.5.5-vc14-64\bin

avcodec-57.dll:C:\OpenCASCADE-7.6.0-vc14-64\ffmpeg-3.3.4-64\bin

这些dll都放到debug后,运行mayo.exe,提示

无法定位程序输入点VR_InitInternal2于动态链接库TKService.dll上。

搜索

“其原因可能有两个,一个是找不到依赖的某些dll,另一个是有些依赖库存在版本冲突。在我这里是由于Qt的版本冲突造成的。因为之前用的是qt5.9.9,而现在使用的是qt5.14.0。解决办法就是,检查一下环境变量里面的依赖库dll路径,看是否混用了,或者看一下使用的dll版本是否正确。”

大概是版本冲突了吧。

之前启动了opencascade-7.6.0下的msvc.bat打开visual studio,编译了一遍opencascade,新生成的dll和lib是放在bind和libd文件夹里面的。dll大小是不一样的。

我在想,会不会因为启动时的那个升级到143导致的, 原本是142的。

将C:\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\win64\vc14\bind下的dll拷贝到debug,运行mayo.exe,可以正常运行了。

运行的结果,小的模型文件(stp)可以和别人编译好的mayo.0.6版本的安装程序的结果一样。大文件也能加载,不过似乎慢很多了。

打包一个release版本测试看看。

=========================

本来打算打包一个release版本测试的,结果切换到release,修改相关路径,编译生成,成功了。拷贝dll,运行,出错了。

然后debug版本里面的mayo.exe也不能运行了,闪退。

安装版本的也是闪退,界面一出来就退出了。

编译release的过程中,测试mayo.exe c:\\1.stp --export outfile.gltf,这时mayo就已经没有响应了。是这个的关系?

visual studio中显示的异常

打开另一个版本的mayo.exe(0.4),则可以。

代码中有

fromVariant添加一个try..catch

可以打开了,打开后,安装版本的也能打开了,说明公用了一个lastOpenFolder参数。

这次打包后的exe可以转换了。

看来是,有参数的话作为工具,没有参数的话打开UI。

OpenCASCADE使用(Stp to Gltf)相关推荐

  1. Opencascade 导入.stp、.stl、.igs、.brep文件

    Opencascade 导入.stp..stl..igs..brep文件 *使用Opencascade实现对stp.stl.igs.brep文件的读取到TopoDS_Shape结构中 *本文不再赘述在 ...

  2. 初探OSG+Opencascade在qt上的实践值获取模型颜色并在OSG中显示

    很久没有正式写过一篇博客,之前因为工作原因,致使个人项目一直停滞,在出差回来后,决定利用晚上的空闲时间重新对之前的知识进行梳理和补充,前版本中实现了如何利用opencascade读取stp模型,并显示 ...

  3. 基于opencascade的3D文件查看器Mayo开源工程使用QT编译配置

    Mayo 是GitHub上一个基于opencascade的3D模型文件viewer开源项目,工程基于QT+opencascade,笔者出于对其界面的侧边栏感兴趣就尝试编译起来,就在这分享一下我的笔记. ...

  4. ​stp文件转gltf

    什么是一 .stp 文件?        STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件.它包含有关 3D 对象的信息,并以类似于STEP文件格式的方式保存. ...

  5. STEP、IGES、STL各类3D模型转换为适用Web的glb,gltf格式并压缩

    STEP.IGES.STL各类3D模型转换为适用Web的glb,gltf格式并压缩 格式介绍 STEP和IGES格式 STL格式 GLTF格式 输出GLTF格式的思路 环境安装 实现转换(方法1) p ...

  6. windows下搭建stpiges转换成gltf格式环境

    前言 传统建模领域,有各种各样的格式文件,相对于three.js来说不一定友好,后者推荐的是gltf格式文件,笔者人为即json+obj资源文件的格式,优点是更小,层次更分明,所以在这个需求基础上,一 ...

  7. 广播风暴及STP生成树协议

    广播风暴: 广播风暴指的是交换机在发送数据时因为环路问题而向网络中发送了过多的广播信息. 为了解决这个问题,就出现了STP生成树协议. STP生成树协议: STP通过阻塞端口来消除环路,并实现链路备份 ...

  8. gltf与glb格式转换 gltf-pipeline、binary-gltf-utils

    gltf与glb格式转换 1. [gltf-pipeline](https://github.com/seminar2012/gltf-pipeline) 2. [binary-gltf-utils] ...

  9. 基于OpenCasCade的程序发布问题

    基于OpenCasCade二次开发了一个程序,想采用简单的copy的发布(部署)方式. 但在发布时遇到了很多问题.总结一下. 首先将所有所需的dll拷贝到了执行目录下,然后将程序copy到一台未安装O ...

最新文章

  1. 清华学长手把手带你做UI自动化测试
  2. 一部手机失窃而揭露的黑色产业链
  3. 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍...
  4. 全1的向量与行向量或列向量相乘,实质上是作行复制或列复制!
  5. Christmas Present
  6. 手机网站开发必修课[1]:手机浏览器 本文来自:http://www.fool2fish.cn/?p=290
  7. C++ 高级数据类型(四)—— 动态内存分配
  8. apache禁止多目录运行php文件下载,Nginx Apache下如何禁止指定目录运行PHP脚本
  9. ios html字符转义字符串,iOS HTML特殊字符转译
  10. VGA接口一根针折了
  11. flume获取mysql日志到hdfs_flume采集方案nginx日志到hdfs上
  12. 10天学会c语言与单片机第6讲,10天学会单片机c语言视频
  13. 《App后台开发运维和架构实践》勘误
  14. 第一章 由内而外全面造就自己
  15. 统计地铁一号线站点Python
  16. 海明码检错与纠错,经典例子讲解~
  17. 涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
  18. 科研必备的9款科研神器
  19. 用无穷级数计算cos值
  20. 日本地图选择插件、日本地区选择插件

热门文章

  1. NPM酷库:accounting,格式化数字和货币
  2. 学习C#必备的编程软件——pow_na的博客
  3. YARN的机架感知功能
  4. 加密 UNIX 口令
  5. 全球及中国电子测试仪器行业规模现状与运营前景调研报告2022-2027年
  6. Edgio WAF规则——在混乱中创造秩序(下篇)
  7. 面向对象编程Object-Oriented Programming(oop)
  8. php相机图片的长宽比例,单反相机的 长宽比 创意滤镜 如何使用 什么意思 怎么理解这些内容...
  9. Windows系统下 onedrive 网页进不去
  10. 【计算机视觉】基本的图像操作和处理