• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            OpenCASCADE Data Exchange - 3D PDF

            Posted on 2016-03-24 23:16 eryar 閱讀(3854) 評論(3)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            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)和PRC(Product Representation Compact)的方式來將三維模型導入PDF中。

            U3D出現的時間較早,在sourceforge上有個u3d的庫:

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

            可用于將三維模型轉換成U3D格式。其中MeshLab就是使用了這個工具,先將三維網格模型轉換成IDTF格式,再調用IDTFConverter程序將其轉換成U3D格式。下載了u3d的源碼看了下,使用還比較復雜,而且軟件授權方式是GPL的。

            PRC是出現的比U3D要晚,所以PRC支持的幾何形狀比U3D要多,包括支持NURBS曲線曲面,還支持復雜的組合體。在網上找了下實現PRC文件讀寫的源碼存在于一款數學軟件Asymptote中,https://sourceforge.net/projects/asymptote

            發現這個庫使用起來相對U3D的要簡單,且支持NURBS曲線曲面。

            三維模型準備好了,需要將這些模型文件嵌入到PDF中。在網上找了下有個開源庫libharu還是很不錯的。

            綜上所述,準備考慮使用PRC->3D PDF的套路來實現將OpenCASCADE中的幾何模型轉換成3D PDF文件。

            wps_clip_image-22938

            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如下圖所示:

            wps_clip_image-20731 

            Download 3D PDF test.pdf


            3.Conclusion

            通過將三維模型轉換成U3D或PRC格式,就可以嵌入PDF中生成3D PDF。因為Adobe Reader的免費使用,所以可以減輕用戶軟件授權費用。若三維軟件系統可以生成3D PDF也是一個功能亮點。

            本文詳細說明了如何將幾何模型嵌入3D PDF中,并給出了代碼示例。OpenCASCADE中的NURBS曲線曲面也可以直接轉換成PRC格式。雖然PRC中也有BREP體,但是正確轉換的前提是需要開發人員對兩者的BREP有清晰的認識,難度較大。一種簡單的處理方法是將模型全部轉換成網格數據,再轉換成PRC。

            4.References

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

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

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

            Feedback

            # re: OpenCASCADE Data Exchange - 3D PDF  回復  更多評論   

            2016-04-11 21:17 by zhaiht
            高手:Opencascade有大量的內存泄露怎么處理

            # re: OpenCASCADE Data Exchange - 3D PDF  回復  更多評論   

            2016-04-11 21:18 by eryar
            @zhaiht
            這要自己debug處理了

            # re: OpenCASCADE Data Exchange - 3D PDF  回復  更多評論   

            2016-04-12 08:51 by zhaiht
            高手好,發現下面這兩句造成很多泄露,但是好像沒辦法消除,如何處理
            IMPLEMENT_STANDARD_HANDLE
            IMPLEMENT_STANDARD_RTTIEXT
            日韩乱码人妻无码中文字幕久久| 久久影院综合精品| 99久久国产综合精品五月天喷水| 精品国产乱码久久久久久浪潮| 久久综合九色欧美综合狠狠| 国产69精品久久久久观看软件| 亚洲国产精品无码久久| 7国产欧美日韩综合天堂中文久久久久 | 精品国产乱码久久久久软件| 亚洲精品国精品久久99热一| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 一本伊大人香蕉久久网手机| 久久国产乱子伦精品免费午夜| 亚洲AV无码久久精品蜜桃| 很黄很污的网站久久mimi色| 亚洲午夜久久久久久久久电影网| 国产精品熟女福利久久AV| 久久人人爽人人爽人人片AV不| 久久嫩草影院免费看夜色| 日本道色综合久久影院| 久久综合国产乱子伦精品免费| 久久噜噜久久久精品66| 久久99精品综合国产首页| 久久综合给合久久狠狠狠97色| 久久午夜免费视频| 性高朝久久久久久久久久| 久久福利片| 久久97久久97精品免视看秋霞| 99久久国产综合精品麻豆| 囯产极品美女高潮无套久久久 | 精品久久久久久国产91| 91视频国产91久久久| A级毛片无码久久精品免费| 亚洲婷婷国产精品电影人久久| 久久久黄片| 一本大道久久东京热无码AV| 日韩精品无码久久一区二区三| 久久久久婷婷| 99精品国产综合久久久久五月天| 久久人人爽人人爽人人片AV东京热 | 人妻无码精品久久亚瑟影视 |