Как программно задать видовому экрану именованный вид?

Автор Тема: Как программно задать видовому экрану именованный вид?  (Прочитано 11710 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Подскажите, как задать видовому экрану листа именованный вид?

1. Имеется несколько объектов в пространстве модели.
2. Каждому объекту соответствует свой именованный вид.
3. Для каждого объекта создаем лист с видовым экраном.
4. Теперь у каждого видового экрана нужно переназначить фокус на объект в виде именованного вида.

Вопрос решить нужно именно с помощью перенастройки видовых экранов на именованный вид!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Снова вопрос не в том разделе? VBA или .NET?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Да уж! VB.NET, конечно же.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Давай пример чертежа, чтобы было понятно о чем речь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Хорошо!

Суть сводится к тому, что имеется две рамки в пространстве модели и соответствующие им листы с видовыми экранами.
Я определил границы объектов и задал им именованный вид OBJ-1 и OBJ-2 соответственно.
Теперь хочу, чтобы в первом листе был OBJ-1, вписанный в видовой экран, а на втором листе OBJ-2, вписанный в видовой экран.
Почему вписанный? Потому что оригинальный размер объектов в пространстве модели в 100 раз больше каждого из видовых экранов в листах.
Но на печать уйдет видовой экран с заданными размерами!


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну простейший вариант - командными методами. Переходишь в нужный лист, переключаешься в нём в пространство модели, запускаешь команду _-VIEW и указываешь именованный вид.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Пашин Евгений 28-08-2015, 11:31:39

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Такой вариант устраивает? Если нет, то попробую вечером посмотреть вариант с использованием чистого AutoCAD .NET API.
Командными методами это выглядит так:
Цитировать
Command: _LAYOUT
Enter layout option [Copy/Delete/New/Template/Rename/SAveas/Set/?] <set>:_Set
Enter layout to make current <А2_верт>: а1_гор
Restoring cached viewports - Regenerating layout.

Command: _MSPACE

Command: -VIEW
Enter an option [?/Delete/Orthographic/Restore/Save/sEttings/Window]: _restore
Enter view name to restore: obj-1

Command: _LAYOUT
Enter layout option [Copy/Delete/New/Template/Rename/SAveas/Set/?] <set>:_Set
Enter layout to make current <а1_гор>: А2_верт
Restoring cached viewports - Regenerating layout.

Command: _MSPACE

Command: -VIEW
Enter an option [?/Delete/Orthographic/Restore/Save/sEttings/Window]: _restore
Enter view name to restore: obj-2
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Я попробую и отпишусь. Спасибо!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я вот что еще подумал. Чтобы не спрашивать на каждом листе имя именованного вида желательно сделать так, чтобы имя листа и имя вида совпадали, или в крайнем случае по имени листа можно было однозначно определить имя вида.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
КРУТО! РАБОТАЕТ!

Заранее имя листа не известно. Дело в том. что объекты в пространстве модели будут определяться автоматически, затем автоматически будут создаваться листы и их имена будут генерироваться по порядку "OBJ-№ объекта". Пока как-то планируется. Но все равно спасибо!!! +500 к Вашей карме! И еще, а как можно после MSPACE отключить фокус на видовом экране? Можете какую-нибудь команду подсказать?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
И еще, а как можно после MSPACE отключить фокус на видовом экране? Можете какую-нибудь команду подсказать?
Если я правильно понял о чем ты, то наверное _PSPACE
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Заранее имя листа не известно. Дело в том. что объекты в пространстве модели будут определяться автоматически, затем автоматически будут создаваться листы и их имена будут генерироваться по порядку "OBJ-№ объекта".
Ну так и именованные виды могут быть "OBJ-№ объекта".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Да, так и будет скорее всего ))) PSPACE - в яблочко!

