OpenCASCADE Data Exchange – 3D PDF

OpenCASCADE Data Exchange – 3D PDF

eryar@163.com

Abstract. Today most 3D engineering model data are save to 3D PDF
files. Universal 3D(U3D) along side Product Representation Compact(PRC),
U3D is the historical foundation used to embed 3D interactive data and
models into a PDF file. But PRC is now the preferred and most
feature-rich method to embed 3D data into a PDF file. So the paper is
focus on to translate OpenCASCADE geometry data to 3D PDF by embedding
PRC file.

Key Words. PDF 3D, OpenCASCADE, U3D, PRC, libharu

1.Introduction

到现在更仆难数工程模型会转换到3D PDF格式,那样用户能够利用免费的Adobe
Reader去查看模型,减轻用户软件授权耗费。3D
PDF可用于工程设计、创造、数值造型、历史学、空间、地理及天然气气的研讨,建工和条件调查,也可看作CAM、CAE、PLM的数据交流文件。还可用于作育、商场、存档及工程申报等。

那便是说问题来了,怎么着将三维模型导入PDF文件呢?Adobe提供了放置二种文件格式U3D(Universal
3D)和PLX570C(Product Representation Compact)的方法来将三维模型导入PDF中。

U3D出现的光阴较早,在sourceforge上有个u3d的库:

https://sourceforge.net/projects/u3d/

88bifa必发娱乐,可用以将三维模型转换到U3D格式。其中MeshLab正是应用了那个工具,先将三维网格模型转换到IDTF格式,再调用IDTFConverter程序将其转换来U3D格式。下载了u3d的源码看了下,使用还相比复杂,而且软件授权方式是GPL的。

PSportageC是出新的比U3D要晚,所以P途观C扶助的几何样子比U3D要多,包蕴补助NURBS曲线曲面,还协理复杂的组合体。在网上找了下跌成PPAJEROC文件读写的源码存在于一款数学软件Asymptote中,https://sourceforge.net/projects/asymptote

察觉这么些库使用起来相对U3D的要简明,且匡助NURBS曲线曲面。

三维模型准备好了,须求将那一个模型文件嵌入到PDF中。在网上找了下有个开源库libharu依旧很科学的。

综上所述,准备考虑动用PHighlanderC->3D
PDF的覆辙来落到实处将OpenCASCADE中的几何模型转换来3D PDF文件。

88bifa必发娱乐 1

2.Code Example

构成上述思路,下载相应的库并编译通过,只须要如下简单的代码就能够将模型嵌入PDF中了,代码如下:

/*
*    Copyright (c) 2016 Shing Liu All Rights Reserved.
*
*           File : main.cpp
*         Author : Shing Liu(eryar@163.com)
*           Date : 2016-03-24 21:00
*        Version : OpenCASCADE6.9.0
*
*    Description : test embed 3d model into 3d pdf.
*/

#include "oPrcFile.h"

#include "hpdf.h"

#pragma comment(lib, "libprc.lib")
#pragma comment(lib, "libhpdfd.lib")

void testPrc(void)
{
    prc::oPRCFile aPrcFile("test.prc");

    prc::PRCmaterial materialGreen(
        prc::RGBAColour(0.0,0.18,0.0),
        prc::RGBAColour(0.0,0.878431,0.0),
        prc::RGBAColour(0.0,0.32,0.0),
        prc::RGBAColour(0.0,0.072,0.0),
        1.0,0.1);

    // Sphere
    aPrcFile.begingroup("Sphere");
    aPrcFile.addSphere(1.0, materialGreen);
    aPrcFile.endgroup();

    aPrcFile.addCylinder(0.8, 6.0, materialGreen);

    aPrcFile.finish();

    // embed prc file to pdf.
    HPDF_Doc aPdfDoc = HPDF_New (NULL, NULL);
    if (!aPdfDoc)
    {
        printf("error: cannot create PdfDoc object");
        return;
    }

    HPDF_Rect aRect = {0, 0, 800, 800};
    HPDF_Page aPage = HPDF_AddPage(aPdfDoc);
    HPDF_Page_SetWidth(aPage, aRect.right);
    HPDF_Page_SetHeight(aPage,aRect.top);

    HPDF_U3D aU3D = HPDF_LoadU3DFromFile(aPdfDoc, "test.prc");
    HPDF_Annotation aAnnot = HPDF_Page_Create3DAnnot(aPage, aRect, HPDF_TRUE, HPDF_FALSE, aU3D, NULL);

    HPDF_SaveToFile(aPdfDoc, "test.pdf");

    HPDF_Free(aPdfDoc);
}

int main(int argc, char* argv[])
{
    testPrc();

    return 0;
}

浮动的test.pdf如下图所示:

88bifa必发娱乐 2 

Download 3D PDF
test.pdf

3.Conclusion

透过将三维模型转换到U3D或POdysseyC格式,就足以放手PDF中生成3D PDF。因为Adobe
Reader的免费使用,所以能够减轻用户软件授权开销。若三维软件系统能够变更3D
PDF也是一个作用亮点。

正文详细表明了什么样将几何模型嵌入3D
PDF中,并付诸了代码示例。OpenCASCADE中的NURBS曲线曲面也得以直接转换来P纳瓦拉C格式。尽管P汉兰达C中也有BREP体,可是正确转换的前提是亟需开发人士对两者的BREP有清晰的认识,难度较大。一种简易的处理办法是将模型全体转换来网格数据,再转换到P揽胜极光C。

4.References

1.
http://www.pdf3d.com/understanding-how-pdfe-u3d-and-prc-are-related-to-3d-pdf/

  1. http://www.pdf3d.com/about-prc/

  2. http://www.pdf3d.com/u3d/

相关文章