Печатает не то, что выбирает. VBA. AutoCAD 2008
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Печатает не то, что выбирает. VBA. AutoCAD 2008

Печатает не то, что выбирает. VBA. AutoCAD 2008

Ответ
Поиск в этой теме
Непрочитано 25.02.2011, 12:51 #1
Печатает не то, что выбирает. VBA. AutoCAD 2008
Shraybicus
 
Регистрация: 05.12.2010
Сообщений: 104

Здравствуйте!

Вот не сложная процедура:
Код:
[Выделить все]
Sub Example_SetWindowToPlot()
    ' This example allows the user to define an area in the current layout
    ' and displays a plot preview of the defined area.
    '
    ' * Note: You have to exit the
    ' plot preview before the VBA example will stop and control will be returned
    
    Dim point1 As Variant, point2 As Variant
    
    ' Get first point in window
    point1 = ThisDrawing.Utility.GetPoint(, "Click the lower-left of the window to plot.")
    ReDim Preserve point1(0 To 1)   ' Change this to a 2D array by removing the Z position
    
    ' Get second point in window
    point2 = ThisDrawing.Utility.GetPoint(, "Click the upper-right of the window to plot.")
    ReDim Preserve point2(0 To 1)   ' Change this to a 2D array by removing the Z position
    
    ' Send information about window to current layout
    ThisDrawing.ActiveLayout.SetWindowToPlot point1, point2
    
    ' Read back window information
    ThisDrawing.ActiveLayout.GetWindowToPlot point1, point2
    
    MsgBox "Press any key to plot the following window:" & vbCrLf & vbCrLf & _
           "Lower Left: " & point1(0) & ", " & point1(1) & vbCrLf & _
           "Upper Right: " & point2(0) & ", " & point2(1)
    
    ' Be sure to plot a view, not some other plot style
    ThisDrawing.ActiveLayout.PlotType = acWindow
    
    ' Send Plot To Window
    ThisDrawing.Plot.DisplayPlotPreview acFullPreview
End Sub
Так вот, при выборе области печати, предосмотр показывает совсем другое. При чем точки, которые соответствуют нижней левой и верхней правой MsgBox выводит верно.

Кто встречался с такой проблемой?

Если печатать через "Файл - Печать", то все нормально.

Такая ситуация у меня встречается в существующем файле. Если создать новый, то все нормально.
Просмотров: 5995
 
Непрочитано 25.02.2011, 14:14
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Могу предположить что дело в ПСК. Попробуй выставить мировую
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.02.2011, 15:28
#3
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


VVA,

выставил, но ничего не изменилось

