最近发现 FreeCAD 官方在发布 0.19_pre 时已提供 vs2017 x64的LibPack,现在就再来测试一下。

编译

下载 FreeCADLibs_12.1.2_x64_VC15.7z 官方LibPack之后,解压后可以将vs2017的生成目录与LibPack重合,也可以不重合。不重合的话可以更好地看清楚编译后的 FreeCAD 都会产生哪些文件。

不重合 LibPack,使用cmake生成vs2017工程项目文件,这里边最主要的是二个变量的设定:FREECAD_LIBPACK_DIR要设置到LibPack解压目录,另外需要将 BUILD_QT5 开启,然后就可以了。

运行

启动编译成功的 FreeCAD 有点注意事项 (不重合的情况下):

  • 有可能启用后找不到python的相关文件而启动失败。这个时候建议设置 FC_PYTHONHOME 至 FreeCAD-LibPack 解压后目录的 bin 子文件夹;因为在FreeCAD启动代码里会取 FC_PYTHONHOME 重置 PYTHONHOME 环境变量。
  • 有可能因为找不到 Qt 的platform插件而启动失败。建议向 编译后 FreeCAD_d.exe 所在目录添加 qt.conf 文件,使得Qt知道他的库路径在哪个地方。如果是重合LibPack目录的此项不用设置。

qt.conf 的内容举例如下:

[Paths]
Prefix=E:/sources/FreeCAD/FreeCAD-vs2017-build/../FreeCADLibs_12.1.2_x64_VC15

导入dxf, dwg

导入dxf, dwg类型的文件,是在 Draft 模块之下的 Init.py 里边增加的,dxf 由 importDXF.py 负责,dwg 由 importDWG.py 负责。

其中 importDWG.py 是采用 ODA 的 TeighaFileConverter.exe 来进行中转的,也就是说如果导入dwg,那么它先用 TeighaFileConverter.exe 将dwg转换成为 dxf,然后将dxf格式的文件导入;导出也是如此,先转换成为dxf文件,再由 TeighaFileConverter.exe 将dxf转换成为dwg。

第一次看到这样的转换思路,在缺少稳定可靠的dwg导入导出库时,这样的思路感觉不错。

导入 dxf 格式,在 importDXF.py 内是这样处理,首先从 user.cfg 读取设置,如果 BaseApp/Preferences/Mod/Draft/dxfUseLegacyImporter 的设置为True,则启用 python 语言的库进行导入,这个库没有的话,会从github上下载。然后还有一个配置项,是否每次都去尝试下载最新的。下载的4个文件(dxfLibrary.py, ...) 会放在 Macro 目录或者是 UserAppData。

默认情况第一次启动时,user.cfg 内是没有设置 BaseApp/Preferences/Mod/Draft/dxfUseLegacyImporter 的,则取默认值为False,这时就采用 Import 模块的 readDXF() 来执行dxf文件的导入,这是C++写成的。

dxf文件的格式

dxf格式的描述,网上有一大堆这方面的文章,AutoDesk也有帮助文档阐述了dxf格式。文本形式的比较友好,它总是采用一个组码+相关值的方式,而且组码与相关值都各自占一行。

不同的组码代表不同的类型,比如 0 SECTION 表示段的开始, 0 ENDSEC 表示段结束;然后 0 HEADER表示为HEADER段,图形对象在 ENTITIES 段内。

很多库并不会处理dxf的全部内容,比如 FreeCAD 内带的 dxf.h/dxf.cpp ,就是只读取 ENTITIES 段之下的图元的,其余的信息都丢弃处理。

