Видеоуроки AutoCAD VBA

Автор Тема: Видеоуроки AutoCAD VBA  (Прочитано 174928 раз)

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

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #30 : 23-08-2016, 00:36:36 »
Сейчас еще сезон отпусков. Да и лишь небольшой процент форумчан использует для разработки VBA (этот раздел на девятом месте по популярности). Так что отклик может быть не так быстро.
Ничего страшного, я и не тороплюсь.
Убеди начинающих программировать под AutoCAD, что из всех вариантов API и языков программирования им следует выбирать VBA.
Согласен, пожалуй, следовало записать урок, почему следует начинать именно с VBA.
Ну и возможно в чем ты видишь его ограниченность - ведь не зря ты "мигрировал" на C# и AutoCAD .NET API.
Про ограниченность VBA только если в видеоуроках по c#.  ;)

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Видеоуроки AutoCAD VBA
« Ответ #31 : 24-08-2016, 11:53:37 »
Обсуждение отделил в отдельную тему: Обсуждение видеоуроков AutoCAD VBA
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Видеоуроки AutoCAD VBA
« Ответ #32 : 24-08-2016, 11:58:25 »
Максим Маркевич, внести исправления в стартовый пост темы - укажи ссылку на обсуждение.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #33 : 24-08-2016, 12:19:25 »
Максим Маркевич, внести исправления в стартовый пост темы - укажи ссылку на обсуждение.
Сделано. Попытался даже немного расклассифицировать, какие вопросы можно поднимать здесь, а какие там.

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #34 : 25-08-2016, 04:50:06 »
Для тех, кто до сих пор не понял, зачем манипулировать блоками AutoCAD при помощи VBA, я подготовил подборочку видео-демонстраций. Делал все это по молодости (около года назад  :D). Возможно, кого-нибудь вдохновит на подвиги.





Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #35 : 01-09-2016, 02:54:06 »
10. Использование документации на примере создания таблицы
В данном видеоуроке поясняется, для чего нужна документация и где ее найти, а также как, например, создать таблицу в VBA при помощи документации (по сути, краткое руководство о том, как найти нужный пример).


Код - Visual Basic [Выбрать]
  1. 'Создание таблицы
  2. Sub Table()    Dim pt(2) As Double
  3.     Dim MyTable As AcadTable
  4.    
  5.     'Вставляем таблицу в чертеж в точку pt(0,0,0)
  6.    Set MyTable = ThisDrawing.ModelSpace.AddTable(pt, 5, 5, 10, 30)
  7.    
  8.     'Двойной клик по "колесику"
  9.    ZoomExtents
  10.  
  11. End Sub

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Видеоуроки AutoCAD VBA
« Ответ #36 : 05-09-2016, 12:58:24 »
Обсуждение начинать или не начинать изучение программирования с BASIC (VBA) перенёс сюда: http://adn-cis.org/forum/index.php?topic=7314.0

В этой теме только видеоуроки AutoCAD VBA

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #37 : 27-09-2016, 00:46:27 »
11. AutoCAD VBA. Достучаться до MathCAD через API
В данном видео рассказывается о том, как считать инфу из Mathcad без буферного Excel (через Mathcad API), о плюсах и минусах данного метода.


Код - Visual Basic [Выбрать]
  1. 'Подключение к MathcadAPI
  2. Sub MathcadAPI()
  3.  
  4.     'Декларируем переменные
  5.    Dim MathAP As Mathcad.Application
  6.     Dim MathWs As Mathcad.Worksheets
  7.     Dim MathW As Mathcad.Worksheet
  8.    
  9.     'Устанавливаем переменные
  10.    Set MathAP = CreateObject("Mathcad.Application")
  11.     MathAP.Visible = True
  12.     Set MathWs = MathAP.Worksheets
  13.     Set MathW = MathWs.Open("m:\mathcad.xmcd")
  14.    
  15.     'Считываем переменные из Mathcad
  16.    a = MathW.GetValue("a")
  17.     b = MathW.GetValue("b")
  18.        
  19.     'Выводим переменные для проверки
  20.    MsgBox "a=" & a & "   " & "b=" & b
  21.        
  22. End Sub

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #38 : 28-09-2016, 11:11:52 »
12. AutoCAD VBA. Стоит ли начинать программирование с VBA
В видео собраны плюсы и минусы, которые я вижу при работе с VBA. Также упомянута мысль, которая обсуждалась вот здесь. По сути, предоставлена пища для ума и выбора, а также высказано личное мнение.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Видеоуроки AutoCAD VBA
« Ответ #39 : 28-09-2016, 13:08:23 »
По части минусов, в качестве информации к размышлению, довожу до сведения свой печальный опыт использования VBA...

