Каталог программ для проектирования
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Autocad. Как изменить аннотативный масштаб видового экрана?

VBA Autocad. Как изменить аннотативный масштаб видового экрана?

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 02.08.2017, 12:32 #1
VBA Autocad. Как изменить аннотативный масштаб видового экрана?
ramber
 
Регистрация: 18.04.2011
Сообщений: 31

ramber вне форума Вставить имя

Всем привет!

Никак не получается программно изменить аннатотивный масштаб видового экрана (просто масштаб меняется без проблем StandardScale или ZoomScaled SetScale, acZoomScaledRelativePSpace).

Код:
[Выделить все]
ThisDrawing.SendCommand ("_CANNOSCALE" & vbCr & "1:100" )
даже так пробовал - работает нестабильно
Просмотров: 1166
 
Непрочитано 02.08.2017, 14:47
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,370


Никак. VBA (и соответствующая ему объектная модель) не в курсе про аннатотивность.
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.08.2017, 11:40
#3
ramber


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


Спасибо!

Долго я мучал ThisDrawing.SendCommand ("_CANNOSCALE" & vbCr & "1:100" ), в конце концов разобрался в причинах нестабильной работы. Когда программу запускаешь из редактора - все отрабатывает отлично, но стоит ее запустить из формы либо из палитры - выскакивает ошибка "Недопустимый контент выполнения"

Нашел источник проблемы! Это из-за того, что я запускаю программы через VBARUN это и висит в командной строке и не дает слать никаких команд больше. Вопрос в том, можно ли запускать макросы и убирать из командной строки VBARUN?

Последний раз редактировалось ramber, 03.08.2017 в 11:49.
ramber вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 12:03
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 2,369


Цитата:
можно ли запускать макросы и убирать из командной строки VBARUN
можно

MyForm.Hide()
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.08.2017, 12:05
#5
ramber


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


Цитата:
Сообщение от trir Посмотреть сообщение
можно

MyForm.Hide()
Пробовал, не вариант. Даже Unload MyForm не помог. Дело в том, что командная строка автокада занята VBARUN, чего не происходит, если прогу запускать напрямую из редактора.
ramber вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 12:42
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 2,369


http://forum.dwg.ru/showthread.php?t=110561
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 12:46
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 3,711


Цитата:
Сообщение от trir Посмотреть сообщение
MyForm.Hide()
это лишь скроет форму, определенную в запущенном проекте VBA. Так же, как и Unload - это лишь выгрузит форму из памяти.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.08.2017, 12:52
#8
ramber


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


Цитата:
Сообщение от trir Посмотреть сообщение
Перечитал всю тему, но так и не понял, что там может мне помочь.

В итоге проблема сводится к следующему:

1. При запуске макроса из командной строки используется команда VBARUN, которая занимает командную строку до завершения работы макроса.
2. Во время работы макроса возникает необходимость посылать команды для выполнения автокадом, а он не может этого сделать, поскольку у него висит VBARUN

Есть ли шанс это победить?
ramber вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 13:02
1 | #9
trir


 
Регистрация: 18.12.2010
Сообщений: 2,369


Цитата:
Перечитал всю тему, но так и не понял, что там может мне помочь.
а не надо было, скачай архив и посмотри dvb - там сделано
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 13:04
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 34,658


ИМХО надо через GetExtensionDictionary получать словари ВЭ и копаться уже в них.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 13:08
#11
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,370


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ИМХО надо через GetExtensionDictionary получать словари ВЭ и копаться уже в них.
не получится.
http://adn-cis.org/forum/index.php?topic=7847.0
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 13:08
1 | #12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 3,711


Ну тут уже, например, проверять:
1. Будет ли запущенный из VBA проекта лисп выполняться в контексте документа.
2. Переписать приложение так, чтобы главным был лисп, где запускаются через vl-vbarun нужные VBA проекты, а между ними посылаются команды акаду.

