QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 版主微信号:caivin811031;还未入三维微信群的小伙伴,速度加
2022-07-04
全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
查看: 1842|回复: 0
收起左侧

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

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

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

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

x
本帖最后由 Abby001 于 2017-7-27 10:18 编辑
! ^" g% O) n, w2 |. b" Y
3 X9 s3 t- g' _) a       1.引言2 e# X3 `* V+ E& x; H* B4 r
       使用三维CAD软件的工程师都知道,要将三维模型保存成3D PDF格式,需要通过另存为,选择PDF格式才可以。如果一个装配中有多个零件需要存成3D PDF格式,操作就比较繁琐。在这种情况下,可利用中望3D的API函数,根据客户的特殊用途进行软件的个性化定制和二次开发,从而大大提高工作的效率,深度满足企业的要求。3 u$ c  Y% {2 G5 E) T2 }6 P; p
       2.二次开发准备- H, b8 e6 R- t. s: T3 U; _
       2.1系统需求:& |5 m% o5 [. H
       1)Windows7 或以上系统;9 k, ~5 f# s1 c0 e; J) L
       2)Visual Studio 2012(或者任意能够创建C/C++的IDE工具);
4 ~# k! X+ G7 _3 `5 [, D       3)中望3D 2012或以上版本软件(本文使用中望3D 2017);
- D' r# N" S2 \       3.创建二次开发程序4 L4 g5 o4 O7 o9 S2 v7 Y/ F
       3.1 打开Visual Studio 2012,选择新建项目,选择Win32控制台应用程序,然后在名称中输入FileExport,选择程序生成位置,完成后选择确定。6 q) ?7 B2 i6 o0 a# @
image002.jpg
图3-1
       3.2选择下一步。
) b& W' q: d' a! r, w: ?& k' {7 @
image003.jpg
图3-2
       3.3 选择应用程序类型为DLL,选择附加选项为空项目,然后点击完成。
3 D  L, g" k6 J  W, z
image004.jpg
图3-3
       3.4 右键FileExport项目,选择添加,选择新建项,或者使用快捷键Ctrl+Shift+A,分别创建FileExport.cpp源文件和FileExport.def文件。
2 z* |2 _; a6 @7 F, X
image005.jpg
图3-4
image006.jpg
图3-5
image007.jpg
图3-6
       3.5 右键FileExport项目,选择属性,进入FileExport属性页。(注意:如果是64位系统,平台必须选择X64!)选择C++,选择常规,选择附件包含目录,在该目录中输入安装目录下API文件夹的地址,如图3-7所示。0 e% t  l  j/ Z9 f. e+ p+ J1 W# a
image008.jpg
图3-7
       3.6在FileExport属性页中,选择链接器,选择常规,在附加库目录中输入中望3D安装目录地址,(注意:如果是64位系统,平台必须选择X64!)如图3-8所示。+ r( U5 o" k9 m% s
image009.jpg
图3-8
       3.7 在FileExport属性页中,选择链接器,选择输入,在附加依赖项中输入zw3d.lib,(注意:如果是64位系统,平台必须选择X64!)如图3-9所示。' M( _" R! h7 g- i  M7 Y. G* D
image010.jpg
图3-9
       3.8输入以下代码,定义项目中的FileExport.cpp文件。
, l: O# s7 |8 Q) ?* Z2 J( S       #include<stdio.h>: K$ Z8 [: g/ u/ F/ s7 i
       #include<string.h>
/ j' r, d+ V+ o) \9 \       #include"VxApi.h"
) W( q- n" ?( V+ s& z- z       intFileExportPdf(void);1 |1 l# U) h/ }: l
       intFileExportInit(intformat, void *data)! ?3 Z! t& y; M4 O
       {: ^2 h5 O, t& w3 E) g. u/ f2 f
       cvxCmdFunc("FileExportPdf", (void*)FileExportPdf, VX_CODE_GENERAL);
0 s/ G9 [" I" q! D; u       return 0;- Q; L# I& _* t8 W6 ~: ?( J: K% W
       }
1 J; \& `5 }/ ?0 q" l3 v6 R       intFileExportExit(void)
9 r6 `" g! F+ M5 X: \4 G       {
  m' C7 g. z; z6 L7 F2 X       cvxCmdFuncUnload("FileExportImg");1 Z  p# S- ?; w, O! [& P
       cvxCmdFuncUnload("FileExportPdf");/ J, G, V0 Y0 M  \2 `* S$ W
       return 0;* _/ I; d& [7 y2 c3 I' W5 M' q
       }
# j/ f. n% p1 J       intFileExportPdf(void)
6 Y4 c% l; s  t' O9 s       {
) X5 {6 q* J! S       intiRet = 0;
) B* {' g4 |% ?4 R       vxNameExportName;! M4 ~! v0 u/ S1 w( {  K  m! x
       vxPathFilePath;
/ }* E: S8 Y9 c& o* L       svxPdfDataPdfData;
1 \3 G7 t, x: x0 t0 w) l       cvxFileDirectory(FilePath);
+ {& I3 C: z  u       iRet = strcpy_s(ExportName, "test.pdf");
0 ?5 ~. S. Y6 J5 O# A! d       if (FilePath[0])
- f% `% o/ ^1 Q3 \0 V4 x1 W; ?       iRet = cvxPathCompose(FilePath, ExportName);5 [, e# N9 H# e7 ~
       else
( k: s9 w. d, ]( r6 T       iRet = strcpy_s(FilePath, "test.pdf");
) b$ i5 w1 F. B# G       if (iRet)
+ ?' ~2 L( x0 B/ h* Z* _5 m           {/ ^3 B5 ]: o5 ~" o' B
       cvxMsgDisp("Fail to find the export path.");, Y4 n6 v! Y+ W) r1 s  r) q- Y  i
       returniRet;      
' Q) r  {7 {' _           }; I/ m9 [: s( f0 U6 R. [$ ~
       cvxMemZero((void*)&PdfData, sizeof(PdfData));# ?  A- g! s3 ~) y: Q6 K8 {
       PdfData.PaperHeight = 300;- Y/ L+ K4 Q% z
       PdfData.PaperWidth = 220;3 U, g" x/ l7 h
       PdfData.RangeMode = VX_EXPORT_PDF_RANGE_MODE_NORMAL;
! e& E' I# f) M2 L       PdfData.Type = VX_EXPORT_PDF_TYPE_OBJECT;
- h( N1 ]( @" T& [- |% j: Z       iRet = cvxFileExport(VX_EXPORT_TYPE_PDF, FilePath, (void*)&PdfData);
! J/ I, q* w! }2 x% y       if (iRet)
6 X3 T* t7 z2 _$ O7 C       cvxMsgDisp("Fail to save as pdf format.");4 r1 x2 j8 D+ ^6 j
       else
" w. ]. L" s: P3 d8 ^       cvxMsgDisp("File is saved successfully.");
; @7 u7 R* `+ l/ Q: N8 y. j       returniRet;6 H( O7 C/ `- U! h
       };6 z8 Y- w5 p4 ]8 w6 R
image011.jpg
图3-10
       3.9 输入以下代码,定义项目中的FileExport.def文件。
9 O! p) w; }* U/ I- r+ b* N' z       LIBRARY        FileExport.dll
# ]6 X- h1 K3 z+ M& o9 w       EXPORTS
0 j5 q3 |* K% `/ U, Q0 d( E               FileExportInit
7 @* M1 G2 ]+ d               FileExportExit0 o& b3 |  {( K6 ~
               FileExportImg9 o" t1 t' I6 q7 ]
       FileExportPdf! v6 z" t, c- Y  ~
image012.jpg
图3-11
       3.11 右键FileExport项目选择生成,在该项目目录中Debug文件夹下会产生FileExport.dll应用程序文件。$ {  K- A$ {: f8 w! ^: |
image013.jpg
图3-12
       3.12 在中望3D安装目录下,新建文件夹apilibs文件夹,将FileExport.dll文件复制到该文件夹中,即在中望3D中加载该应用程序。
: U5 {/ N; C& t9 u
image014.jpg
图3-13
       3.13 打开中望3D,选择应用程序管理器,选择插件应用程序。我们可以看到,FileExport程序已经加载到了中望3D。5 J0 f; r7 E- @3 j" G+ w+ p
image015.jpg
图3-14
       3.14 下面我们来使用一下这个程序,在中望3D中新建一个块零件并保存到桌面,然后在命令框中输入~符号,然后通过方向键选中FileExportPdf应用程序,然后回车输入该程序,在桌面我们得到了这个零件的3D PDF文件。
' _7 g  ^6 C! _
   image016.jpg
image017.jpg
图3-15
       4.定制二次开发工具栏) Z% B+ c7 e  q
       每次要在输入框中手动输入~FileExportPdf命令太麻烦,下面,我们来介绍一下如何将二次开发程序添加到工具栏或指定位置。6 n% O: K4 r9 K2 C- G" _. i
       4.1 在中望3D零件环境下,选择工具,选择自定义,进入自定义界面。
: T8 g" E9 F; B, N/ Y
image018.jpg
图4-1
       4.2 在自定义命令界面中,点击添加命令按钮,按图4-2依次输入按钮名称、PNG图标等属性。
# ]! ~; e0 u+ \3 ]4 N
image019.jpg
图4-2
       4.3 在自定义转换界面中,先找到4.2中创建的FileExport命令。然后,用鼠标将该命令拖动到图4-3所示位置,或者拖动到您所指定的位置,选择应用。
  Z5 l* c. R# h% R8 A* C: d
image020.jpg
图4-3
       5.命令使用测试
$ y' h- P& G5 E2 u/ T* q3 I4 c       这样我们就在中望3D实用工具栏中添加了FileExport这个命令按钮,接下来,我们就可以直接在造型选项栏中使用该命令了,在测试零件所在位置就可以得到一个3D PDF,如图5-1所示。
( _4 E% n+ P9 q( K- D; Q
image021.jpg
image022.jpg   
图5-1
       总结:# e; H$ o% s- a6 x8 T
       本教程给大家简单介绍了中望3D二次开发的流程,思路是在Visual Studio中创建dll程序,再将该程序加载到中望3D中。通过二次开发,我们将原本需要点四步的操作,简化到只需要一步,大大提高了工作效率,当然,在此教程的基础上,我们还可以进一步开发,将输出PDF的操作批量化,附件是本教程的所有程序,大家一起动手,开启您的中望3D私人定制之旅吧!
; h: f( ~0 I5 }2 v6 A2 L       马上下载中望3D2017版,体验智能设计,让创意无极限:http://www.zw3d.com.cn/product-58-1.html, u7 }- n3 ^0 T
       Z3是什么格式文件:http://www.zw3d.com.cn/blog/201503131763.html
1 G0 T% i0 g' t, |' p! T         image023.jpg
4 X5 w- e1 E4 e; k1 `6 _1 m: j2 K/ g( ~6 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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