AutoCAD批量打印的实现

2012-02-08 09:32何德平杨本廷
城市勘测 2012年3期
关键词:份数批量二次开发

何德平,杨本廷

(重庆市勘测院,重庆 400020)

1 引言

AutoCAD软件以其强大而又完善的功能以及方便快捷的操作在计算机辅助设计领域中得到了极为广泛的运用。AutoCAD软件的通用功能已经足够强大,但针对具体专业领域的某些功能还有局限性。因此目前测绘行业使用广泛、知名度很高的数字测图软件包括南方公司的CASS测图系统、威远图的SV300测图系统、广州开思的SCS测图系统均是在AutoCAD平台上进行的二次开发的,这些软件满足了测绘行业数字测绘的需要。但在某些专业测绘领域中,还需开发一些专用的功能,以提高工作效率,满足实际工作的需要。

2 批量打印的需求

在面积测绘过程中,测绘单位一般也是采用Auto-CAD软件进行内业的图形绘制、面积计算、图形打印。在绘图过程中需对每栋建筑不相同的楼层均需绘制楼层建筑面积实测图。由于科学技术的发展,当前城市建设工程的建筑风格、建筑结构和样式越来越复杂和新颖,特别是别墅和花园洋房的每一层形状和大小均不相同。因此,遇到该类项目时所绘制的楼层建筑面积实测图较多,有的甚至需要绘制几百余张图。若采用AutoCAD通用的打印功能进行批量图幅的打印出图(如图1),每张图均需进行打印设备、图纸大小、打印窗口、打印比例等打印设置,则需要较长的时间。如图1的64幅图,若每幅图打印设置需要 30 s,则64幅图需要 32 min。这样花费的时间太长,就需要针对该种情况开发一种能快速批量打印的功能,只要同时选中这则64幅图,则按一定的顺序、比例尺在计算机前台自动打印,以提高劳动效率。

图1 需打印的图幅

3 编程思路

在实际的建筑面积测绘工作中,因为表示的建筑的大小、复杂程度不一样,但为了统一出图图纸大小,一般选用A4或A3纸张,因此会导致建筑面积实测图按不同的比例尺绘制(如图2)。打印的图纸一般需按建筑栋号和楼层号从小到大的先后顺序装订,因此要求图纸批量打印时,也按一定的先后顺序打印,以节省人工重新排序的时间。但在选择图形时,AutoCAD默认的是按图形制作的先后顺序选中,这与需要的顺序不一致。这就需要将图纸的比例尺和出图顺序采用一定的方式注记在图廓中,打印时可根据注记的比例尺和图纸的顺序进行打印。一般采用添加标准的图廓来实现上述要求。

图2 不同比例尺绘制的图幅

编程时首先需要对出图配置进行设置,设置的内容主要有:①设置打印设备、图纸类型、图纸方向和单位;②设置出图原点、出图区域;③设置出图比例、份数、颜色;其次是进行打印对象的选择,选择时Auto-CAD默认的是根据打印范围线绘制的先后顺序选中,需根据图廓中规定的顺序对图形进行排序和获取打印的比例尺,并可进行预览。最后是将图形按设定的比例尺、顺序、颜色、份数在指定打印设备进行打印。

4 程序实现

AutoCAD的特色之一便是提供了广阔的二次开发空间,如 VBA、VB.NET、ObjectARX、AutoLisp、Visual-Lisp等,让用户完成AutoCAD本身所不具备的功能,更高效地完成工作。使用VBA进行二次开发具有很大的优势,其语法简单、功能强大、界面清晰。使用VBA编程实现批量打印主要需使用下列方法和属性:

(1)出图配置设置

①模型空间出图

使用AutoCAD打印图形比较常用的是窗口打印,也就是在模型空间创建所有的实体然后直接从模型空间指定打印范围,然后选择大小适当的图纸进行打印。

ThisDrawing.ActiveLayout=ThisDrawing.Layouts.Item("Model") '确保当前布局是模型空间

②打印设备

使用GetPlotDeviceNames来获得所有可用的打印设备,再通过ConfigName属性来指定打印设备。

ThisDrawing.ActiveLayout.ConfigName="DWF6 ePlot.pc3"'指定打印设备

③图纸类型和单位

图纸类型是根据用户系统连接的打印设备而定的,每一种不同的打印设备都会有相应可用图纸尺寸的标准,使用GetCanonicalMediaNames可获得所有可用的图纸类型,再用CanonicalMediaName属性来配置图纸的尺寸,用PaperUnits属性指定图纸的单位。

ThisDrawing.ActiveLayout.CanonicalMediaName="A4" '指定图纸为A4

ThisDrawing.ActiveLayout.PaperUnits=acMillimeters '设置图纸单位为毫米

④纸张方向

使用 PlotRotation来设置纸张方向,设置成ac90degrees为横向,设置成ac0degrees为纵向。

ThisDrawing.ActiveLayout.PlotRotation=ac90degrees '纸张方向为横向

⑤出图原点

出图原点默认设置为(0,0),用户也可以通过设置CenterPlot属性为True来将原点设置在图纸中央进行对中出图。

ThisDrawing.ActiveLayout.CenterPlot=True '设置对中出图

⑥出图区域

使用PlotType属性来指定出图区域,该属性可以选择为 acWindow,打印 SetWindowToPlot方法指定的窗口中所有图形。

ThisDrawing.ActiveLayout.PlotType=acWindow '打印类型为窗口选择

ThisDrawing.ActiveLayout.SetWindowToPlot ptMin,ptMax '设置打印窗口

⑦出图比例

出图时需要使用一个精确的比例来打印到图纸上,可使用SetCustomScale方法输入自定义比例。

ThisDrawing.ActiveLayout.UseStandardScale=False '不使用标准比例

ThisDrawing.ActiveLayout.SetCustomScale 1,bl '自定义比例

⑧出图份数

使用NumberOfCopies指定出图的份数

ThisDrawing.Plot.NumberOfCopies=1 '出图份数为 1

⑨出图颜色

利用StyleSheet来指定打印样式表,从而确定打印的颜色。

ThisDrawing.ActiveLayout.ShowPlotStyles=True '指定在打印中应用打印样式

ThisDrawing.ActiveLayout.PlotWithPlotStyles=True '指定对象按打印样式文件的配置打印

ThisDrawing.ActiveLayout.StyleSheet="Monochrome.ctb" '指定黑色打印样式表

(2)对象选择及处理

使用SelectionSets集合的add方法创建选择集,使用SelectOnScreen方法过滤选择屏幕中的打印范围多段线对象并添加到选择集,再根据指定的顺序对打印范围线进行排序处理,同时获取每个需要打印的范围线的比例尺、打印窗口坐标。

Set Sset=ThisDrawing.SelectionSets.add("LWPolyline") '创建选择集

fType(0)=0:fData(0)="LWPolyline" '选择对象为多段线

fType(1)=8:fData(1)="打印范围" '选择图层为打印范围

Sset.SelectOnScreen fType,fData '用过滤器选择打印范围线

bl=EntLWP.Thickness '获取打印范围线的厚度作为自定义比例

LWPolyEnt.GetBoundingBox ptMin,ptMax '获取打印范围线的两对角点坐标

Set LWPolyEnt(m)=Sset.Item(LineNum(m)- 1) '将多段线对象导出为对象数组,再进行排序

ThisDrawing.ActiveLayout.SetWindowToPlot ptMin,ptMax '设置打印窗口

ThisDrawing.Plot.DisplayPlotPreview acFullPreview '打印预览

(3)打印对象

将选择的打印对象按上述设置进行打印。

ThisDrawing.SetVariable"BACKGROUNDPLOT",0 '设置前台打印

ThisDrawing.Plot.PlotToDevice(PlotDName) '打印当前区域的全部文件

ThisDrawing.SetVariable"BACKGROUNDPLOT",2 '恢复系统变量的值,后台打印

5 结语

利用AutoCAD VBA二次开发技术以及本文的编程思路和方法编写了批量打印程序(见图3),在实际工作中得到了广泛的应用。几百余张的图纸打印,只需要进行一次的打印设置和对象选择,花费时间不到1分钟,即可按顺序进行批量打印,极大地提高了工作效率,满足了生产的需要。以上列出了编写该程序使用的主要属性和方法的语句,只要在此基础上根据本文中的编程思路,利用以上列出的一些语句,再添加一些排序、单选钮、列表框、文本框的使用语句,即可编写出批量打印程序。

图3 批量打印程序的界面

[1] 张帆.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006.

[2]李凤华.AutoCAD 2002/2000 VBA开发指南[M].北京:清华大学出版社,2001.

[3]张帆,郑立楷,王华杰.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社,2004.

[4] 曾洪飞,张帆,卢择临.AutoCAD VBA&VB.NET开发基础与实例教程[M].北京:中国电力出版社,2008.

[5]王玉琨,任卫红,茅艳等.CAD二次开发技术及其工程应用[M].北京:清华大学出版社,2008.

[6]二代龙震工作室.AutoCAD VBA函数库查询辞典[M].北京:中国铁道出版社,2003.

猜你喜欢
份数批量二次开发
批量提交在配置分发中的应用
如何利用题组训练提高分数“量”与“率”的区分度
对提单及保单出具份数的思考
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
“份数法”的妙用
在数控车床上批量钻铰孔类工件的实践
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
考虑价差和再制造率的制造/再制造混合系统生产批量研究