Мне кажется я понял в чем проблема. Что-то с камерой. Я открыл новый файл, попробывал "Вид -Камера - Регулировка растояния" немного покрутить. А то же самое случилось. Только как сброить я не знаю(((

Последний раз редактировалось Shraybicus, 25.02.2011 в 15:36.
Shraybicus вне форума  
 
Непрочитано 07.10.2011, 08:44
#4
Гонтарски


 
Регистрация: 16.12.2005
Сообщений: 4


На область печати влияют настройки текущего вида, а конкретно следующие его свойства:

Камера X
Камера Y
Камера Z
Цель X
Цель Y
Цель Z

Посмотреть их можно с помощью команды _view
Сбросить их можно так:

Код:
[Выделить все]
Dim vw As AcadView
    Set vw = ThisDrawing.Views.Add("NewView")
    Dim vp As AcadViewport
    Set vp = ThisDrawing.ActiveViewport
    vp.setView vw
    ThisDrawing.ActiveViewport = vp
либо вот так:

Код:
[Выделить все]
Dim vp As AcadViewport
    Dim NewTarget(0 To 2) As Double
    Set vp = ThisDrawing.ActiveViewport
    vp.Target = NewTarget

    Dim NewDirection(0 To 2) As Double
    NewDirection(2) = 1
    vp.Direction = NewDirection
    
    ThisDrawing.ActiveViewport = vp

ЗЫ: Темка уже старая, но может кому еще пригодится.

Последний раз редактировалось Гонтарски, 07.10.2011 в 09:10. Причина: вспомнил другой вариант кода, более предпочтительный
Гонтарски вне форума  
 
Автор темы   Непрочитано 07.10.2011, 11:19
#5
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Гонтарски,

Спасибо!

Я эту проблему решил еще давно. Только не выложил решение.

Вот процедура, которая устанавливает Target (Цель) X, Y и Z в нулевое значение.

Код:
[Выделить все]
Public Sub change_Target()
    
    ' Get an active model space viewport
    Dim viewportObj As AcadViewport
    Set viewportObj = ThisDrawing.ActiveViewport
    
    ' Find the current target
    Dim currTarget As Variant

    currTarget = viewportObj.Target
    
    If viewportObj.Target(0) <> 0# Or viewportObj.Target(1) <> 0# Or viewportObj.Target(2) <> 0# Then
        
         'Change the target
        Dim newTarget(0 To 2) As Double
        newTarget(0) = 0#: newTarget(1) = 0#: newTarget(2) = 0
        viewportObj.Target = newTarget
        ThisDrawing.ActiveViewport = viewportObj
        ThisDrawing.Regen acAllViewports
        
        ZoomAll
    End If
   
End Sub
Shraybicus вне форума  
 
Непрочитано 02.02.2012, 20:16
#6
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


столкнулся с такой же проблемой, но только на лиспе...
установка в ноль параметра target проблему не решает (на лиспе), печатает все так же указанную
(программно [vla-SetWindowToPlot]) область со смещением на [Camera x y z] хоть и показывает
объект activeViewport свойство Target (0.0 0.0 0.0)
сохранение/открытие чертежа заново - не помогает - свойство возвращается
хорошо смотреть истинное значение из меню View->NamedViews - вид Current - там "не врут"

пробовал создать свой вид и назначить его активным (vla-setview [activeViewport] [myViewport])
но результат тот же

пробовал из меню View->NamedViews "пальцами" назначить свой созданный выше вид активным - сработало,
но пока не придумал как это сделать в коде

вопрос актуален
kakt00z вне форума  
 
Автор темы   Непрочитано 03.02.2012, 20:40
#7
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Цитата:
Сообщение от kakt00z Посмотреть сообщение
столкнулся с такой же проблемой, но только на лиспе...
установка в ноль параметра target проблему не решает (на лиспе), печатает все так же указанную
(программно [vla-SetWindowToPlot]) область со смещением на [Camera x y z] хоть и показывает
объект activeViewport свойство Target (0.0 0.0 0.0)
сохранение/открытие чертежа заново - не помогает - свойство возвращается
хорошо смотреть истинное значение из меню View->NamedViews - вид Current - там "не врут"

пробовал создать свой вид и назначить его активным (vla-setview [activeViewport] [myViewport])
но результат тот же

пробовал из меню View->NamedViews "пальцами" назначить свой созданный выше вид активным - сработало,
но пока не придумал как это сделать в коде

вопрос актуален
Так используй макрос VBA, который выше.)
Shraybicus вне форума  
 
Непрочитано 05.02.2012, 13:29
#8
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


Shraybicus,
вопрос уже больше идейный почему лисп устанавливает Target в ноль, но печатает при этом всеравно со смещением...
или я чего-то забываю обновлять? .... :/
Код:
[Выделить все]
(setq #cad (vlax-get-acad-object))
(setq #actdoc (vla-get-activedocument #cad))
(setq av (vla-get-activeViewport #actdoc))  #<VLA-OBJECT IAcadViewport 160767c4>

(vlax-safearray->list (vlax-variant-value (vla-get-target av)))   (99.5069 110.582 0.0) 
(vla-put-target av (vlax-3d-point '(0 0 0)))
(vla-regen #actdoc acallviewports)
(vlax-safearray->list (vlax-variant-value (vla-get-target av)))   (0.0 0.0 0.0) 
(getvar "TARGET")     (99.5069 110.582 0.0)

Последний раз редактировалось kakt00z, 08.02.2012 в 12:37. Причина: добавлен код
kakt00z вне форума  
 
Непрочитано 27.12.2013, 13:37
#9
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


Отвечу что называется сам себе
AutoCAD 2008 устанавливаем багфикс - plot_to_pdf_hotfix_32bit.zip (скачать можно с оф. сайта) - обновленный драйвер pdfplot9.hdi
и собсна всё
kakt00z вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Печатает не то, что выбирает. VBA. AutoCAD 2008



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видеоуроки AutoCAD kosmax AutoCAD 173 17.02.2017 15:08
Проблемма с установкой AutoCAD 2008 Alxndr1697 AutoCAD 27 24.04.2010 21:43
Ищу любое рукодство пользователя AutoCAD Electrical 2008 DAM Поиск литературы, чертежей, моделей и прочих материалов 3 07.10.2009 17:20
AutoCAD LT 2005 и VBA Macros Vidas Программирование 10 03.05.2005 11:00