CAD设计论坛

 找回密码
 立即注册
论坛新手常用操作帮助系统等待验证的用户请看获取社区币方法的说明新注册会员必读(必修)
查看: 3264|回复: 2

[开发] 关于vba二次开发

[复制链接]
发表于 2010-9-25 14:11 | 显示全部楼层 |阅读模式
各位大侠好,我是新来的!
: N$ x) z8 [- ?* P首先我本科不是学CAD开发的,我是学计算机的。最近为了帮助朋友做些插件,学了些简单的AUTOCAD VBA,突然觉得CAD非常的有意思,所以到此向大家多学习学习。
4 P8 K7 `$ s: P8 n希望以后各位能给与多多的帮助。
9 J6 f2 Q4 L7 t. m3 \问题:我最近在做批量打印CAD图到PDF图的过程中发现,自动打印出来的文档名称是CAD文档默认的名称,这样的话一张CAD图中有如果有N>2张图纸的话就会在默认的存储路径中覆盖掉已有的PDF文档,有没有什么好办法在不自动存储CAD文档的前提下改变打印出PDF文档的名称呢。(因为文档内容较多,如果每次都另存为太费时间)
 楼主| 发表于 2010-9-25 14:20 | 显示全部楼层
其中的核心代码如下:/ o# D( g$ M3 }% |8 N
For Each returnobj In doc.ModelSpace* |2 j6 Y2 `! A1 I& N$ [
  If returnobj.ObjectName = "AcDb2dPolyline" Then" N& A) O4 I! M5 J
    If Round(returnobj.Area, 4) >= 62370 Then, Z* e) q+ m: r9 W& s
        returnobj.GetBoundingBox minext, maxext
% B' h+ J2 ]! k) X" K, O! }7 F& O0 [2 r
        point1(0) = minext(0): point1(1) = minext(1)
# G9 V+ `% P2 d6 `% m; Q# z, E; s        point2(0) = maxext(0): point2(1) = maxext(1)
0 @) n+ d+ ^4 X; i- T# {doc.ActiveLayout.CenterPlot = True '中心打印0 z0 p! X+ d4 b1 Q  l, H
doc.ActiveLayout.StandardScale = acScaleToFit '合适比例
- D2 }6 Q: B, Ldoc.ActiveLayout.SetWindowToPlot point1, point2! e& }0 S  _, a8 u
doc.ActiveLayout.PlotRotation = ac0degrees '旋转90度
9 _' \" G+ s0 C, ^doc.ActiveLayout.PlotType = acWindow
, Z, X+ K( Y0 n8 jdoc.Plot.PlotToDevice "D:\plot\pdfFactory Pro.pc3" '打印机pc3文件,或者打印机名称,我这里用到的事PDFfactory pro
; O8 x+ g  E" `# Y  y1 `2 _End If( {; m) e8 ~0 s, W5 y
End If
6 b5 F: K0 I3 ?- V6 DNext8 |* w! G7 b0 V5 h% B6 `' L
上面的代码是搜索面积大于一定值的2dPolyline,并以他的最大点和最小点作为Window打印模式的边界点 doc是autcad.activedocument
发表于 2010-9-25 22:02 | 显示全部楼层
有两个办法:
2 R" j( x& c7 x; t% z一.使用2007及以上版本.打印机使用CAD自带的"DWG To PDF",打印到文件,自行指定PDF文件名.
% W1 P7 x. t# x: [6 s二.使用低版本(2000或以上),把需要打印的内容复制到图纸空间,按需要修改所在布局的名称,从图纸空间打印,打印到设备时PDF文件名是文档名和布局名的组合.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于|免责|隐私|版权|广告|联系|手机版|CAD设计论坛

GMT+8, 2025-4-24 14:10

CAD设计论坛,为工程师增加动力。

© 2005-2025 askcad.com. All rights reserved.

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