简述FreeCAD在vs2017下的编译与dxf导入
最近发现 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导入的更多相关文章
- FFmpeg在VS2017下的编译
今天无意中在gayhub发现个牛逼工程,全VS工程编译FFMPEG库,包括依赖库全是VS生成的,无需Mingw等Linux环境. 简单记录下过程,以防将来重装系统等情况,备忘. https://git ...
- CAFFE在win10+VS2017下的安装笔记
老版的caffe在BVLC的github上已经找不到,如果要想下载老版caffe可以下载微软的caffe版本:https://github.com/Microsoft/caffe 网上的大多安装caf ...
- win10 x64 VS2017 PJSIP 视频通话编译流程
win10 x64 VS2017 PJSIP 视频通话编译流程 1. 下载PJSIP源码 PJSIP源码下载地址:https://www.pjsip.org/ 2. 阅读一遍官方的文档 文档地址:ht ...
- vs2017+qt5.x编译32位应用<转>
原文地址:https://www.cnblogs.com/woniu201/p/10862170.html 概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用ms ...
- 【Qt开发】vs2017+qt5.x编译32位应用
概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用msvc2017_x86的插件,然而qt官网并没有提供,只能使用源码编译生成msvc2017_x86插件,使用n ...
- 原创 C++应用程序在Windows下的编译、链接:第一部分 概述
本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...
- 【FFmpeg】Windows下FFmpeg编译
由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类 ...
- 介绍linux下利用编译bash设置root账号共用的权限审计设置
在日常运维工作中,公司不同人员(一般是运维人员)共用root账号登录linux服务器进行维护管理,在不健全的账户权限审计制度下,一旦出现问题,就很难找出源头,甚是麻烦!在此,介绍下利用编译bash使不 ...
- Solaris 10下Qt编译Oracle 10g驱动
上回书讲到<Oracle 10g在Solaris 10中安装详解>,现在开始用Qt来编译下Oracle 10g驱动吧!这样就可以通过Qt程序联入Oracle数据库了! Oracle的环境变 ...
随机推荐
- 东芝半导体最新ARM开发板——TT_M3HQ开箱评测
前言 最近从面包板社区申请到一块东芝最新ARM Cortex-M3内核的开发板--TT_M3HQ,其实开发板收到好几天了,这几天一直在构思怎么来写这第一篇评测文章,看大家在社区也都发了第一篇评测,我也 ...
- idea自用快捷键(非常实用)
最近看了下idea的快捷键,不禁感慨idea真是太强大了,这里记录一下我常用的快捷键 Ctrl+F:在当前文件中查找 Ctrl+R:替换字符串 Alt + shift + 鼠标点击 多处同时编辑 ...
- 在 ASP.NET Core 中启用跨域请求(CORS)
本文介绍如何在 ASP.NET Core 的应用程序中启用 CORS. 浏览器安全可以防止网页向其他域发送请求,而不是为网页提供服务. 此限制称为相同源策略. 同一源策略可防止恶意站点读取另一个站点中 ...
- C# FlagAttriute 的 小妙招
FlagAttriute ,指示可将枚举视为位域(即一组标志). 官网中文解说:https://docs.microsoft.com/zh-cn/dotnet/api/system.flagsattr ...
- DevExpress Applications<3>
Project Template Project Template Information Template Name Template Description Controls and Compon ...
- Android使用ActivityLifecycleCallbacks管理Activity和区分App前后台
一.ActivityLifecycleCallbacks接口介绍 官方地址:https://developer.android.com/reference/android/app/Applicatio ...
- Ali 访问控制 RAM 用户身份
Ali 访问控制 RAM 用户身份 2018/11/13 Chenxin 参考: https://help.aliyun.com/product/28625.html?spm=a2c4g.111866 ...
- SqlServer性能优化,查看CPU、内存占用大的会话及SQL语句
1,查看CPU占用量最高的会话及SQL语句 select spid,cmd,cpu,physical_io,memusage, (select top 1 [text] from ::fn_get ...
- Linux系统学习 十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问
配置虚拟用户访问 首先至少要关闭userlist 改完配置文件是要重启服务来使它生效 其实在刚装好vsftp的时候的配置文件不用修改的情况下配置虚拟用户访问控制是最好的 local_root选项不影响 ...
- java之Objects类
Objects类概述 在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空 ...