定义文件bcsMessage.txt

PLM

PLM

PLM

#

login

login

测试

#

Active messagebox menu

Active messagebox menu

激活菜单

#

将Menu文件放置与程序同级的text文件夹下

配置ini文件

[BCS]

Path=C:\3

将配置文件放置Proe的工作目录下

代码如下:

C++

  1. // bcsproe.cpp : 定义 DLL 的初始化例程。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "bcsproe.h"
  6. #include "afx.h"
  7.  
  8. #include "ProMenu.h"
  9. #include "ProUtil.h"
  10. #include "ProMenubar.h"
  11. #include "ProPDF.h"
  12.  
  13. static uiCmdAccessState AccessDefault (uiCmdAccessMode);
  14. void login();
  15. void exportpdf();
  16.  
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #endif
  20.  
  21. // CbcsproeApp
  22.  
  23. BEGIN_MESSAGE_MAP(CbcsproeApp, CWinApp)
  24. END_MESSAGE_MAP()
  25.  
  26. // CbcsproeApp 构造
  27.  
  28. CbcsproeApp::CbcsproeApp()
  29. {
  30. // TODO: 在此处添加构造代码,
  31. // 将所有重要的初始化放置在 InitInstance 中
  32. }
  33.  
  34. // 唯一的一个 CbcsproeApp 对象
  35.  
  36. CbcsproeApp theApp;
  37.  
  38. // CbcsproeApp 初始化
  39.  
  40. BOOL CbcsproeApp::InitInstance()
  41. {
  42. CWinApp::InitInstance();
  43.  
  44. return TRUE;
  45. }
  46. extern "C" int user_initialize()
  47. {
  48. ProError status;
  49. ProFileName message_file;
  50. uiCmdCmdId cmd_id1;
  51.  
  52. ProFileName MsgFile;
  53. ProStringToWstring(MsgFile, "bcsMessage.txt");
  54. status=ProMenubarMenuAdd ("PLM", "PLM","Utilities", PRO_B_TRUE, MsgFile);
  55.  
  56. //login
  57. status = ProCmdActionAdd("ShowTest1",(uiCmdCmdActFn)login,uiCmdPrioDefault,AccessDefault,
  58. PRO_B_TRUE,PRO_B_TRUE,&cmd_id1);
  59.  
  60. status = ProMenubarmenuPushbuttonAdd("PLM", "login", "login","Active messagebox menu", NULL,
  61. PRO_B_TRUE, cmd_id1, ProStringToWstring(message_file, "bcsMessage.txt"));
  62.  
  63. return status;
  64. }
  65.  
  66. extern "C" void user_terminate()
  67. {
  68. AFX_MANAGE_STATE(AfxGetStaticModuleState());
  69. }
  70.  
  71. /*================================================================*\
  72. FUNCTION: AccessDefault()
  73. \*================================================================*/
  74. static uiCmdAccessState AccessDefault (uiCmdAccessMode access_mode)
  75. {
  76. return (ACCESS_AVAILABLE);
  77. }
  78.  
  79. void login()/////////消息框
  80. {
  81. exportpdf();return;
  82. }
  83.  
  84. void exportpdf()
  85. {
  86. ProError err;
  87. ProPath current_path;
  88. char c_p[200];
  89. err=ProDirectoryCurrentGet(current_path);
  90. if (err!=PRO_TK_NO_ERROR)
  91. {
  92. AfxMessageBox(_T("未获取到Proe起始目录"));
  93. return;
  94. }
  95. ProWstringToString(c_p,current_path);
  96. CString strcurrent_path = current_path;
  97.  
  98. ////获取配置文件路径
  99. CString FileName =L"\\bcsConfiguration.ini";
  100. LPTSTR lpPath = new TCHAR[MAX_PATH];
  101. LPWSTR Path = new TCHAR[MAX_PATH];
  102. strcurrent_path = strcurrent_path + FileName;
  103.  
  104. //AfxMessageBox(strcurrent_path);
  105. GetPrivateProfileString(L"BCS",L"Path",L"",Path,MAX_PATH,strcurrent_path);
  106. //AfxMessageBox(Path);
  107. if (_tcslen(Path) < 1)
  108. {
  109. AfxMessageBox(L"未找到配置信息!");
  110. return;
  111. }
  112. delete [] lpPath;
  113.  
  114. ProPDFOptions ops;
  115. ProPDFoptionsAlloc(&ops);
  116.  
  117. ProMdl mdl;
  118. //获取文件名
  119. err = ProMdlCurrentGet(&mdl);
  120. if (PRO_TK_NO_ERROR != err)
  121. {
  122. AfxMessageBox(_T("当前没有文件打开"));
  123. return;
  124. }
  125.  
  126. ProMode mode;
  127. err = ProModeCurrentGet(&mode);
  128. if (err != PRO_TK_NO_ERROR)
  129. {
  130. AfxMessageBox(_T("未获取到当前打开文件"));
  131. return;
  132. }
  133.  
  134. if (mode != PRO_MODE_DRAWING)
  135. {
  136. AfxMessageBox(_T("当前只支持DRW文件导出pdf"));
  137. return;
  138. }
  139.  
  140. ProName name;
  141. err = ProMdlNameGet(mdl, name);
  142. CString cstrName = name;
  143. CString outfilepathname = Path;
  144. outfilepathname = outfilepathname +L"\\" + cstrName + L".pdf";
  145. //AfxMessageBox(outfilepathname.GetBuffer(0));
  146.  
  147. //导出pdf
  148. ProPDFExport(mdl,outfilepathname.GetBuffer(0),ops);
  149. ProPDFoptionsFree(ops);
  150. AfxMessageBox(_T("导出完成!"));////弹出一个消息框
  151. }

下面是关于在Proe客户端的配置

定义注册文件

Protk.dat

内容如下:

  1. NAME pt_inst_test
  2. STARTUP DLL
  3. ALLOW_STOP TRUE
  4. DELAY_START FALSE
  5. EXEC_FILE C:/Documents and Settings/Administrator/My Documents/bcsproe.dll
  6. TEXT_DIR C:/Documents and Settings/Administrator/My Documents/text
  7. REVISION 1000
  8. END

若想实现Proe自动注册,则将此文件放置Proe的安装目录的text文件下,例如:C:\Program Files\proeWildfire 5.0\text,具体路径根据自己安装目录指定

注:文件名必须为Protk不能更换

Proe5.0导出PDF至配置文件的相关方法,VC++的更多相关文章

  1. asp.net2.0导出pdf文件完美解决方案【转载】

    asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...

  2. Itext2.0.8 和freemarker导出pdf

    这个是跟上一篇写的freemarker导出word是一块的.但是关联性不是很大.由于本人技术有限本篇导出也是根据网上大家的做出的demo混合而成.有不足的地方请大家指出.好改正,使以后看到的freem ...

  3. .Net导出pdf文件,C#实现pdf导出

    最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码.可以成功的实现导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本, ...

  4. JS导出PDF插件(支持中文、图片使用路径)

    在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题.它的效果可以先到http://pdfmake.org/playgroun ...

  5. ITextSharp导出PDF表格和图片(C#)

    文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...

  6. JAVA导出pdf实例

    一.直接导出成PDF   Java代码 1. import java.io.FileNotFoundException; 2. import java.io.FileOutputStream; 3.  ...

  7. 利用ITextSharp导出PDF文件

    最近项目中需要到处PDF文件,最后上网搜索了一下,发现ITextSharp比较好用,所以做了一个例子: public string ExportPDF() { //ITextSharp Usage / ...

  8. iText导出pdf、word、图片

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  9. Itext导出PDF,word,图片案例

    iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...

随机推荐

  1. windows driver 映射小文件

    NTSTATUS status; UNICODE_STRING strFileSrc = RTL_CONSTANT_STRING(L"\\??\\C:\\网络调试工具.exe"); ...

  2. x++ 与 ++x的区别

    相信在很多编程语言中都会遇见这个问题,这对于刚入编程的人来说可能是相当懵逼了. 老师的官方说法是:操作符在前面先进行自身运算,再进行其他运算:操作符在后面,先进行其他运算再进行自身运算. 反正我这段话 ...

  3. exgcd详解

    注:本文中所有 \(\%\) 号均表示取模, \(gcd(a,b)\) 表示 \(a\) 和 \(b\) 的最大公因数 1.exgcd是什么? exgcd大名扩展欧几里得算法,用来求形如 \(gcd( ...

  4. Python Learning Day8

    bp4解析库 pip3 install beautifulsoup4 # 安装bs4pip3 install lxml # 下载lxml解析器 html_doc = """ ...

  5. No enclosing instance of type test is accessible. Must qualify the allocation with an enclosing inst

    今日遇到一个报错如下: No enclosing instance of type test is accessible. Must qualify the allocation with an en ...

  6. Maven - Eclipse例子

    版权所有,未经授权,禁止转载 章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Ma ...

  7. Maven - 工作原理

    章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Maven – 构建生命周期.阶段 ...

  8. day23(023-递归练习)

    23.01_File类递归练习(统计该文件夹大小) * 需求:1,从键盘接收一个文件夹路径,统计该文件夹大小(字节?) * * 从键盘接收一个文件夹路径 * 1,创建键盘录入对象 * 2,定义一个无限 ...

  9. css3 实现渐变边框

    (1)一个渐变的底边线border:1px solid transparent;border-image: -webkit-linear-gradient(right, #FF9848,#FF2A2B ...

  10. SpringMVC:拦截器

    SpringMVC:拦截器   概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过 ...