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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Ошибка при зумировании листа. Алгоритм печати в модели и в листе

Ошибка при зумировании листа. Алгоритм печати в модели и в листе

Ответ
Поиск в этой теме
Непрочитано 29.08.2012, 14:46 #1
Ошибка при зумировании листа. Алгоритм печати в модели и в листе
Rask
 
Регистрация: 17.08.2012
Сообщений: 19

Всем привет! Помогите разобраться. Проблема состоит в следующем: какие отличия в действиях при печати из пространства модели и из пространства листа?
Пишу на C#. Область печати - рамка.
Алгоритм:
1. По всем layout'ам в документе:
2. Делаю активным layout LayoutManager.Current.CurrentLayout = "Имя layout'а"
3. Зумирую область поиска объектов-рамок
4. Поиск объектов-рамок. Найденные объекты помещаю в набор SelectionSet
5. Для каждого объекта из SelectionSet делаю зумирование ZoomWin.
6. Печать объекта-рамки через определение PlotInfo, PlotSettings, PlotSettingsValidator,
PlotInfoValidator, PlotEngine. Задание их параметров.

Для модели у меня этот алгоритм работает, дли листа нет. Вылетает исключение eNullObjectPointer.
public static void ZoomWin(Editor ed, Point3d min, Point3d max)
{
Point2d min2d = new Point2d(min.X, min.Y);
Point2d max2d = new Point2d(max.X, max.Y);

ViewTableRecord view = new ViewTableRecord();

view.CenterPoint = min2d + ((max2d - min2d) / 2.0);

view.Height = max2d.Y - min2d.Y;
view.Width = max2d.X - min2d.X;

ed.SetCurrentView(view); // ошибка вылетает здесь
}
Зумироваться надо по-другому? Или вообще какие-то другие действия? Почему вылетает ed.SetCurrentView(view)?
Просмотров: 5064
 
Непрочитано 29.08.2012, 22:08
#2
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


на первый взгляд, view не добавлен к ViewTable, и не является резидентом базы
И ещё, в AutoCAD .NET Developer's Guide приводится метод, я его вполне успешно использовал. Manipulate the Current View

Последний раз редактировалось bargool, 29.08.2012 в 22:23. Причина: Запутался в исходных условиях
bargool вне форума  
 
Автор темы   Непрочитано 30.08.2012, 07:17
#3
Rask


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


Видимо так и есть. У меня вопрос как просто зумировать layout лист если у нас нет viewport' а на нём?
Rask вне форума  
 
Непрочитано 30.08.2012, 11:02
#4
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от Rask Посмотреть сообщение
У меня вопрос как просто зумировать layout лист если у нас нет viewport' а на нём?
не очень понятен вопрос. что есть на layout, и что требуется печатать? И зачем это зуммировать? (я, честно говоря, программно не печатал ещё. создавать layout'ы - создавал)
И кстати, вьюпорт есть всегда. Первый вьюпорт в коллекции вьюпортов layout'а - это тот, через который ты смотришь на этот самый layout (если, конечно, layout инициализирован автокадом, но если ты на него переключаешься, то он инициализирован)
И чем не подходит тот метод, на который я дал ссылку?
bargool вне форума  
 
Автор темы   Непрочитано 30.08.2012, 11:46
#5
Rask


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


У меня лист создан по шаблону (по рамке). На него добавлен рисунок из модели (через viewport). Мне необходимо распечатать то что находится на листе - т.е. рамку и рисунок. Зумирую я для того, чтобы узнать формат и граничные точки рамки. Алгоритм поиска формата рамки:
1. сначала зумирую;
2. потом все объекты-рамки, попавшие в зумированную область (с помощью SelectCrossingWindow) помещаю в объект SelectionSet;
3. распечатываю все объекты-рамки по двум точкам.
По поводу метода по ссылке: в чём отличие между моим методом и который по ссылке? Вначале возвращается ViewTableRecord изменяется его ширина, высота, центр. Затем помещается в Editor.SetCurrentView. Разница лишь в способе получения ViewTableRecord?
Рамка у меня вылазит за пределы viewport'а, в котором помещён рисунок, поэтому я и не знаю как узнать граничные точки рамки и распечатать лист.
Rask вне форума  
 
Непрочитано 30.08.2012, 12:11
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


2 Rask
Чтобы не создавать проблем на свою голову, листы чертежей следует оформлять грамотно, т.е. не просто в Layout, но в границе печати этого Layout. Ситуация, когда в одном Layout находится десяток хаотично разбросанных "оформленных листов", либо когда "оформленный лист" вне границ печати Layout - это изврат.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.08.2012 в 12:18.
hwd вне форума  
 
Автор темы   Непрочитано 30.08.2012, 13:18
#7
Rask


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


hwd, Зря на меня наговорил! На одном листе у меня находится одна рамка, она лежит в границах печати этого листа. Наверное тебя запутали мои определения. Рисунок - это, то что помещается внутрь рамки (т.е. сам объект). Просто я хотел объединить в одну функцию поиск рамок на модели и на листе. Вся проблема в определении границ рамки.
Rask вне форума  
 
Непрочитано 30.08.2012, 13:27
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


2 Rask
Если твоя "рамка" выполнена в виде параметрического блока (надеюсь, что так и есть), то какие трудности в том, чтобы считать координату вставки и текущие размеры вхождения блока?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.08.2012, 13:54
#9
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от Rask Посмотреть сообщение
Вся проблема в определении границ рамки
Первое, что приходит в голову, пройтись по всем Entity в layout и посмотреть GeometricExtents.MinPoint и MaxPoint
Цитата:
Сообщение от Rask Посмотреть сообщение
Разница лишь в способе получения ViewTableRecord?
По большому счёту да, используется текущий
bargool вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Ошибка при зумировании листа. Алгоритм печати в модели и в листе

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Толщины линий при печати из листа (ВЭ) nem AutoCAD 10 25.11.2011 14:16
Вопрос по блокам(цвет заливки в пространстве модели и листа) SteelBrother AutoCAD 13 21.10.2011 06:14
При печати из пространства листа в режиме "РАМКА" (когда выделяем область печати) не видна ранее выделенная область печати! Где это можно настроить?? sergkovr AutoCAD 22 22.05.2011 19:23
Не печатаются примитивы, видимые в модели и на листе. Что делать? Малявка AutoCAD 11 25.11.2009 16:13
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47