Совместить добавление документа для разный версий AutoCAD

Автор Тема: Совместить добавление документа для разный версий AutoCAD  (Прочитано 4564 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Есть алгоритм добавления документа.
Подключая к проекту сборки 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.  

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

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

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

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
В VB такой же синтаксис тоже через "#"

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
В VB такой же синтаксис тоже через "#"
Это вопрос или утверждение? Насколько я знаю в VB.NET нет директивы #define, но есть директива #Const
« Последнее редактирование: 14-05-2015, 00:18:15 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение