QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
5天前
查看: 2275|回复: 0
收起左侧

[分享] 【实例教程】中望3D PDF输出控件制作

[复制链接]
发表于 2017-7-26 10:40:32 | 显示全部楼层 |阅读模式 来自: 中国广东广州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Abby001 于 2017-7-27 10:18 编辑
+ q2 [( w. y* |! K8 z
6 {7 i4 E' e8 G9 P% L       1.引言
4 ?6 g; ]! R& G6 Y       使用三维CAD软件的工程师都知道,要将三维模型保存成3D PDF格式,需要通过另存为,选择PDF格式才可以。如果一个装配中有多个零件需要存成3D PDF格式,操作就比较繁琐。在这种情况下,可利用中望3D的API函数,根据客户的特殊用途进行软件的个性化定制和二次开发,从而大大提高工作的效率,深度满足企业的要求。
% u8 h$ G: {+ ^1 Q" U       2.二次开发准备: U% j# _* k/ r) B* x
       2.1系统需求:
+ j$ p* c5 u  a  G5 u  I       1)Windows7 或以上系统;* k- |9 k5 [2 S4 v9 v. s* E' ~
       2)Visual Studio 2012(或者任意能够创建C/C++的IDE工具);
/ v+ J5 ^! Y. G4 \2 H       3)中望3D 2012或以上版本软件(本文使用中望3D 2017);$ N; i% J4 u  h9 }6 N. n: O
       3.创建二次开发程序& e7 T2 ~: l' p- k# |( _# r+ g
       3.1 打开Visual Studio 2012,选择新建项目,选择Win32控制台应用程序,然后在名称中输入FileExport,选择程序生成位置,完成后选择确定。7 M9 q; i  V4 p! p1 J3 q4 I
image002.jpg
图3-1
       3.2选择下一步。7 J* P0 u1 s2 u' t- P