Главная причина, по которой я когда-то ушёл с VBA заключалась в том, что в какой-то момент времени я не смог полноценно продолжать развивать свой проект, написанный на VBA под MS Access 2003-2007. Расскажу поподробней...

Созданный когда-то мною проект представлял собой набор файлов MS Access, разделённых на клиентскую и серверную части. Клиентские представляли собой набор визуальных интерфейсов для работы с контентом, хранящимся в базе данных. Эти клиентские файлы находились на машинках пользователей. На сервере лежал основной файл, хранящий в себе базу данных. Программка задумывалась как приложение, позволяющее вести весь процесс строительства (компания занималась ремонтом как зданий, так и отдельных квартир) с нуля до сдачи под ключ. За пару лет в этом приложении (монолитом) было реализовано следующее:
1. Создана сметная программа, со своей базой данных по различным механизмам, оборудованию, материалам, перечням работ, расченками с привязкой по месяцам и коэффициентам перерасчёта.
2. Смету всегда можно было экспортировать в MS Excel. При этом все ячейки документа содержали в себе формулы, группировки строк и столбцов, а так же дополнительные листы с выборкой всех материалов и механизмов.
3. На основании сметы в программе можно был создавать формы КС-2 и КС-3 (выполнение), а так же акты приёмки работ. Результат так же экспортировался в Excel с полным набором формул, с дополнительными листами, содержащими материалы и механизмы, задействованные в ходе этого выполнения (по аналогии со сметами).
4. В программе присутствовал контроль того, чтобы не было превышения объемов работ и перерасходов материала. Если такое превышение или перерасход требовались, то в проге создавалась заявка руководству о необходимости такого превышения и оно обосновывалось. Заявка попадала руководству (которое так же пользовалось клиентом приложения) и в случае одобрения (руководство жало на кнопку "одобрить") формировался акт о перерасходе и можно было на указанный объём превышать затраты материалов (или объём работ).
5. В той же программе, после того, как смета была создана, она сначала попадала в отдел снабжения, который проверял адекватность единичных расценок по каждой позиции сметы (т.к. именно снабженец потом закупает материалы). Если все расценки, указанные в смете, соответствуют реальным, то снабженец жал кнопку "одобрено" и смета далее летела по сети к руководству. Руководство смотрело смету и одобряло либо забраковывало её (отправляло на доработку). Формы кс-2 и кс-3 программа разрешала создавать только после одобрения руководством исходной сметы. Ежели снабженец находил в смете расценки, с которыми не был согласен, то он выдавал свои замечания, помечая свой вариант расценки и отправлял это обратно, на доработку в сметный отдел.

По ходу развития проекта, мне время от времени нужно было вносить изменения в исходный код VBA, что-то изменяя или, как правило, добавляя новый функционал, о котором просили пользователи. Так же приходилось вносить правки в графический интерфейс, т.е. в формочки (диалоговые окна), на которых находились визуальные контролы, такие как кнопки, списки, текстовые поля, чекбоксы и т.п.

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

С некоторых пор я заметил следующее:

В редакторе VBA, если я пытался поставить курсор мышки в конкретном диапазоне строк исходного кода в конкретном модуле, то я получал аварийное завершение MS Access. Т.е. у меня в коде были такие места, которые я в дальнейшем не мог править, т.к. банальная попытка установить курсор на строку кода, подлежащую редактированию, приводило к краху MS Access. Похожая ситуация вдруг появилась в некоторых редакторах форм: попытка подвинуть какой-то контрол (драг-дропом) или изменить его размер, так же приводило к аварийному завершению  MS Access. Т.е. это происходило не везде, но только в определённых местах и всегда (с некоторых пор).

Сначала у меня появилось таких "артефактов" два (где-то через пару лет после создания проекта). Я просто запомнил эти проблемные места и в дальнейшем старался избегать их. Но со временем я заметил, что подобные "артефакты" стали появляться и в др. местах (причём очень важных), где не столь давно их не было... Я не понимал в чём дело, пытался выполнять экспорт клиентов и сервера и сохранять в др. версии MS Access, но обозначенные проблемы не исчезали. Я полагаю, что это был какой-то баг не самого VBA, но баг редактора VBA, который был встроен в MS Access. А поскольку в др приложениях используются тот же самый редактор VBA, то существует опасность того, что подобное поведение я могу словить и при программировании на VBA в др. продуктах, таких как MS Office. Я долго искал решение обозначенной мною выше проблемы на различных форумах, но так и не нашёл его.

