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

ADN Club => VBA => Тема начата: Дамир от 22-10-2014, 13:35:03

Название: Не могу открыть приложение AutoCAD в фоне
Отправлено: Дамир от 22-10-2014, 13:35:03
Всем привет!
Вопрос простой. Скриптом открываю AutoCAD. Хочу чтобы приложение работало в фоне. Строку AcadApp.Visible = False  поместил в двух местах. В обоих случаях не работает. AutoCAD открывается, но не в фоне. Прошу помощи
Делаю так:
Код - Visual Basic [Выбрать]
  1. Sub GetCountOfSheets(O)
  2.   set Obj = O
  3.   set Files = Obj.Files
  4.  
  5.   Dim AcadApp, Docs, Doc, Path, CounSheet, CountFile
  6.  
  7.   CountSheet = 0
  8.   CountFile = 0
  9.  
  10.   on error resume next
  11.   set AcadApp = GetObject(,"AutoCAD.Application")
  12.   If Err Then
  13.     Err.Clear
  14.     Set AcadApp = CreateObject("AutoCAD.Application")
  15.   End If
  16.   AcadApp.Visible = False
  17.   'Set AcadApp = GetObject(,"AutoCAD.Application")
  18.  'Set AcadApp = CreateObject("AutoCAD.Application")
  19.  
  20.   Set Docs = AcadApp.Documents
  21.  
  22.   'file.CheckOut file.WorkFileName
  23.  Obj.CheckOut
  24.   for each file in Files
  25.     if Right(file.WorkFileName, 4) = ".dwg" then
  26.       CountFile = CountFile + 1
  27.       path = file.WorkFileName
  28.       set Doc = Docs.Open(path)
  29.       CountSheet = CountSheet + Doc.Layouts.Count
  30.       Doc = nothing
  31.     end if
  32.   next
  33.   AcadApp.Visible = False
  34.   Obj.Attributes("ATTR_SHEET_COUNT_FACT").Value = CountSheet - CountFile
  35.   AcadApp.Quit
  36. end sub
Название: Re: Не могу открыть приложение AutoCAD в фоне
Отправлено: Александр Ривилис от 22-10-2014, 14:36:04
Насколько я помню реального невидимого AutoCAD добиться не получится. Тут и иконки появляются, и Лента и т.д. А открытие новых чертежей это всё усугубляет. Возможно это поразному в разных версиях AutoCAD.
1) Можешь попробовать AcadApp.WindowState = acMin.
2) Можешь попробовать через функцию Windows API с именем ShowWindow, используя AcadApp.HWND в качестве параметра, скрыть окно.
Название: Re: Не могу открыть приложение AutoCAD в фоне
Отправлено: Дамир от 22-10-2014, 14:57:10
Благодарю. Как я понял добиться явного скрытия приложения не получится. Как вижу в диспетчере AutoCAD открывается и среди видимых приложений и в фоне. Причем при закрытии руками видимого AutoCAD фоновые остаются в диспетчере.
Название: Re: Не могу открыть приложение AutoCAD в фоне
Отправлено: Пашин Евгений от 24-08-2015, 11:00:15
Когда Вы сделали CreateObject ("Autocad.Application") приложение запускается в фоне, то есть в диспетчере видно процесс, а само окно не видно. Но ведь и этого должно хватать.

Пока Вы не вызовете AcadApp.Visible=True! Или когда совершите действие, которое по какой-то причине вызовет одно из диалоговых окно приложения, или смену вида. Тогда да, окно появится.

Мало кто лазит в диспетчер, чтобы отследить действие приложений.
Название: Re: Не могу открыть приложение AutoCAD в фоне
Отправлено: Дамир от 24-08-2015, 11:05:45
Дело в том, что после CreateObject ("Autocad.Application") независимо от того, указываю я параметр Visible = True или Visible = False, либо вообще не указываю его. Я всегда получаю активное приложение. Возможно то огрехи машины по работе с COM-объектом, обязательно протестирую на другой.
Название: Re: Не могу открыть приложение AutoCAD в фоне
Отправлено: Пашин Евгений от 24-08-2015, 11:07:43
Это конечно странно, увы, тогда AcadApp.Visible=False - это ваше решение, пока! Найду решение лучше - напишу.
Название: Re: Не могу открыть приложение AutoCAD в фоне
Отправлено: Дамир от 24-08-2015, 11:08:33
Благодарю за участие. Протестирую на иной машине также отпишу о результатах