Контроль открытия файла при запуске автокада

Автор Тема: Контроль открытия файла при запуске автокада  (Прочитано 9533 раз)

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

Оффлайн bargoolАвтор темы

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Мне нужно произвести некие действия перед началом открытия файла, и при окончании открытия (например, замерить время открытия разных файлов)
Вроде всё здорово. Подписался на
DocumentManager.DocumentCreateStarted и DocumentManager.DocumentCreatedв
IExtensionApplication.InitializeБиблиотека прописана в реестре, LOADCTRLS = 2. Но по факту грузится она уже после создания первого документа.
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?

Совсем забыл: Автокады 2013 и 2014
« Последнее редактирование: 19-01-2015, 15:34:14 от Александр Ривилис »
Алексей

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

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

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
А если через COM? ...?

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

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

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Цитировать
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?

Может получится через .dvb?
Public WithEvents ACADApp As AcadApplication    ' Use with Application Event Examples
Sub Example_AcadApplication_Events()
    ' This example intializes the public variable (ACADApp) which will be used
    ' to intercept AcadApplication Events
    '
    ' The VBA WithEvents statement makes it possible to intercept an generic object
    ' with the events associated with that object.
    '
    ' Before you will be able to trigger any of the AcadApplication events,
    ' you will first need to run this procedure.
   
    ' We could get the application from the ThisDocument object, but that would
    ' require having a drawing open, so we grab it from the system.
    Set ACADApp = GetObject(, "AutoCAD.Application.20")
End Sub

Private Sub ACADApp_BeginOpen(FileName As String)
    ' This example intercepts an Application BeginOpen event.
    '
    ' This event is triggered when a drawing is opened by AutoCAD.
    '
    ' To trigger this example event:
    '     1) Make sure to run the example that initializes
    '     the public variable (named ACADApp) linked to this event.
    '
    '     2) Use AutoCAD to open an existing drawing

    ' Use the "FileName" variable to determine which drawing file is being opened
    MsgBox "A drawing is about to be loaded from: " & FileName
End Sub


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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
1) Вопрос был про .NET, а не про VBA.
2) Сильно я сомневаюсь, что DVB грузится до открытия первого чертежа.
Тут ведь есть особенность в запуске AutoCAD. Он может быть запущен или сам по себе (впрочем через параметры может быть задано имя dwg-файла) или кликом по имени файла. Сценарии получаются разные. И в разных версиях AutoCAD тоже не всё одинаково.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн bargoolАвтор темы

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Тут ведь есть особенность в запуске AutoCAD. Он может быть запущен или сам по себе (впрочем через параметры может быть задано имя dwg-файла) или кликом по имени файла. Сценарии получаются разные. И в разных версиях AutoCAD тоже не всё одинаково.
Вот меня интересует как раз второй сценарий. Если можно отслеживать из внешнего приложения - напишу внешнее (если это не слишком сложно - если сложно, то овчинка выделки не стоит)
Алексей

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
овчинка выделки не стоит
Вот это скорее всего. Из внешнего приложения ты скорее (не используя вообще никакие AutoCAD API) можешь отследить когда открывались и закрывались dwg-файлы. Но это уже к программированию под AutoCAD никакого отношения не имеет.

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

Оффлайн Doublefish

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
На сколько я помню если автокад открыт, то работают события beginopen и endopen, если автокад загружается впервые двойным нажатием по файлу, то эти события не срабатывают, поэтому приходится определять, что происходит именно первый запуск автокада например через событие DocumentBecameCurrent и выполнять свои действия.

Оффлайн bargoolАвтор темы

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
На сколько я помню если автокад открыт, то работают события beginopen и endopen, если автокад загружается впервые двойным нажатием по файлу, то эти события не срабатывают, поэтому приходится определять, что происходит именно первый запуск автокада например через событие DocumentBecameCurrent и выполнять свои действия.
Не срабатывает потому, как:
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?
Нет.
Алексей

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
например, замерить время открытия разных файлов
команда _time

UPD а млин... тебе нужно время открытия... Если не секрет, зачем тебе это?

Оффлайн bargoolАвтор темы

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
UPD а млин... тебе нужно время открытия... Если не секрет, зачем тебе это?
У нас проблемы с сетью. Все рабочие файлы лежат на удалённом сервере. Собираем статистику для того, что бы с цифрами в руках выбивать деньги на локальный сервак.
Алексей

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Все рабочие файлы лежат на удалённом сервере.
На удалённом... :) Сразу вспомнилось это.