简述FreeCAD在vs2017下的编译与dxf导入的更多相关文章

  1. FFmpeg在VS2017下的编译

    今天无意中在gayhub发现个牛逼工程,全VS工程编译FFMPEG库,包括依赖库全是VS生成的,无需Mingw等Linux环境. 简单记录下过程,以防将来重装系统等情况,备忘. https://git ...

  2. CAFFE在win10+VS2017下的安装笔记

    老版的caffe在BVLC的github上已经找不到,如果要想下载老版caffe可以下载微软的caffe版本:https://github.com/Microsoft/caffe 网上的大多安装caf ...

  3. win10 x64 VS2017 PJSIP 视频通话编译流程

    win10 x64 VS2017 PJSIP 视频通话编译流程 1. 下载PJSIP源码 PJSIP源码下载地址:https://www.pjsip.org/ 2. 阅读一遍官方的文档 文档地址:ht ...

  4. vs2017+qt5.x编译32位应用<转>

    原文地址:https://www.cnblogs.com/woniu201/p/10862170.html 概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用ms ...

  5. 【Qt开发】vs2017+qt5.x编译32位应用

    概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用msvc2017_x86的插件,然而qt官网并没有提供,只能使用源码编译生成msvc2017_x86插件,使用n ...

  6. 原创 C++应用程序在Windows下的编译、链接:第一部分 概述

    本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...

  7. 【FFmpeg】Windows下FFmpeg编译

    由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类 ...

  8. 介绍linux下利用编译bash设置root账号共用的权限审计设置

    在日常运维工作中,公司不同人员(一般是运维人员)共用root账号登录linux服务器进行维护管理,在不健全的账户权限审计制度下,一旦出现问题,就很难找出源头,甚是麻烦!在此,介绍下利用编译bash使不 ...

  9. Solaris 10下Qt编译Oracle 10g驱动

    上回书讲到<Oracle 10g在Solaris 10中安装详解>,现在开始用Qt来编译下Oracle 10g驱动吧!这样就可以通过Qt程序联入Oracle数据库了! Oracle的环境变 ...

随机推荐

  1. `MediaDevices.getUserMedia` `undefined` 的问题

    通过 MediaDevices.getUserMedia() 获取用户多媒体权限时,需要注意其只工作于以下三种环境: localhost 域 开启了 HTTPS 的域 使用 file:/// 协议打开 ...

  2. WPF应用中对WindowsFormHost内容进行裁剪

    问题1:  WPF中在使用WindowsFormsHost调用WinFrom控件时,若在WindowsFormsHost上层添加了WPF控件,该控件不会显示出来. <Grid> <W ...

  3. WPF之DataTemplateSelector的运用

    本文主要记录WPF中DataTemplateSelector的运用,数据模板选择器主要运用在一些项容器中用于根据不同的数据类型选择不同的DataTemplate,以便展示不同的数据.在此以在listb ...

  4. zipalign的使用

    zipalign 是一个存档对齐工具,可为Android应用程序(.apk)文件提供重要的优化.目的是确保所有未压缩数据以相对于文件开头的特定对齐开始.具体来说,它会导致.apk中的所有未压缩数据(如 ...

  5. 【Kafka】《Kafka权威指南》——提交和偏移量

    KafkaConsumer(消费者)每次调用 poll()方法,它总是返回由生产者写入 Kafka但还没有被消费者读取过的记录, 我们因 此可以追踪到哪些记录是被群组里的哪个消费者读取的.之前已经讨论 ...

  6. Database mirroring connection error 4 'An error occurred while receiving data: '10054(An existing connection was forcibly closed by the remote host.)

    公司一SQL Server镜像发生了故障转移(主备切换),检查SQL Server镜像发生主备切换的原因,在错误日志中发现下面错误: Date        2019/8/31 14:09:17   ...

  7. pytest系列(四)- pytest+allure+jenkins - 持续集成平台生成allure报告

    pytest是什么 pytest是python的一款测试框架,拥有unittest的功能并比它更丰富. allure是什么 有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例 ...

  8. 《Web Development with Go》JWT认证

    时间晚了,先来一版调通的JWT普通认证, 明天再弄一个通过中间件,及gorilla,negroni库的认证, 这样正规些, 但认证通过之后,如何对应权限? 由于jwt-go从2升到3,还有rsa 10 ...

  9. 3.华为路由交换技术_IP子网划分

    IP地址组成 地址包含两部分:网络号+主机号 比如:深圳市(网络号)宝安区坂田华为基地A10(主机号) 约定黄色部分为网络号. D类地址作为组播,E类地址保留使用(用于研究) 路由器只关心IP地址的网 ...

  10. 11. java random类

    一.random类使用 import java.util.Random; public class Demo{ public static void main(){ Random r = new Ra ...