Сообщество программистов Autodesk в СНГ

ADN Club => VBA => Тема начата: AndONE от 28-11-2017, 10:59:57

Название: Передать в макрос параметры
Отправлено: AndONE от 28-11-2017, 10:59:57
Добрый день! Пишу программу в 1С и решил глючные моменты обходить с помощью запуска макросов, написанных на VBA. Это работает, но вопрос в том, есть ли возможность передавать в макрос какие-либо параметры (например длину или координаты)?
Код - Visual Basic [Выбрать]
  1. Sub Example_RunMacro()
  2.     ' Этот пример загружает DVB файл и выполняет макрокоманду,
  3.    ' содержавшуюся в файле, используя RunMacro метод.
  4.    '
  5.    ' Этот пример использует DVB файл drawline.dvb.
  6.    ' Вы должны изменить пример, чтобы использовать файл на вашем компьютере.
  7.    '
  8.    ' * Примечание: Если Вы открываете DVB файл и затем выполняете пример,
  9.    ' чтобы загрузить его, будет ошибка, при попытке выгрузить файл.
  10.  
  11.     Dim FileName As String
  12.    
  13.     FileName = "c:\drawline.dvb"
  14.    
  15.     ' Загрузить VBA DVB файл
  16.    LoadDVB FileName
  17.    
  18.     ' Выполнить drawline макроc
  19.    RunMacro "Module1.Drawline"
  20.    
  21.     ' Выгрузитесь drawline VBA DVB файл после выполнения
  22.    UnloadDVB FileName
  23.    
  24.     MsgBox "DVB файл был выполнен! "
  25.  
  26. End Sub
  27.  

Исходя из стандартного примера создается впечатление, что нельзя(
Название: Re: Передать в макрос параметры
Отправлено: Александр Ривилис от 28-11-2017, 16:36:36
1. Прочитай у меня в подписи о правилах форматирования кода у нас на форуме и в дальнейшем соблюдай их.
2. Параметры в таком виде передавать действительно нельзя, но что мешает передавать их через глобальные переменные?
Название: Re: Передать в макрос параметры
Отправлено: AndONE от 28-11-2017, 18:08:33
1.Прочитал, видео посмотрел.
2. Можете привести какой-нибудь простенький пример? Как мои глобальные переменные в 1С могут попасть в исполняемый макрос .dvb?
Название: Re: Передать в макрос параметры
Отправлено: Александр Ривилис от 28-11-2017, 18:11:37
Я видимо чего-то не понял. Вы из 1C управляете AutoCAD'ом через COM-модель? Зачем вам вообще DVB-файлы если вы можете управлять напрямую?!
Название: Re: Передать в макрос параметры
Отправлено: AndONE от 28-11-2017, 20:48:52
Все правильно поняли. Потому что некоторые команды из под 1С не работают. Например команда "область". Чтобы ее сделать необходимо собрать массив из замкнутых кривых. Так вот при его передаче при COM соединении вылезает ошибка, что не верный массив данных. Только из-за этого.
Сейчас я танцую с бубном. Прикидываю координаты замкнутой области и выделяю их через SENDCOMMAND, но работает хоть и сносно, но не практично.
Если скину Вам код ошибки из 1С чем-нибудь сможете помочь?
Название: Re: Передать в макрос параметры
Отправлено: Александр Ривилис от 28-11-2017, 21:01:07
Если скину Вам код ошибки из 1С чем-нибудь сможете помочь?
Нет. Для 1C и на VBA я не пишу.
Но я вижу, что из VBA для Excel проблемы создания области (Region) нет. Так что если 1C поддерживает VBA, то теоретически тоже должно работать.
Название: Re: Передать в макрос параметры
Отправлено: trir от 29-11-2017, 09:57:11
проще с массивом разобратся (https://forum.dwg.ru/showthread.php?t=115170)