设为首页 加入收藏

TOP

NX二次开发:保存时导出PDF并打开(二)
2023-07-23 13:35:00 】 浏览:88
Tags:时导出 PDF
PDFBuilder::ColorBlackOnWhite);
77 printPDFBuilder1->SetWidths(NXOpen::PrintPDFBuilder::WidthCustomThreeWidths); 78 printPDFBuilder1->SetRasterImages(true); 79 printPDFBuilder1->SetImageResolution(NXOpen::PrintPDFBuilder::ImageResolutionOptionHigh); 80 printPDFBuilder1->SetAddWatermark(true); 81 printPDFBuilder1->SetWatermark(waterRemark.c_str()); 82 printPDFBuilder1->SetAppend(appendStatus); 83 84 std::vector<NXOpen::NXObject *> sheets1(1); 85 NXOpen::Drawings::DrawingSheet *drawingSheet1(dynamic_cast<NXOpen::Drawings::DrawingSheet *>(NXOpen::NXObjectManager::Get(sheetTAG))); 86 sheets1[0] = drawingSheet1; 87 printPDFBuilder1->SourceBuilder()->SetSheets(sheets1); 88 printPDFBuilder1->SetFilename(exportPath); 89 90 NXOpen::NXObject *nXObject1; 91 nXObject1 = printPDFBuilder1->Commit(); 92 printPDFBuilder1->Destroy(); 93 return 0; 94 } 95 catch (const exception& e2){ 96 UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, e2.what()); 97 throw; 98 } 99 } 100 101 int getSheetInfos() 102 { 103 // 获取显示部件及图纸信息 104 int _errCode = 0; 105 tag_t dispTAG = UF_PART_ask_display_part(); 106 char part_fspec[MAX_FSPEC_BUFSIZE] = { 0 }; 107 if (_errCode = UF_PART_ask_part_name(dispTAG, part_fspec) != 0) return _errCode; 108 109 std::string strPartName(part_fspec); 110 transform(strPartName.begin(), strPartName.end(), strPartName.begin(), ::tolower); 111 if (strPartName.find("dwg") == string::npos) return -1; 112 113 int num_draws = 0; 114 tag_t *drawTAGs = nullptr; 115 if (_errCode = UF_DRAW_ask_drawings(&num_draws, &drawTAGs) != 0) 116 return _errCode; 117 118 string export_path = strPartName.substr(0, strPartName.find_last_of(".")); 119 for (int idx = 0; idx < num_draws; idx++){ 120 // 导出PDF 121 UF_DRAW_info_t drawInfos; 122 _errCode = UF_DRAW_ask_drawing_info(drawTAGs[0], &drawInfos); 123 double xDimension = drawInfos.size.custom_size[0]; 124 double yDimension = drawInfos.size.custom_size[1]; 125 _errCode = exportDwg2PDF(xDimension, yDimension, string("huangym1\r\n2023-03-25"), drawTAGs[idx], export_path + ".pdf", false); 126 string tempStr(export_path + ".pdf"); 127 128 // 打开PDF 129 USES_CONVERSION; 130 const WCHAR * cLineChar = A2W(tempStr.c_str()); 131 132 SHELLEXECUTEINFO sei; 133 ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO));//使用前最好清空 134 sei.cbSize = sizeof(SHELLEXECUTEINFO);//管理员权限执行cmd,最基本的使用与 ShellExecute 类似 135 sei.lpFile = cLineChar; 136 sei.nShow = SW_SHOW; 137 sei.lpVerb = _T("open"); 138 BOOL bResult = ShellExecuteEx(&sei); 139 if (bResult)//执行成功 140 { 141 if (sei.hProcess)//指定 SEE_MASK_NOCLOSEPROCESS 并其成功执行,则 hProcess 将会返回执行成功的进程句柄 142 WaitForSingleObject(sei.hProcess, INFINITE);//等待执行完毕 143 } 144 } 145 if (drawTAGs){ 146 UF_free(drawTAGs); 147 drawTAGs = nullptr; 148 } 149 return _errCode; 150 } 151 152 //======================== 153 // 保存操作入口点函数 154 //======================== 155 extern "C" DllExport void ufput() 156 { 157 try{ 158 if (UF_initialize()) return; 159 160 getSheetInfos(); 161 162 UF_terminate(); 163 } 164 catch (const NXException& e1) 165 { 166 UI::Get
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Teamcenter_NX集成开发:通过NXOp.. 下一篇What is static and dynamic libr..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目