Проблема c Autodesk.Autocad.Interop.AcadApplication...

Автор Тема: Проблема c Autodesk.Autocad.Interop.AcadApplication...  (Прочитано 7719 раз)

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
<loadFromRemoteSources enabled="true"/> вставил в файл acad.exe.config и dll-ка прошла!

Теперь другая проблема.

Проблема c Autodesk.Autocad.Interop.AcadApplication... Не знаю с чего начать!

Попробую подробно описать свою проблему и желание:

1. Работаю с AutoCAD 2014
2. Пишу dll-ку на Visual Basic 2013
3. Создал проект для перенастройки листов чертежа с физических принтеров на принтер DWG_To_PDF.pc3
4. Свой код я писал под библиотеку Autodesk.Autocad.Interop

Код - vb.net [Выбрать]
  1.         <CommandMethod("ReconfigurerLayoutsToPDF")> _
  2.         Public Sub ReconfigurerLayoutsToPDF()
  3.             Dim acAppComObj As AcadApplication
  4.  
  5.             Dim strProgId As String = "AutoCAD.Application"
  6.             On Error Resume Next
  7.             ' Получаем текущий процесс Автокада для текущего чертежа!
  8.             acAppComObj = GetObject(, strProgId)
  9.             ' Если в результате соединения с Автокадом произошла ошибка, тогда пытаемся подключить новый объект
  10.             If Err.Number > 0 Then
  11.                 Err.Clear()
  12.                 On Error Resume Next
  13.                 acAppComObj = CreateObject(strProgId)
  14.                 If Err.Number > 0 Then
  15.                     Err.Clear()
  16.                     Msgbox "Увы, ничего не произойдет!"
  17.                     Exit Sub
  18.                 End If
  19.  
  20.                 Exit Sub
  21.             End If
  22.  
  23.             Dim acDocComObj As AcadDocument
  24.             acDocComObj = acAppComObj.ActiveDocument
  25.             ...
  26.              ' Здесь процедура перенастраивания с физических принтеров на принтер PDF
  27.            Dim i as Long
  28.  
  29.            For i = 0 To acDocComObj.Layouts.Count - 1
  30.                     Select Case acDocComObj.Layouts.Item(i).Name
  31.                          Case Is <> "Model", "Модель"
  32.                          ' Здесь большой код и т.д.
  33.                      End Select
  34.             Next i
  35.             ...
  36.  
  37.         End Sub

5. Была загвоздка с подключением dll-ки на другой компьютер (AutoCAD 2014, Windows XP)
6. Устранил проблему с помощью изменения файла acad.exe.config в папке, в которой находится файл acad.exe
7. dll-ка подключается, НО возникла ситуация, что процедура не работает, потому что идет отработка ошибки, которая приводит меня на строку

Код - vb.net [Выбрать]
  1. Msgbox "Увы, ничего не произойдет!"

8. Как бы это объяснить проще: Я раньше работал с VBA / ActiveX AutoCAD 2014 и пользовался всей простой подключения к текущему чертежу без проблем. А в данном случае я, как бы, подключаюсь к AutoCAD с помощью библиотеки, НО по умолчанию библиотека не знает какие сейчас текущие приложение и документ! Мне нужно найти очень простой способ определить какое сейчас текущее приложение пользуется моей dll-кой, а также какой сейчас текущий документ, чтобы процедура смогла отработать как надо именно для данного чертежа!
9. Как я понимаю, на компьютере с операционной системой Windows XP получение текущих приложения и документа не произошло, поэтому моя процедура заканчивается сообщением:

Код - vb.net [Выбрать]
  1. Msgbox "Увы, ничего не произойдет!"






« Последнее редактирование: 21-08-2015, 08:52:51 от Пашин Евгений »

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #1 : 21-08-2015, 08:30:04 »
Ещё раз. Последний. Для каждого нового (несвязанного напрямую с предыдущим) вопроса создавай новую тему в правильном разделе!

Для создания новой темы:


« Последнее редактирование: 21-08-2015, 19:40:16 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #2 : 21-08-2015, 08:31:25 »
Проблема c Autodesk.Autocad.Interop.AcadApplication... Не знаю с чего начать!
Где проблема? Ничего не понял. Объясняй пожалуйста четко и понятно. Если нужно, то с кодом, картинками, видео.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #3 : 21-08-2015, 08:47:29 »
У меня нет волшебной кнопки НОВАЯ ТЕМА!
Проблему, как смог, уточнил )


Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #4 : 21-08-2015, 08:56:09 »

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #5 : 21-08-2015, 08:56:30 »
У меня нет волшебной кнопки НОВАЯ ТЕМА!
Есть. Смотри внимательно это видео:

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #6 : 21-08-2015, 09:00:00 »
Спасибо за видео :)

Извиняюсь за глупость, но я на форуме первые два дня и к сожалению не знаю, где что лежит ...

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #7 : 21-08-2015, 09:00:43 »
Читай: http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-BFFF308E-CC10-4C56-A81E-C15FB300EB70
Результат:
Код - vb.net [Выбрать]
  1. Dim acAppComObj As AcadApplication
  2. acAppComObj = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #8 : 21-08-2015, 09:05:47 »
Сделал:

Код - vb.net [Выбрать]
  1.             Dim acAppComObj As AcadApplication
  2.  
  3.             acAppComObj = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
  4.  
  5.             Dim acDocComObj As AcadDocument
  6.             acDocComObj = acAppComObj.ActiveDocument

Результат:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: Empty file name is not legal.
Parameter name: sourceFileName
   at System.IO.File.Copy(String sourceFileName, String destFileName)
   at ACAD_NET_PDF.ACADPDF.Gallurgy_Transfer_Layouts_To_PDF_Printer.ReconfigurerLayoutsToPDF() in D:\Пашин\Visual Studio 2013\Projects\ACAD_NET_PDF\ACAD_NET_PDF\ACADPDF.vb:line 67
   at Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo mi, Object commandObject, Boolean bLispFunction)
   at Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction)
   at Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction)
   at Autodesk.AutoCAD.Runtime.CommandClass.CommandThunk.Invoke()








Как я понял он указывает на ошибку на 67 строке:

Код - vb.net [Выбрать]
  1. IO.File.Copy(acAppComObj.ActiveDocument.FullName, Environ("TEMP") & "\" & _
  2.                                                                       IO.Path.GetFileNameWithoutExtension(acAppComObj.ActiveDocument.FullName) & "_copy.dwg")

То есть моя процедура перед внесением изменений сохраняет копию файла в папке Temp!
Но получается, что эта строка и создает сбой!

Закомментировал - и заработало!

А как же теперь быть с созданием копии?


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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #9 : 21-08-2015, 09:08:03 »
Тебе же четко указали, что ошибка в строке 67:
at ACAD_NET_PDF.ACADPDF.Gallurgy_Transfer_Layouts_To_PDF_Printer.ReconfigurerLayoutsToPDF() in D:\Пашин\Visual Studio 2013\Projects\ACAD_NET_PDF\ACAD_NET_PDF\ACADPDF.vb:line 67
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #10 : 21-08-2015, 09:14:25 »
Я это понял, но неужели теперь нужно создавать новую тему о создании копии файла? Понимаю, что это уже проблема не этого форума! Хотя это странно, что простое создание копии теперь не срабатывает.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #11 : 21-08-2015, 09:39:57 »
Александр, Вы были правы!

Несохраненный файл dwg не может быть скопирован. После сохранения файла этой ошибки нет. Поставил обработку ошибки и все как по маслу.

Но у меня теперь другая проблема ))) Я уже создал по данной проблеме НОВУЮ ТЕМУ и теперь не знаю, что с ней делать? )))))

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема c Autodesk.Autocad.Interop.AcadApplication...
« Ответ #12 : 21-08-2015, 09:41:48 »
Но у меня теперь другая проблема ))) Я уже создал по данной проблеме НОВУЮ ТЕМУ и теперь не знаю, что с ней делать? )))))
Всё нормально. Напиши в ней, что ответ найден и в чем он заключается.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение