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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 30-09-2014, 09:59:25

Название: Создать новый документ AutoCAD 2013-2015
Отправлено: Алексей (IdeaSoft) от 30-09-2014, 09:59:25
В AutoCAD с 2006 по 2012 можно было добавить документ методом add(...) из DocumentManager
Метод Add пропал в API AutoCAD 2013, 2014, 2015.
И есть ли этому методу альтернатива?

На картинке ниже покажу вызов этого метода.
Название: Re: Создать новый документ AutoCAD 2013-2015
Отправлено: Андрей Бушман от 30-09-2014, 10:33:36
Начиная с AutoCAD 2013, часть ранее привычных тебе методов присутствуют в виде методов расширений, что автоматом сказывается на роли использования "алиасов" (см. код ниже). Кроме того, часть функционала, ранее присутствовавшего в acdbmgd.dll и acmgd.dll, вынесена в библиотеку accoremgd.dll (поэтому не забывай подключать и её).

Интересующий тебя метод, и не только он, отныне живёт в классе Autodesk.AutoCAD.ApplicationServices.DocumentCollectionExtension класса AcMgd.dll.

Код - C# [Выбрать]
  1. // © Андрей Бушман, 2014
  2. using System;
  3.  
  4. using cad = Autodesk.AutoCAD.ApplicationServices.Application;
  5. using Ap = Autodesk.AutoCAD.ApplicationServices;
  6. using Db = Autodesk.AutoCAD.DatabaseServices;
  7. using Ed = Autodesk.AutoCAD.EditorInput;
  8. using Rt = Autodesk.AutoCAD.Runtime;
  9. using Hs = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices;
  10. using Us = Autodesk.AutoCAD.DatabaseServices.SymbolUtilityServices;
  11.  
  12. // Для того, чтобы работал вариант № 1 (см. код метода SomeCommand), начиная с
  13. // AutoCAD 2013 следующая строка необходима:
  14. using Autodesk.AutoCAD.ApplicationServices;
  15. // В противном случае следует использовать вариант №2.
  16.  
  17. [assembly: Rt.CommandClass(typeof(Bushman.CAD.Sandbox.Commands))]
  18.  
  19. namespace Bushman.CAD.Sandbox {
  20.  
  21.     public sealed class Commands {
  22.  
  23.         [Rt.CommandMethod("SomeCommand", Rt.CommandFlags.Modal)]
  24.         public void SomeCommand() {
  25.             String template_name = "acadiso.dwt";
  26.             // Вариант №1:
  27.             Ap.Document doc1 = Autodesk.AutoCAD.ApplicationServices.Application
  28.                 .DocumentManager.Add(template_name);
  29.             // Вариант №2:
  30.             Ap.Document doc2 = Ap.DocumentCollectionExtension.Add(cad
  31.                 .DocumentManager, template_name);
  32.            // ...
  33.         }
  34.     }
  35. }
Название: Re: Создать новый документ AutoCAD 2013-2015
Отправлено: Алексей (IdeaSoft) от 30-09-2014, 13:11:55
Спасибо большое! Все понятно!