Отключить выполнение команд повешенных на AcadDocument_Activate()
Реклама i
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отключить выполнение команд повешенных на AcadDocument_Activate()

Отключить выполнение команд повешенных на AcadDocument_Activate()

Ответ
Поиск в этой теме
Непрочитано 20.05.2011, 09:44 #1
Отключить выполнение команд повешенных на AcadDocument_Activate()
Ольга_DG
 
Регистрация: 20.05.2011
Сообщений: 10

Здравствуйте!
Я написала программу, которой в качестве исходных данных вводится папка, из которой она берет файлы, открывает их по чтению и считывает нужные данные и записывает в xml-файл. Но попадаются файлы, на которых она останавливается. В этих файлах прописан код при открытии AcadDocument_Activate. Что нужно сделать чтобы она не останавливалась?
Может существуют какие системные переменные AutoCADa которые отключат выполнение макроса при отрытии файла? Подскажите пожалуйста!

ПРИМЕР КОДА

Private Sub AcadDocument_Activate()
Dim VBEModel As Object
Dim i As Integer
Dim bLoad As Boolean
Dim FileName As String
bLoad = True
FileName = Application.Preferences.Files.TemplateDwgPath & "\AcadMirage.dvb"
Set VBEModel = VBE
For i = 1 To VBEModel.VBProjects.Count
If StrComp(VBEModel.VBProjects(i).Name, "ACADMirage", vbTextCompare) = 0 Then
bLoad = False
Exit For
End If
Next i
If bLoad Then LoadDVB FileName
Application.RunMacro VBEModel.VBProjects(i).Name + ".Mirage.MenuMirage"
End Sub

Этот код выполняется при открытии файла. КАК избавится от его выполнения?

Последний раз редактировалось Ольга_DG, 20.05.2011 в 10:45. Причина: изменения
Просмотров: 8443
 
Непрочитано 20.05.2011, 10:00
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Лично я ничего не понял - какие файлы, на чем программа, где там код, что Вы подразумеваете под "открывает их по чтению". Если не нужно запускать макросы по открытию - просто отключите их - но как это связанно со всем вышесказанном - давайте больше конкретики.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 20.05.2011, 10:10
#3
Ольга_DG


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


Есть папка я из нее открываю файлы в автоматическом режиме. На некоторых она останавливается. На этих файлах прописан код на открытие.
Пример:
Private Sub AcadDocument_Activate()
Dim VBEModel As Object
Dim i As Integer
Dim bLoad As Boolean
Dim FileName As String
bLoad = True
FileName = Application.Preferences.Files.TemplateDwgPath & "\AcadMirage.dvb"
Set VBEModel = VBE
For i = 1 To VBEModel.VBProjects.Count
If StrComp(VBEModel.VBProjects(i).Name, "ACADMirage", vbTextCompare) = 0 Then
bLoad = False
Exit For
End If
Next i
If bLoad Then LoadDVB FileName
Application.RunMacro VBEModel.VBProjects(i).Name + ".Mirage.MenuMirage"
End Sub

Как сделать чтобы он не выполнялся?
Ольга_DG вне форума  
 
Непрочитано 20.05.2011, 10:13
#4
hwd

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


Цитата:
Сообщение от Ольга_DG Посмотреть сообщение
В этих файлах прописан код при открытии AcadDocument_Activate.
Пример такого файла в студию.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 20.05.2011, 10:24
#5
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от hwd Посмотреть сообщение
Пример такого файла в студию.
Я ж говорю - что за файлы - может программа с папкой "лиспов" или dll 'ок работает.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.05.2011, 10:33
#6
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я ж говорю - что за файлы - может программа с папкой "лиспов" или dll 'ок работает.
Увидим, если топикстартер выложит... Обозначенное выше событие происходит при активации dwg-чертежей, а не при подгрузке lsp/dll-файлов, поэтому тут нужно по месту смотреть в чём дело.... Кстати, возможно, что у неё на это событие уже подписан некий код, который при открытии определённых файлов что-то в них делает...

п.с. Топикстартер, язык (предполагаю, что VBA) и версию автокада будем по фотографии угадывать?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 20.05.2011 в 10:41.
hwd вне форума  
 
