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

ADN Club => AutoCAD .NET API => Тема начата: bargool от 19-01-2015, 11:30:39

Название: Контроль открытия файла при запуске автокада
Отправлено: bargool от 19-01-2015, 11:30:39
Мне нужно произвести некие действия перед началом открытия файла, и при окончании открытия (например, замерить время открытия разных файлов)
Вроде всё здорово. Подписался на
DocumentManager.DocumentCreateStarted и DocumentManager.DocumentCreatedв
IExtensionApplication.InitializeБиблиотека прописана в реестре, LOADCTRLS = 2. Но по факту грузится она уже после создания первого документа.
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?

Совсем забыл: Автокады 2013 и 2014
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Александр Ривилис от 19-01-2015, 15:29:35
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?
Нет.
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: trir от 19-01-2015, 16:04:00
А если через COM? ...?
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Александр Ривилис от 19-01-2015, 16:09:27
А если через COM? ...?
Не понял при чем здесь COM.
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: trir от 19-01-2015, 16:14:40
Цитировать
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?

Может получится через .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

Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Александр Ривилис от 19-01-2015, 16:21:42
1) Вопрос был про .NET, а не про VBA.
2) Сильно я сомневаюсь, что DVB грузится до открытия первого чертежа.
Тут ведь есть особенность в запуске AutoCAD. Он может быть запущен или сам по себе (впрочем через параметры может быть задано имя dwg-файла) или кликом по имени файла. Сценарии получаются разные. И в разных версиях AutoCAD тоже не всё одинаково.
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: bargool от 19-01-2015, 16:24:18
Тут ведь есть особенность в запуске AutoCAD. Он может быть запущен или сам по себе (впрочем через параметры может быть задано имя dwg-файла) или кликом по имени файла. Сценарии получаются разные. И в разных версиях AutoCAD тоже не всё одинаково.
Вот меня интересует как раз второй сценарий. Если можно отслеживать из внешнего приложения - напишу внешнее (если это не слишком сложно - если сложно, то овчинка выделки не стоит)
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Александр Ривилис от 19-01-2015, 16:42:48
овчинка выделки не стоит
Вот это скорее всего. Из внешнего приложения ты скорее (не используя вообще никакие AutoCAD API) можешь отследить когда открывались и закрывались dwg-файлы. Но это уже к программированию под AutoCAD никакого отношения не имеет.

Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Doublefish от 20-01-2015, 11:50:04
На сколько я помню если автокад открыт, то работают события beginopen и endopen, если автокад загружается впервые двойным нажатием по файлу, то эти события не срабатывают, поэтому приходится определять, что происходит именно первый запуск автокада например через событие DocumentBecameCurrent и выполнять свои действия.
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: bargool от 21-01-2015, 09:50:31
На сколько я помню если автокад открыт, то работают события beginopen и endopen, если автокад загружается впервые двойным нажатием по файлу, то эти события не срабатывают, поэтому приходится определять, что происходит именно первый запуск автокада например через событие DocumentBecameCurrent и выполнять свои действия.
Не срабатывает потому, как:
Есть ли способ гарантировать, что библиотека загрузится и начнёт работать до первого созданного документа?
Нет.
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Андрей Бушман от 21-01-2015, 12:09:22
например, замерить время открытия разных файлов
команда _time

UPD а млин... тебе нужно время открытия... Если не секрет, зачем тебе это?
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: bargool от 21-01-2015, 12:16:36
UPD а млин... тебе нужно время открытия... Если не секрет, зачем тебе это?
У нас проблемы с сетью. Все рабочие файлы лежат на удалённом сервере. Собираем статистику для того, что бы с цифрами в руках выбивать деньги на локальный сервак.
Название: Re: Контроль открытия файла при запуске автокада
Отправлено: Андрей Бушман от 21-01-2015, 12:35:13
Все рабочие файлы лежат на удалённом сервере.
На удалённом... :) Сразу вспомнилось это (http://www.meetup.com/3D4WEB/events/219884022/#event-comments-section).