- 积分
- 2005
- 明经币
- 个
- 注册时间
- 2015-3-4
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 MTC 于 2016-5-2 14:09 编辑
原文件是VBA编写的一个批量打印程序中的一段,在VB 中使用时如果引用了CAD的类型库是没有问题的,如果我不引用的话,也想这句语句可以执行,该怎么改一下了。
原VBA程序语句如下(截取部分)
On Error Resume Next
Dim ptMin As Variant, ptMax As Variant
Dim Ent as Object
Dim PlotCount As Integer
Set objDoc = ThisDrawing.Application.ActiveDocument
Set objLayout = objDoc.Layouts.Item("Model")
Set objPlot = objDoc.Plot
ThisDrawing.Application.ZoomExtents
For Each Ent In objDoc.ModelSpace
If TypeOf Ent Is AcadBlockReference Then '
If IsFrame(Ent, AutoFrame) = True And objDoc.Blocks(Ent.Name).count > 0 Then
Ent.GetBoundingBox ptMin, ptMax
Debug.Print Ent.Name & "--" & objDoc.Blocks(Ent.Name).count
' 将三维点转化为二维点坐标
ReDim Preserve ptMin(0 To 1)
ReDim Preserve ptMax(0 To 1)
' 设置打印窗口
ThisDrawing.ActiveLayout.SetWindowToPlot ptMin, ptMax
objLayout.PlotType = acWindow
' 完全预览并提示打印
'objPlot.DisplayPlotPreview acFullPreview
objPlot.PlotToDevice objLayout.ConfigName
End If
End If
Next Ent
不引用CAD类型库时出错的语句为 If TypeOf Ent Is AcadBlockReference Then 中的“AcadBlockReference”,有没有其他方法替代这句的功能。
|
|