Непрочитано 20.05.2011, 10:58
#7
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Как сделать чтобы он не выполнялся?
Полный ахтунг. У Вас написан макрос и не нужно чтоб он выполнялся - ну так уберите его, если нужно чтобы выполнялся но только на некоторых - поставтье проверку (на "нужность") в начале макроса.
p.s. Посты автора не сразу появляются (в прошлый раз я видел #4 но #3 еще не было) - это глюк или предмодерация?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.05.2011, 11:12
#8
hwd

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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
в прошлый раз я видел #4 но #3 еще не было
аналогично. Топикстартер, если добавляете код, то делайте это уже в след. сообщении (а не в первом), чтобы логика диалога соблюдалась. И код оформляйте тэгами, как полагается, а не сваливайте всё подряд.

Цитата:
Как сделать чтобы он не выполнялся?
Я шнурки зашнуровываю, как сделать, чтобы они не зашнуровывались? Ответ прост: не зашнуровывать шнурки!
Цитата:
Полный ахтунг
+1
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 20.05.2011 в 11:18.
hwd вне форума  
 
Автор темы   Непрочитано 20.05.2011, 11:31
#9
Ольга_DG


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


дело в том, что в папке 1000 файлов и чтобы найти и удалить код их нужно их все открывать или смотреть висит ли на них какой нить код. Как программно проверить что висит код на открытие?
Ольга_DG вне форума  
 
Непрочитано 20.05.2011, 11:35
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Если мы говорим про *.dwg файлы, то уверяю Вас ни в одном из них кода нет - он там форматом не предусмотрен.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.05.2011, 11:37
#11
hwd

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


Цитата:
Сообщение от Ольга_DG Посмотреть сообщение
дело в том, что в папке 1000 файлов и чтобы найти и удалить код их нужно их все открывать или смотреть висит ли на них какой нить код. Как программно проверить что висит код на открытие?
А разве при использовании VBA код хранится непосредственно в dwg-файле, а не подгружается из внешнего dvb-файла?
п.с. на сервере dwg.ru наблюдаются какие-то тормоза... предыдущее сообщение Дима_ у меня отобразилось не сразу, а после публикации моего...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 20.05.2011, 11:42
#12
Сергей Богатов


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


Цитата:
Дима_
Если мы говорим про *.dwg файлы, то уверяю Вас ни в одном из них кода нет - он там форматом не предусмотрен.
Цитата:
Сообщение от hwd Посмотреть сообщение
А разве при использовании VBA код хранится непосредственно в dwg-файле, а не подгружается из внешнего dvb-файла?
Есть внешние проекты *.dvb , а есть локальные - они внутри зашиты нажми "Embed" и он станет вшитым
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 20.05.2011, 11:49
#13
Ольга_DG


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


иногда некоторые программисты вешают код на открытие файла это есть и в Excel и в Word. Тут аналогичная ситуация с файлом dwg. это кажется везде предусмотрено где есть встроенный VBA. могу прислать файлик кому-нить на мыло. если не верите увидите!

Последний раз редактировалось Ольга_DG, 20.05.2011 в 11:53. Причина: добавление
Ольга_DG вне форума  
 
Непрочитано 20.05.2011, 11:52
#14
hwd

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


В таком случае можно не открывать документ, а сразу считывать его Database и уже из него тянуть нужную информацию.
На мыло ничего высылать не нужно - прикрепляйте его к сообщению.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 20.05.2011, 12:00
#15
Ольга_DG


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




приведите пример как это следует сделать?
Ольга_DG вне форума  
 
Непрочитано 20.05.2011, 12:07
#16
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Выложите сюда пожалуйста такой .dwg файл при открытии которого будет вплывать окно - "Дима_ чайник - учи VB."
p.s. Вложить можно нажав "скрепку".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.05.2011, 12:28
#17
hwd

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


Цитата:
Сообщение от Ольга_DG Посмотреть сообщение
приведите пример как это следует сделать?
Тынц.
По вашему вопросу будет интересен фрагмент кода:
Код:
[Выделить все]
...
Database sourceDb = new Database(false, true);
...
// Read the DWG into a side database
        sourceDb.ReadDwgFile(sourceFileName.StringResult,
                            System.IO.FileShare.Read,
                            true,
                            "");
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 20.05.2011, 12:31
#18
Ольга_DG


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


выкладвыаю файл
Вложения
Тип файла: dwg
DWG 2004
10191_085_r2.dwg (72.4 Кб, 742 просмотров)
Ольга_DG вне форума  
 
Непрочитано 20.05.2011, 12:33
#19
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


запустил - открылся как обычный файл (попробуйте сами на другой машине).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.05.2011, 13:12
#20
Сергей Богатов


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


я так понимаю что файлы не "ваши" и здесь Application.Preferences.Files.TemplateDwgPath\ нет этого файла-проекта AcadMirage.dvb ?
Предлагаю создать проектик AcadMirage.dvb по нужному пути Application.Preferences.Files.TemplateDwgPath в нём создать макрос пустышку "MenuMirage"
Он и будет выполняться давая вашему скрипту(макросу) выполнять свою работу
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отключить выполнение команд повешенных на AcadDocument_Activate()



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что нужно чтобы отключить Отопление в квартире? Колян Отопление 96 30.01.2019 13:58
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Есть ли в Автокаде 2008 клавиша перебора команд, ранее введенных в командной строке? onick AutoCAD 4 13.11.2010 21:25
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Комбинации клавиш для команд в AutoCAD 2006 Artiznov AutoCAD 3 03.03.2006 15:23