Или осознать, что возможностей VBA уже не хватает для реализации текущих хотелок и вместо танцев с костылями эволюционировать в тот же .Net.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 03.08.2017, 13:12
#13
ramber


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


Цитата:
Сообщение от trir Посмотреть сообщение
а не надо было, скачай архив и посмотри dvb - там сделано
Вот так, искал одно, нашел совсем другое))) Никогда не делал своих классов и коллекций (юзал пользовательские типы данных и массивы из них) а тут такой пример! Спасибо!!!

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну тут уже, например, проверять:
1. Будет ли запущенный из VBA проекта лисп выполняться в контексте документа.
2. Переписать приложение так, чтобы главным был лисп, где запускаются через vl-vbarun нужные VBA проекты, а между ними посылаются команды акаду.

Или осознать, что возможностей VBA уже не хватает для реализации текущих хотелок и вместо танцев с костылями эволюционировать в тот же .Net.
Всем большое спасибо! Видимо, я пока так и буду запускать код из редактора... На .NET переходить буду, когда таких моментов не менее 10 накопится, и VBA будет больше создавать проблем, чем удобств.
ramber вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.08.2017, 14:42
#14
trir


 
Регистрация: 18.12.2010
Сообщений: 2,369


Цитата:
и VBA будет больше создавать проблем, чем удобств.
не могу загрузить этот .dvb - AutoCAD 2017 x64
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 04.08.2017, 15:41
#15
ramber


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


Цитата:
Сообщение от trir Посмотреть сообщение
не могу загрузить этот .dvb - AutoCAD 2017 x64
Это беда VBA ровно на столько же, на сколько и AutoCAD 2017 . ИМХО, 2017 и 2018 не содержат тех функций, чтобы резко на них переходить по сравнению с 2016. Но вы правы, однажды этот день настанет((

Раз уж "пошла такая пьянка"
Допустим, я определил класс BlockSelect
Public BlockSelection As BlockSelect

Далее, мне нужно создать новый экземпляр этого класса:
Set BlockSelection = New BlockSelect

Вопрос, почему нужно указывать после New класс BlockSelect, если он уже указан через Public BlockSelection As BlockSelect? Или можно Set BlockSelection = New <НеBlockSelect>?
Сорри за нубские вопросы, ООП только-только осваиваю.
ramber вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 04.08.2017, 16:35
1 | #16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 3,711


Цитата:
Сообщение от ramber Посмотреть сообщение
Вопрос, почему нужно указывать после New класс BlockSelect, если он уже указан через Public BlockSelection As BlockSelect?
New - это лишь конструкция языка, показывающая - что нужно создать новый объект класса с конструктором по умолчанию. Соответственно, нужно указать - объект какого класса надо создавать. А если, например, слева вообще будет переменная типа object - на основании чего будет выбран тип класса?
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 04.08.2017, 16:56
1 | #17
Psyakrev


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


В C# можно было бы сделать так
Код:
[Выделить все]
 var BlockSelection = new BlockSelect();
Компилятор сам выведет тип.
Учите лучше его вместо vb.net (технология та же самая, но сам язык более мощный и продвинутый)..
Psyakrev вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 04.08.2017, 17:03
#18
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 3,711


Кстати, в блогах разработчиков от Аутодекса (например, у того же Kean Walmsley) начали встречаться примеры и на F#)
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Autocad. Как изменить аннотативный масштаб видового экрана?

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глюки видового экрана. Autocad 2012 esp1413 AutoCAD 27 27.08.2016 14:07
Автоматическое создание "лишнего" скрытого видового экрана помимо нормального при активизации листа Libed AutoCAD 5 06.10.2014 15:19
Значения размеров нанесенных поверх видового экрана меняют свой масштаб Jenec AutoCAD 3 02.10.2014 11:17
Как изменить масштаб видового экрана, при этом не меняя масштаб текста? erikbond AutoCAD 1 23.07.2014 23:36
Autocad 2013 - выравнивание внутри видового экрана peneks AutoCAD 6 22.04.2013 15:34

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


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