文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html
1 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了; 2 在UFUN里面没有直接的函数; 3 思路就是: 4 1、先将工程图转换为cgm 5 2、调用系统的cgm2pdf.exe工具,将上一步转换的cgm再转成PDF格式; 6 以下是我写的一个例子。大家可以拿一个工程图测试以下代码,最后会在C盘生成tkl.cgm与tkl.pdf两个文件。 7 8 9 #include <uf.h> 10 #include <uf_draw.h> 11 #include <uf_cgm.h> 12 #include <windows.h> 13 14 15 16 UF_initialize(); 17 18 tag_t drawing_tag = NULL_TAG; 19 UF_DRAW_ask_current_drawing(&drawing_tag); 20 21 if (drawing_tag != NULL_TAG) 22 { 23 UF_CGM_export_options_t export_options; 24 UF_CGM_ask_default_export_options(&export_options); 25 //UF_CGM_ask_session_export_options(&export_options);//用这个函数也可以初始化 26 export_options.reason = UF_CGM_pdf_reason; 27 UF_CGM_set_session_export_options(&export_options); 28 29 char outFilePath[UF_CFI_MAX_FILE_NAME_BUFSIZE] = "c:\tkl.cgm"; 30 UF_CGM_export_cgm(drawing_tag, &export_options, outFilePath); //导出成CGM文件 31 32 //将CGM转换成PDF 33 char outPdfFilePath[UF_CFI_MAX_FILE_NAME_BUFSIZE] = "c:\tkl.pdf"; 34 NXOpen::NXString nxbasedir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");//获取NX主目录 35 std::ostringstream tempstring; 36 tempstring << nxbasedir.GetLocaleText() << "\NXPLOT\bin\pdf\cgm2pdf.exe " << outFilePath << " " << outPdfFilePath; 37 std::string covertvalule = tempstring.str(); 38 WinExec(covertvalule.c_str(), SW_HIDE); //打开PDF转换器,并转换 39 tempstring.str(""); 40 tempstring.clear(); 41 } 42 43 UF_terminate();