image003.jpg
图3-2
       3.3 选择应用程序类型为DLL,选择附加选项为空项目,然后点击完成。4 k. q! c0 i8 @$ V5 H( ~  y2 T. F! E
image004.jpg
图3-3
       3.4 右键FileExport项目,选择添加,选择新建项,或者使用快捷键Ctrl+Shift+A,分别创建FileExport.cpp源文件和FileExport.def文件。
5 `; T( C( v9 }: t4 [- l
image005.jpg
图3-4
image006.jpg
图3-5
image007.jpg
图3-6
       3.5 右键FileExport项目,选择属性,进入FileExport属性页。(注意:如果是64位系统,平台必须选择X64!)选择C++,选择常规,选择附件包含目录,在该目录中输入安装目录下API文件夹的地址,如图3-7所示。
1 T# r+ m! k9 S- l: ~* Y4 \
image008.jpg
图3-7
       3.6在FileExport属性页中,选择链接器,选择常规,在附加库目录中输入中望3D安装目录地址,(注意:如果是64位系统,平台必须选择X64!)如图3-8所示。
  ]. k( c$ C. z" `* g4 {
image009.jpg
图3-8
       3.7 在FileExport属性页中,选择链接器,选择输入,在附加依赖项中输入zw3d.lib,(注意:如果是64位系统,平台必须选择X64!)如图3-9所示。' F" ~, y1 p9 q; @0 k$ M- N
image010.jpg
图3-9
       3.8输入以下代码,定义项目中的FileExport.cpp文件。5 A+ l# Z7 x% B
       #include<stdio.h>
# R4 }# d: j0 i* F( K2 Q       #include<string.h>7 J9 j6 U4 c9 r' O! q
       #include"VxApi.h"
- n+ a) ^, ?, q) R# b( B       intFileExportPdf(void);
8 v5 L/ `6 x: b3 R- ~& @       intFileExportInit(intformat, void *data)
! y/ ]. M4 U) W       {
% t4 [2 {3 h' A' Y3 O       cvxCmdFunc("FileExportPdf", (void*)FileExportPdf, VX_CODE_GENERAL);' i* @+ f- \: [
       return 0;" }" g) \4 V; f' q7 P
       }. l4 w' ]9 V' R) b0 b6 ^8 k
       intFileExportExit(void)1 d- _7 S9 w! [7 E1 N8 v' M
       {: r! g% {1 M1 @( ^
       cvxCmdFuncUnload("FileExportImg");
2 j5 U# [+ V$ D# U& x! r& j* m       cvxCmdFuncUnload("FileExportPdf");
: S% l0 }5 Y) t       return 0;! H/ k. x$ t7 a/ T, q
       }
! \$ ?5 L2 s+ o% y( \" \       intFileExportPdf(void)# c5 \) P8 u8 e% C6 t
       {
' a: {8 @$ |" R, K, f       intiRet = 0;
+ ]: m) Y9 y& z0 j& s       vxNameExportName;  H, U5 G- f8 x9 Z" l
       vxPathFilePath;  I! D/ T) {3 ]& ]+ C# A
       svxPdfDataPdfData;# F+ K% [4 h* p; J) w7 o
       cvxFileDirectory(FilePath);
" t/ L2 t& h9 k) U       iRet = strcpy_s(ExportName, "test.pdf");
, d4 X0 C: i6 f3 f2 O8 P: c       if (FilePath[0]): A% Z9 Z: M$ Z8 x
       iRet = cvxPathCompose(FilePath, ExportName);
0 c$ v1 }7 I3 S' s       else' o3 m3 r. F) u- X( F
       iRet = strcpy_s(FilePath, "test.pdf");% i. d# _- V% [. a: V4 X# k. k
       if (iRet)5 a& u% z7 A' N# K% i
           {
+ O) W5 F8 w$ X+ j# p# \, Y       cvxMsgDisp("Fail to find the export path.");8 Q# V- X% k$ `* ^; V
       returniRet;       3 }! ?2 z0 T, |2 H# Z  }% t3 ~
           }# j& I" ]+ u( I* e, F
       cvxMemZero((void*)&PdfData, sizeof(PdfData));; [/ j! _0 c: G4 {
       PdfData.PaperHeight = 300;
! g5 v1 N$ t/ _7 T       PdfData.PaperWidth = 220;7 [. E& a* ?1 D
       PdfData.RangeMode = VX_EXPORT_PDF_RANGE_MODE_NORMAL;* Z$ Y2 m' J" z3 |" b
       PdfData.Type = VX_EXPORT_PDF_TYPE_OBJECT;
" ~! O4 P' N/ f9 Z4 b5 I+ W5 {       iRet = cvxFileExport(VX_EXPORT_TYPE_PDF, FilePath, (void*)&PdfData);
, V  q; J, [) B6 ]8 j1 l       if (iRet)
# k9 z/ ~# S& e7 |4 x5 D       cvxMsgDisp("Fail to save as pdf format.");+ H' |  o5 f" @
       else
8 U& i; s1 P5 c4 U( ?9 [       cvxMsgDisp("File is saved successfully.");
1 ^" n6 {- l0 R8 ]       returniRet;
) D$ p" t9 F$ ?% d2 t7 M       };
+ G( m! W& C' C7 |
image011.jpg
图3-10
       3.9 输入以下代码,定义项目中的FileExport.def文件。
! i, `7 I9 T' B7 ^       LIBRARY        FileExport.dll
) V* z% H9 y1 l3 _* M5 M       EXPORTS' O+ {& a+ J9 @; ?
               FileExportInit7 c2 t$ q) i/ [4 L0 i, I- L3 N
               FileExportExit
' L0 j- v2 r+ r9 Q, C+ a1 \) S/ l               FileExportImg
5 O2 B6 M9 [) j1 d       FileExportPdf
: P1 K+ \& T* b* n6 K9 d
image012.jpg
图3-11
       3.11 右键FileExport项目选择生成,在该项目目录中Debug文件夹下会产生FileExport.dll应用程序文件。! m9 n  Z- D( e; A7 z6 t
image013.jpg
图3-12
       3.12 在中望3D安装目录下,新建文件夹apilibs文件夹,将FileExport.dll文件复制到该文件夹中,即在中望3D中加载该应用程序。4 x. a& |* a. Z/ o: B* G
image014.jpg
图3-13
       3.13 打开中望3D,选择应用程序管理器,选择插件应用程序。我们可以看到,FileExport程序已经加载到了中望3D。
% Y) h1 ?1 l: n- G" T
image015.jpg
图3-14
       3.14 下面我们来使用一下这个程序,在中望3D中新建一个块零件并保存到桌面,然后在命令框中输入~符号,然后通过方向键选中FileExportPdf应用程序,然后回车输入该程序,在桌面我们得到了这个零件的3D PDF文件。
  B$ o6 Z3 I- d6 s* {
   image016.jpg
image017.jpg
图3-15
       4.定制二次开发工具栏/ h/ e3 V! m" v8 d) L2 i, o
       每次要在输入框中手动输入~FileExportPdf命令太麻烦,下面,我们来介绍一下如何将二次开发程序添加到工具栏或指定位置。
2 W' a$ L: Q2 g8 X$ M       4.1 在中望3D零件环境下,选择工具,选择自定义,进入自定义界面。, `# v; e9 J5 c7 w4 u
image018.jpg
图4-1
       4.2 在自定义命令界面中,点击添加命令按钮,按图4-2依次输入按钮名称、PNG图标等属性。  \% D8 P  p0 t7 ~& e3 H, R" w
image019.jpg
图4-2
       4.3 在自定义转换界面中,先找到4.2中创建的FileExport命令。然后,用鼠标将该命令拖动到图4-3所示位置,或者拖动到您所指定的位置,选择应用。9 H7 p+ y. Y- y0 ?% P
image020.jpg
图4-3
       5.命令使用测试
/ U0 Z# s2 q* X. F3 h, ~       这样我们就在中望3D实用工具栏中添加了FileExport这个命令按钮,接下来,我们就可以直接在造型选项栏中使用该命令了,在测试零件所在位置就可以得到一个3D PDF,如图5-1所示。
1 i. v5 {' X. K
image021.jpg
image022.jpg   
图5-1
       总结:
# J* p: `) S( S       本教程给大家简单介绍了中望3D二次开发的流程,思路是在Visual Studio中创建dll程序,再将该程序加载到中望3D中。通过二次开发,我们将原本需要点四步的操作,简化到只需要一步,大大提高了工作效率,当然,在此教程的基础上,我们还可以进一步开发,将输出PDF的操作批量化,附件是本教程的所有程序,大家一起动手,开启您的中望3D私人定制之旅吧!6 b" f- n1 g" B$ \# S
       马上下载中望3D2017版,体验智能设计,让创意无极限:http://www.zw3d.com.cn/product-58-1.html
% I& W3 C" p2 a! F1 I3 r* u1 x       Z3是什么格式文件:http://www.zw3d.com.cn/blog/201503131763.html6 H* b+ y& n) D4 c9 l4 b1 W
         image023.jpg
5 O9 s9 b( m1 }( Q8 a8 v$ G2 }% }* y
8 t. h7 N9 M8 t$ c! u; {
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表