Бодрого дня.
Подсобите с печатью. Есть код. Компилется без ошибок. Библиотеки взял из SDK 26
ncauto.tlb
OdaX.tlb
hostdbmgd.dll
hostmgd.dll
Код при выполнении спотыкается на
’ Получаем активный лист
Dim activeLayout As Object = comDoc.ActiveLayout
NC26 выдает: Ошибка во время выполнения команды: ‘Public member ‘ActiveLayout’ on type ‘Document’ not found.’.
Может я чего не понимаю или Активный лист выпилили из пространства имен Document.
Я не настоящий программист, если что.
Imports Teigha.Runtime
Imports Teigha.Geometry
Imports HostMgd.ApplicationServices
Imports HostMgd.EditorInput
Namespace MyNanoCADCommands
Public Class Commands
<CommandMethod("US_print3")>
Public Sub PrintWindowByTwoPoints()
' 1. Получаем активный документ
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
If doc Is Nothing Then
MsgBox("Нет открытого чертежа.")
Return
End If
Dim ed As Editor = doc.Editor
' 2. Запрашиваем точки
Dim pt1Res As PromptPointResult = ed.GetPoint(vbCrLf & "Укажите первый угол области печати: ")
If pt1Res.Status <> PromptStatus.OK Then Return
Dim point1 As Point3d = pt1Res.Value
Dim pt2Res As PromptPointResult = ed.GetCorner("Укажите второй угол области печати:", point1)
If pt2Res.Status <> PromptStatus.OK Then Return
Dim point2 As Point3d = pt2Res.Value
' 3. Печать через COM API
Try
' Получаем COM-объект документа
Dim comDoc As Object = doc.AcadDocument
' Получаем активный лист
Dim activeLayout As Object = comDoc.ActiveLayout
' Определяем, откуда печатаем
Dim layoutName As String = activeLayout.Name
If layoutName = "Model" Then
ed.WriteMessage(vbCrLf & "Печать из пространства МОДЕЛИ")
Else
ed.WriteMessage(vbCrLf & "Печать из ЛИСТА: " & layoutName)
End If
' Настраиваем область печати "Рамка"
activeLayout.PlotType = 1 ' acWindow
activeLayout.SetWindowToPlot(point1.X, point1.Y, point2.X, point2.Y)
' Отправляем на печать
Dim plot As Object = comDoc.Plot
plot.PlotToDevice()
ed.WriteMessage(vbCrLf & "Задание на печать успешно отправлено.")
Catch ex As Exception
ed.WriteMessage(vbCrLf & "Ошибка печати: " & ex.Message)
End Try
End Sub
End Class
End Namespace