Оффлайн D_TRex

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Здравствуйте не знаю жива ли тема. В общем понять не могу, выручайте. Задача следующая есть массив чертежей - хочу разделить их на листы VB.NET
Код - vb.net [Выбрать]
  1. CadApp = New AcadApplication
  2.         CadApp.ActiveDocument.Close()
  3.         CadApp.Documents.Open("d:\System\OneDrive\Спецификация\Обработка\Листы.dwg")
  4.         CadApp.Visible = True
  5.         CadDoc = CadApp.ActiveDocument
  6.         CadUT = CadDoc.Utility
  7.  
  8.         Dim Y As Integer
  9.         Dim XY1(0 To 1) As Double
  10.         Dim XY2(0 To 1) As Double
  11.         X = 0
  12.         Do Until X = grdList.RowCount - 1
  13.             CadLayot = CadDoc.Layouts.Add("TRex-" & X + 1)
  14.             CadDoc.ActiveLayout = CadLayot
  15.             CadDoc.SetVariable("PSLTSCALE", 0) ' отключаем "Масштаб в единицах пространства листа" для корректного отображения линий
  16.             CadLayot = CadDoc.ActiveLayout
  17.             CadLayot.PaperUnits = AcPlotPaperUnits.acMillimeters
  18.  
  19.             Y = CadDoc.PaperSpace.Count - 1 ' удаляю все видовые экраны, обычно один, но лучше циклои пройду
  20.             Do Until Y = 0
  21.                 CadDoc.PaperSpace.Item(Y).Delete()
  22.                 Y = Y - 1
  23.             Loop
  24.  
  25.             CadCenter(0) = 210 : CadCenter(1) = 148.5 : CadCenter(2) = 0
  26.             CadVport = CadDoc.PaperSpace.AddPViewport(CadCenter, 420, 297)
  27.             CadDoc.ActiveSpace = AcActiveSpace.acPaperSpace
  28.             CadDoc.Application.ZoomExtents()
  29.  
  30.             CadVport.ViewportOn = True
  31.             CadVport.CustomScale = 1 ' масштаб внутри листа
  32.             CadVport.Display(True) ' вхожу в редактирование модели в окне листа
  33.             CadDoc.MSpace = True ' вошёл в редактирование модели в окне листа
  34.            
  35.             CadVport.DisplayLocked = True ' блокировка видового экрана
  36.             'настройки печати
  37.             CadLayot.ConfigName = "DWG To PDF.pc3" ' tsPrint_O.Text ' вписываю принтер так как надо знать форматы бумаги, а с этим пока проблема "DWG To PDF.pc3"
  38.             CadLayot.PlotRotation = 2 'поворот 2-книжная 3-альбомная
  39.  
  40.             CadLayot.StandardScale = 16 '16 - 1:1 ,  0 - вписать смотри страницы 350-351 книги по автокаду
  41.             CadLayot.StyleSheet = "monochrome.ctb" 'стиль печати - монохром
  42.             'цветозависимый (хз как настроить, но вроде по умолчанию стоит)
  43.             CadLayot.PlotWithPlotStyles = True 'учитывать стили печати
  44.             CadLayot.PlotWithLineweights = True 'учитывать вес линий
  45.             CadLayot.PaperUnits = 1 'acMillimeters 'ед. измерения
  46.             CadLayot.RefreshPlotDeviceInfo() ' не знаю что делает - отключал ни на что не повлияло
  47.  
  48.             X = X + 1
  49.         Loop

Выше мой Франкенштейн собирал с разных источников и как бы всё ни чего, не могу понять как программно редактировать видимую часть в листе. Элементы типа AcadView не подходят так как они  делают массив экранов, но не вставляет их в лист.

Вообще в идеале покажите как клонировать лист и изменить его видимую часть, потому как настройка печати это дебри и в них я пока не планировал вникать.

Вот скрин чертежа, ну скажем так к примеру:

« Последнее редактирование: 30-03-2022, 16:59:57 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
D_TRex,
Приветствую на форуме!
Прочитай у меня в подписи правило форматирования кода на форуме!
По существу вопроса я не понял что именно тебе нужно.
не могу понять как программно редактировать видимую часть в листе.
Что имеется в виду? Редактировать примитивы AutoCAD, которые содержатся в модели, но видны в листе через видовой экран? Тогда их просто нужно редактировать в модели.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение