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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 13-05-2015, 16:07:45

Название: Совместить добавление документа для разный версий AutoCAD
Отправлено: Алексей (IdeaSoft) от 13-05-2015, 16:07:45
Есть алгоритм добавления документа.
Подключая к проекту сборки AutoCAD 2012 и ранее
мне приходится комментировать строку с классом DocumentCollectionExtension, т.к.
этот класс появился в 2013 и более поздних версиях AutoCAD.

Как сделать чтобы компилятор не ругался на класс DocumentCollectionExtension?
Может как-то применить условную компиляцию (операторы #IF #ELSE...).

Код - vb.net [Выбрать]
  1.  
  2. Imports CAD_APS = Autodesk.AutoCAD.ApplicationServices
  3. ...
  4. Public Shared Function acadnet_Document_Add(ByVal NameTemplate_OUT As String) As CAD_APS.Document
  5.        
  6.         Dim acVer As String = get_acVersion()
  7.         Dim acNewDoc As CAD_APS.Document = Nothing
  8.         Dim acDocMgr As Object = CAD_APS.Application.DocumentManager
  9.        
  10.         If (acVer.Trim > "2012") then
  11.               acNewDoc = CAD_APS.DocumentCollectionExtension.Add(acDocMgr, NameTemplate_OUT)
  12.         Else  
  13.               acNewDoc = acDocMgr.Add(NameTemplate_OUT)        
  14.         End If
  15.  
  16.         Return acNewDoc
  17.    
  18. End Function
  19.  
Название: Re: Совместить добавление документа для разный версий AutoCAD
Отправлено: Андрей Бушман от 13-05-2015, 16:20:54
Сие поведение обусловлено рефакторингом кода, проведённым компанией автодеск (часть функционала вынесены во внешние методы расширений).

Варианты решений:

1. используй
Код - vb.net [Выбрать]
  1. Imports Autodesk.AutoCAD.ApplicationServices
вместо
Код - vb.net [Выбрать]
  1. Imports CAD_APS = Autodesk.AutoCAD.ApplicationServices
(или просто добавь этот импорт в дополнение к уже имеющемуся, дабы не удалять кучу своих уже имеющихся алиасов) и будет тебе счастье. Попроси гугл показать тебе информацию о методах расширений.

2.
Цитировать
Может как-то применить условную компиляцию (операторы #IF #ELSE...).
Можно и так. Я так понимаю, что "как-то" означает, что ты не знаешь как это делается... Определи либо в файле исходника, либо в настройках проекта нужную тебе константу компиляции. Затем используй её. Не знаю, каков синтаксис условной компиляции у VB.NET, т.к. не пишу на языке гоблинов, но в C# он такой:
Код - C# [Выбрать]
  1. #define YOUR_CONSTANT
  2. //...
  3. #if YOUR_CONSTANT
  4. // your code is here
  5. #elif
  6. // your code is here
  7. #endif
Название: Re: Совместить добавление документа для разный версий AutoCAD
Отправлено: Алексей (IdeaSoft) от 13-05-2015, 16:49:55
В VB такой же синтаксис тоже через "#"
Название: Re: Совместить добавление документа для разный версий AutoCAD
Отправлено: Александр Ривилис от 13-05-2015, 16:58:45
В VB такой же синтаксис тоже через "#"
Это вопрос или утверждение? Насколько я знаю в VB.NET нет директивы #define, но есть директива #Const