xxxtttxxx发表于2008-3-4 17:48:00在某些情况下,一般都是图纸比较复杂(大)的情况下出现:就是选择图框打印后,打印区域出现偏移,或者打印内容只占图纸的一个小角落(已经设置布满图纸),怀疑是否与坐标系有关,或者图纸版本
这个问题我倒是没有碰到过。是不是世界坐标、显示坐标的原因。下面的文字是我从网上摘录的。 VBA中GetPoint以及GetBoundingBox返回的是都是世界坐标(WCS),而ThisDrawing.ModelSpac e.Layout.SetWindowToPlot中使用的却是显示坐标(DCS), 我们可以使用ThisDrawing.Utility.TranslateCoordinates(PtMax, acWorld, acDisplayDC S, False)将世界坐标转换成显示坐标,这样就不会出现打印的时候图像出现偏移。 Function KSDY(E As AcadEntity) E.GetBoundingBox PtMin, PtMax '返回的是世界坐标 '将世界坐标(WCS)转换为显示坐标(DCS) Dim PtMax_UCS As Variant Dim PtMin_UCS As Variant PtMax_UCS = ThisDrawing.Utility.TranslateCoordinates(PtMax, acWorld, acDisplayDCS, False) PtMin_UCS = ThisDrawing.Utility.TranslateCoordinates(PtMin, acWorld, acDisplayDCS, False) ' 将三维点转化为二维点坐标 ReDim Preserve PtMin_UCS(0 To 1) ReDim Preserve PtMax_UCS(0 To 1) ' 设置打印窗口(为显示坐标DCS) ThisDrawing.ModelSpace.Layout.SetWindowToPlot PtMax_UCS, PtMin_UCS If Me.OptionButton4.Value = True Then '启用打印预览 ThisDrawing.ActiveLayout.GetWindowToPlot PtMax_UCS, PtMin_UCS ThisDrawing.ActiveLayout.PlotType = acWindow ThisDrawing.Plot.DisplayPlotPreview acFullPreview Else '打印当前的区域 '若选中“打印到文件” If PlotTofile_CheckBox.Value Then If PlotFilesPath_ComboBox.Text = "" Then PlotFilesPath_ComboBox.Text = GetPath ThisDrawing.Plot.PlotToFile PlotFilesPath_ComboBox.Text & ThisDrawing.Name & "-" & n & ".plt" n = n + 1 Else ThisDrawing.Plot.PlotToDevice ThisDrawing.ModelSpace.Layout.ConfigName End If End If End Function
|