zoukankan      html  css  js  c++  java
  • 简述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 段之下的图元的,其余的信息都丢弃处理。

  • 相关阅读:
    [翻译]WP 平衡球游戏开发教程(一) 初识 XNA Farseer Magic
    Windows Phone7开发必备资源汇总
    WP7的XML操作详解:读取,过滤以及数据绑定
    为listbox的SelectedItem加入翻转动画(附源码)
    [翻译]WP 平衡球游戏开发教程(二) 在XNA 渲染Farseer物理对象
    wp7创建动画闪屏,启动画面所有知识深入详解(附源码)
    [翻译] wp7游戏 源码加分析
    Wp7 list中列表项多样化的解决方案CustomDataTemplateSelector(附源码)
    [翻译]WP 平衡球游戏开发教程(四) 深入了解windowsphone7 游戏底层原理
    [翻译]WP 平衡球游戏开发教程(三) DebugDraw(XNA渲染)
  • 原文地址:https://www.cnblogs.com/bitbybit3d/p/10873802.html
Copyright © 2011-2022 走看看