Это была серьёзная проблема, т.к. программа уже по полной использовалась в компании. Нельзя было просто взять и выбросить её в ведро, т.к. слишком много на ней уже было завязано. Оставалось только продолжать использовать её в том виде, в котором она была на тот момент, прекратив её развитие. Для меня это был весьма ощутимый удар, т.к. в эту программу я вложил очень много сил. Собственно всё это было разработано мною в одиночку... И тут такой "сюрприз" оттуда, откуда не ждал...

Стало совершенно очевидно, что в виду обозначенных выше проблем продолжать развивать приложение в MS Acces не имеет смысла. Редактор VBA работает как чёрный ящик. Я не мог заглянуть в него, дабы понять в чём дело. Нужно было переходить на что-то более открытое и безопасное, где подобные грабли не могли бы возникнуть. Т.е. нужно переходить на что-то такое, где я бы имел возможность открывать свои исходники в банальном текстовом редакторе (при необходимости) и вносить в него правки. Для себя я решил, что больше никогда не буду писать на VBA что-то сложное, да и вообще, по возможности буду стараться избегать писать на нём, дабы избежать появления обозначенных выше проблем.

Я пошёл к руководству, рассказал о проблеме и предложил оставить текущую версию как есть и начать писать др. автономную программу, не являющуюся надстройкой над MS Access. Руководство дало добро.

В то время, помимо VBA, я имел лишь небольшой опыт работы с AutoLISP (даже не Visual LISP). Поэтому такие слова как C, C++, .NET, C# и т.п. мне мало о чём говорили. Я знал только то, что C и C++ "очень сложные языки, на изучение которых потребуется порядочно времени и сил".

В то время я думал, что ".net" - это что-то связанное с сетью. Но погуглив узнал, что это не так. Так же почитал в интернете, что изучать какой-нибудь .net-язык гораздо проще, чем изучать C\C++. Я так же прочитал, что многие программисты из существовавших на тот момент .net-языков предпочтение отдавали C#. Поэтому я стал выбирать между VB.NET и C#. Я так же видел, что книг и статей с примерами кода гораздо больше по C#, чем по VB.NET. Кроме того, посмотрев примеры кода VB.NET я сделал для себя вывод, что это совершенно др. язык (ибо кода я не понял), отличный от VBA и имеющий с ним лишь некоторое синтаксическое сходство. После того, как я один вечер почитал основы по C#, я понял, что его синтаксис мне нравится гораздо больше, чем синтаксис VBA и VB.NET (это помимо того, что обучающих мануалов по C# было так же значительно больше чем по VB.NET). Так я принял решение, что уходить с VBA буду на C#.

Затем в нашей стране наступил кризис. У компании возникли существенные проблемы с заказами и она стала разваливаться (там уже руководству было не до моих программ)...

Потом я наблюдал метания автодеска - то "срочно уходите с vba", то "можете ещё некоторое время посидеть на vba", что так же не было плюсом в копилку VBA...

Вот таким был мой печальный опыт использования VBA.

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Видеоуроки AutoCAD VBA
« Ответ #40 : 14-10-2016, 12:54:19 »
расскажи про AcFocusCtrl.dll

Оффлайн RedAlex

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Re: Видеоуроки AutoCAD VBA
« Ответ #41 : 16-10-2016, 08:00:34 »
Добрый день,

Пытаюсь повторить ваш урок:
&index=2

После того как ввожу "Dim AP As Excel"  и ставлю точку, не возникает предложение завершить "Application", набрав вручную текст, после F5, сообщается ошибка: User-defined type not defined, как исправить данную ошибку?

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #42 : 16-10-2016, 10:47:48 »
RedAlex, привет! Там необходимо добавить ссылку (см. пост).

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #43 : 16-10-2016, 10:50:28 »
расскажи про AcFocusCtrl.dll
Я почти не работал с Windows Forms в VBA.
А что тебя, конкретно, интересует? Работа с немодальными окнами?

Оффлайн Максим МаркевичАвтор темы

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Re: Видеоуроки AutoCAD VBA
« Ответ #44 : 17-10-2016, 14:37:24 »
13. AutoCAD VBA. Печать форматов
Данный урок является предисловием к трем последующим и демонстрирует варианты печати в AutoCAD при помощи VBA.