Создано в программе Autodesk для учебных заведений

Автор Тема: Создано в программе Autodesk для учебных заведений  (Прочитано 97498 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Честно говоря из последней проблемы я мало что понял, кроме того, что моя программа определяет файл автосохранения как "зараженный".
Я переделал код и добавил две команды:
1) CheckEmr - проверяет открытый в AutoCAD файл и сообщает "заражен" он или нет.
2) CheckFilesEmr - проверяет выбранные пользователем dwg-файлы. Пути к "зараженным" dwg-файлам печатаются в командной строке.
Код - C# [Выбрать]
  1. using System;
  2. using System.Reflection;
  3. using System.Resources;
  4. using System.Globalization;
  5. using System.Collections.Generic;
  6. using Autodesk.AutoCAD.Runtime;
  7. using Autodesk.AutoCAD.ApplicationServices;
  8. using Autodesk.AutoCAD.DatabaseServices;
  9. using Autodesk.AutoCAD.Geometry;
  10. using Autodesk.AutoCAD.EditorInput;
  11. using AcRx = Autodesk.AutoCAD.Runtime;
  12. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  13. using AcDb = Autodesk.AutoCAD.DatabaseServices;
  14. using AcGe = Autodesk.AutoCAD.Geometry;
  15. using AcEd = Autodesk.AutoCAD.EditorInput;
  16.  
  17. // This line is not mandatory, but improves loading performances
  18. [assembly: ExtensionApplication(typeof(EmrInfo.MyPlugin))]
  19.  
  20. namespace EmrInfo
  21. {
  22.   public class MyPlugin : IExtensionApplication
  23.   {
  24.     static bool isRussian = (SystemObjects.DynamicLinker.ProductLcid == 1049);
  25.  
  26.     List<string> fileNames = new List<string>();
  27.  
  28.     void IExtensionApplication.Initialize()
  29.     {
  30.       try
  31.       {
  32.         string ver = AcAp.Application.GetSystemVariable("_VERNUM") as string;
  33.         if (ver.ToUpper().Substring(0, 5) == "I.108")
  34.         {
  35.           AcAp.Application.DocumentManager.DocumentLockModeChanged +=
  36.             new AcAp.DocumentLockModeChangedEventHandler(DocumentManager_DocumentLockModeChanged);
  37.         }
  38.       }
  39.       catch { }
  40.     }
  41.  
  42.     void IExtensionApplication.Terminate()
  43.     {
  44.     }
  45.  
  46.     List<AcDb.Database> GetAllXrefedDatabase(AcDb.Database db)
  47.     {
  48.       List<AcDb.Database> dbs = new List<AcDb.Database>();
  49.       if (db != null)
  50.       {
  51.         if (!dbs.Contains(db)) dbs.Add(db);
  52.         AcDb.XrefGraph xg = db.GetHostDwgXrefGraph(true);
  53.         AcDb.XrefGraphNode root = xg.RootNode as AcDb.XrefGraphNode;
  54.         for (int i = 0; i < root.NumOut; i++)
  55.         {
  56.           AcDb.XrefGraphNode node = root.Out(i) as AcDb.XrefGraphNode;
  57.           if (node.XrefStatus == AcDb.XrefStatus.Resolved)
  58.           {
  59.             AcDb.Database db_child = node.Database;
  60.             if (db_child != null && !dbs.Contains(db_child))
  61.             {
  62.               List<AcDb.Database> dbs_child = GetAllXrefedDatabase(db_child);
  63.               for (int j = 0; j < dbs_child.Count; j++)
  64.                 if (!dbs.Contains(dbs_child[j])) dbs.Add(dbs_child[j]);
  65.             }
  66.           }
  67.         }
  68.       }
  69.       return dbs;
  70.     }
  71.     public void DocumentManager_DocumentLockModeChanged(object sender, DocumentLockModeChangedEventArgs e)
  72.     {
  73.       try
  74.       {
  75.         AcDb.Database db = e.Document.Database;
  76.         fileNames.Clear();
  77.         List<AcDb.Database> dbs = GetAllXrefedDatabase(db);
  78.         string fileNamesString = "";
  79.         for (int i = 0; i < dbs.Count; i++)
  80.         {
  81.           if (dbs[i].IsEmr && !fileNames.Contains(dbs[i].Filename))
  82.           {
  83.             fileNames.Add(dbs[i].Filename);
  84.             fileNamesString += ("\n<" + dbs[i].Filename + ">");
  85.           }
  86.         }
  87.         if (fileNamesString.Length > 0)
  88.         {
  89.           AcAp.Application.ShowAlertDialog(isRussian ?
  90.             "\n!!! ВНИМАНИЕ-ВНИМАНИЕ-ВНИМАНИЕ !!!" +
  91.             "\nСледующие чертежи содержат метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА:"
  92.             + fileNamesString :
  93.             "\n!!! ATTENTION-ATTENTION-ATTENTION !!!" +
  94.             "\nNext dwg-files has a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT:"
  95.             + fileNamesString
  96.           );
  97.         }
  98.       }
  99.       catch { };
  100.     }
  101.    
  102.  
  103.     [CommandMethod("CheckEmr")]
  104.     public static void CheckEmr()
  105.     {
  106.       if (AcAp.Application.DocumentManager.MdiActiveDocument.Database.IsEmr)
  107.       {
  108.         AcAp.Application.ShowAlertDialog(isRussian ?
  109.           "ВНИМАНИЕ: Чертеж содержит метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА!!!" :
  110.           "ATTENTION: Drawing has a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT!!!");
  111.       }
  112.       else
  113.       {
  114.         AcAp.Application.ShowAlertDialog(isRussian ?
  115.           "Чертеж НЕ содержит метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА!!!" :
  116.           "Drawing has NOT a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT!!!");
  117.       }
  118.     }
  119.     [CommandMethod("CheckFilesEmr")]
  120.     public static void CheckFilesEmr()
  121.     {
  122.       AcAp.Document doc = AcAp.Application.DocumentManager.MdiActiveDocument;
  123.       if (doc == null) return;
  124.       AcEd.Editor ed = doc.Editor;
  125.       Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
  126.       openFileDialog.Title = isRussian ? "Выберите dwg-файлы" : "Select dwg-files";
  127.       openFileDialog.Filter = isRussian ? "dwg-файлы|*.dwg" : "dwg-files|*.dwg";
  128.       openFileDialog.Multiselect = true;
  129.       bool? bClickedOK = openFileDialog.ShowDialog();
  130.       if (!bClickedOK.HasValue || !bClickedOK.Value) return;
  131.       ed.WriteMessage(isRussian ?
  132.         "\nСледующие файлы имеют метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА:\n" :
  133.         "\nNext dwg-files has a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT:\n");
  134.      
  135.       foreach (string fileName in openFileDialog.FileNames) {
  136.         System.Windows.Forms.Application.DoEvents();
  137.         using (AcDb.Database db = new Database(false, false))
  138.         {
  139.           try
  140.           {
  141.             db.ReadDwgFile(fileName, FileOpenMode.OpenForReadAndAllShare, false, "");
  142.             if (db.IsEmr) ed.WriteMessage("{0}\n");
  143.           }
  144.           catch {}
  145.         }
  146.       }
  147.     }
  148.   }
  149. }
Исходники и EmrInfo.dll прицеплены в архиве.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Честно говоря из последней проблемы я мало что понял, кроме того, что моя программа определяет файл автосохранения как "зараженный".
В момент автоссохранения, появляется сообщение что в файле присутствует штам учебной версии, хотя я его удалил через пересохранение в  DXF. При повторном открытии файла нет сообщения что штам есть, но в этом же файле в момент автосохранения появляется сообщение что в файле присуствует штамп учебной версии. А сами файлы Автосохранения я не открывал. Хотя наверное надо было. Вчера не подумал на эту тему.
Где то было написанно как подкючить это приложение что бы не загружать его каждый раз, но не могу найти эту тему.
« Последнее редактирование: 08-06-2015, 12:03:18 от Valery Brelovsky »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Где то было написанно как подкючить это приложение что бы не загружать его каждый раз, но не могу найти эту тему.
Самый простой способ - это правка реестра. Если не боишься с ним работать, то я напишу что и как.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я подумал и решил, что для простоты (а особенно если нужно будет поставить эту программу сотрудникам вашей фирмы), то достаточно будет разархивировать прикреплённый файл в каталог "C:\Program Files\Autodesk\ApplicationPlugins" (считается, что системный диск C: - если нет, то в соответствующий каталог системного диска). В результате появится каталог "C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle"
EmrInfo.dll будет автоматически загружаться при каждом запуске AutoCAD 2014 - с другими версиями AutoCAD эта программа работать не будет - впрочем в ней и нет необходимости.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Если не боишься с ним работать, то я напишу что и как.
Нет, с реестром я не работал, так что начинать, сегодня не стоит. Вчера подгрузил последнюю версию EmpInfo. Есть проблема. Открываю файл со штампом, получаю сообщение, жму ОК окно не закрывается, жму несколько раз не выходит закрыть, читаю в ком строке предлагается нажать Enter. Поле значительного количества попыток, окно закрывается. Но теперь я хочу закрыть файл, при этом опять появляется окно с сообщением что есть штамп, жму ОК закрытия файла не происходит, снова пытаюсь закрыть файл, опять получаю сообщение и так несколько раз. В конечном итоге файл всё таки удаётся закрыть.
Так что с автозагрузкой я пока повременю.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
По поводу надоедливого сообщения предлагаю такую схему - если в одном сеансе работы с AutoCAD в dwg-файле метка была обнаружена и сообщение об этом уже было, то в дальнейшем в этом сеансе сообщений об этом файле не делать. Если такая логика тебя устроит - я так и сделаю.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
По поводу надоедливого сообщения предлагаю такую схему - если в одном сеансе работы с AutoCAD в dwg-файле метка была обнаружена и сообщение об этом уже было, то в дальнейшем в этом сеансе сообщений об этом файле не делать.
Вот первый вариант, что был меня, устраивал вполне. Я сегодня вернулся к файлу и 30 поста, просто вчера было в конце дня  и я не ожидал, что придётся попробовать и понять процесс.  Здесь уже если штамп присутствует от сообщение закрывается только после нескольких раз нажатия ОК, и когда закрываешь или сохраняешь опять сообщается что метка есть. И опять же после много кратного нажатия ОК процесс идёт дальше и файл закрывается.(файл я не исправлял так что закрывал с тем что метка остаётся и сообщение оно правильно) Но закрыть или открыть файл тяжело. Да и хватило бы наверное сообщения при открытии и вставке файла. Т.е. если закончил и закрываешь, то уже не важно с меткой или без неё файл. А то что приходит сообщение если вставляешь блок с меткой это вообще отлично. Со ссылочными у меня пока файлы нормальные. Т.е. в новых файлах я слежу за этим. А к старым я пока не возвращался. Так что самый первый вариант меня устраивал выше крыши и там сообщалось что ссылочные имеют метку. Его только по-простому поставить, что бы он загружался при запуске. Хотя и загрузить отдельно не проблема. 

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Если ты сделаешь то что написано здесь: http://adn-cis.org/forum/index.php?topic=1110.msg9845#msg9845, а затем заменишь EmrInfo.dll, на тот, который тебя устраивает, то получишь автозагрузку.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Если ты сделаешь то что написано здесь: http://adn-cis.org/forum/index.php?topic=1110.msg9845#msg9845, а затем заменишь EmrInfo.dll, на тот, который тебя устраивает, то получишь автозагрузку.
Понял. Спасибо. Хорошо попробую.

P.s. сделал всё отлично получилось. :) Спасибо.
« Последнее редактирование: 10-06-2015, 07:14:12 от Valery Brelovsky »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я исправил огрехи с повторным сообщением о метке учебной версии в файле и еще несколько более мелких.
Код - C# [Выбрать]
  1. using System;
  2. using System.Reflection;
  3. using System.Resources;
  4. using System.Globalization;
  5. using System.Collections.Generic;
  6. using Autodesk.AutoCAD.Runtime;
  7. using Autodesk.AutoCAD.ApplicationServices;
  8. using Autodesk.AutoCAD.DatabaseServices;
  9. using Autodesk.AutoCAD.Geometry;
  10. using Autodesk.AutoCAD.EditorInput;
  11. using AcRx = Autodesk.AutoCAD.Runtime;
  12. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  13. using AcDb = Autodesk.AutoCAD.DatabaseServices;
  14. using AcGe = Autodesk.AutoCAD.Geometry;
  15. using AcEd = Autodesk.AutoCAD.EditorInput;
  16.  
  17. // This line is not mandatory, but improves loading performances
  18. [assembly: ExtensionApplication(typeof(EmrInfo.MyPlugin))]
  19.  
  20. namespace EmrInfo
  21. {
  22.   public class MyPlugin : IExtensionApplication
  23.   {
  24.     static bool isRussian = (SystemObjects.DynamicLinker.ProductLcid == 1049);
  25.     static List<string> fileNames = new List<string>();
  26.  
  27.     void IExtensionApplication.Initialize()
  28.     {
  29.       try
  30.       {
  31.         string ver = AcAp.Application.GetSystemVariable("_VERNUM") as string;
  32.         if (ver.ToUpper().Substring(0, 5) == "I.108")
  33.         {
  34.           AcAp.Application.DocumentManager.DocumentLockModeChanged +=
  35.             new AcAp.DocumentLockModeChangedEventHandler(DocumentManager_DocumentLockModeChanged);
  36.         }
  37.       }
  38.       catch { }
  39.     }
  40.  
  41.     void IExtensionApplication.Terminate()
  42.     {
  43.     }
  44.  
  45.     List<AcDb.Database> GetAllXrefedDatabase(AcDb.Database db)
  46.     {
  47.       List<AcDb.Database> dbs = new List<AcDb.Database>();
  48.       if (db != null)
  49.       {
  50.         if (!dbs.Contains(db)) dbs.Add(db);
  51.         AcDb.XrefGraph xg = db.GetHostDwgXrefGraph(true);
  52.         AcDb.XrefGraphNode root = xg.RootNode as AcDb.XrefGraphNode;
  53.         for (int i = 0; i < root.NumOut; i++)
  54.         {
  55.           AcDb.XrefGraphNode node = root.Out(i) as AcDb.XrefGraphNode;
  56.           if (node.XrefStatus == AcDb.XrefStatus.Resolved)
  57.           {
  58.             AcDb.Database db_child = node.Database;
  59.             if (db_child != null && !dbs.Contains(db_child))
  60.             {
  61.               List<AcDb.Database> dbs_child = GetAllXrefedDatabase(db_child);
  62.               for (int j = 0; j < dbs_child.Count; j++)
  63.                 if (!dbs.Contains(dbs_child[j])) dbs.Add(dbs_child[j]);
  64.             }
  65.           }
  66.         }
  67.       }
  68.       return dbs;
  69.     }
  70.     public void DocumentManager_DocumentLockModeChanged(object sender, DocumentLockModeChangedEventArgs e)
  71.     {
  72.       try
  73.       {
  74.         AcDb.Database db = e.Document.Database;
  75.         List<AcDb.Database> dbs = GetAllXrefedDatabase(db);
  76.         string fileNamesString = "";
  77.         for (int i = 0; i < dbs.Count; i++)
  78.         {
  79.           if (dbs[i].IsEmr && !fileNames.Contains(dbs[i].Filename))
  80.           {
  81.             fileNames.Add(dbs[i].Filename);
  82.             fileNamesString += ("\n<" + dbs[i].Filename + ">");
  83.           }
  84.         }
  85.         if (fileNamesString.Length > 0)
  86.         {
  87.           AcAp.Application.ShowAlertDialog(isRussian ?
  88.             "\n!!! ВНИМАНИЕ-ВНИМАНИЕ-ВНИМАНИЕ !!!" +
  89.             "\nСледующие чертежи содержат метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА:"
  90.             + fileNamesString :
  91.             "\n!!! ATTENTION-ATTENTION-ATTENTION !!!" +
  92.             "\nNext dwg-files has a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT:"
  93.             + fileNamesString
  94.           );
  95.         }
  96.       }
  97.       catch { };
  98.     }
  99.    
  100.     [CommandMethod("CheckEmr")]
  101.     public static void CheckEmr()
  102.     {
  103.       if (AcAp.Application.DocumentManager.MdiActiveDocument.Database.IsEmr)
  104.       {
  105.         AcAp.Application.ShowAlertDialog(isRussian ?
  106.           "ВНИМАНИЕ: Чертеж содержит метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА!!!" :
  107.           "ATTENTION: Drawing has a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT!!!");
  108.       }
  109.       else
  110.       {
  111.         AcAp.Application.ShowAlertDialog(isRussian ?
  112.           "Чертеж НЕ содержит метку ФАЙЛ СОЗДАН В УЧЕБНОЙ ВЕРСИИ ПРОДУКТА!!!" :
  113.           "Drawing has NOT a mark PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT!!!");
  114.       }
  115.     }
  116.     [CommandMethod("CheckFilesEmr")]
  117.     public static void CheckFilesEmr()
  118.     {
  119.       AcAp.Document doc = AcAp.Application.DocumentManager.MdiActiveDocument;
  120.       if (doc == null) return;
  121.       AcEd.Editor ed = doc.Editor;
  122.       Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
  123.       openFileDialog.Title = isRussian ? "Выберите dwg-файлы" : "Select dwg-files";
  124.       openFileDialog.Filter = isRussian ? "dwg-файлы|*.dwg" : "dwg-files|*.dwg";
  125.       openFileDialog.Multiselect = true;
  126.       bool? bClickedOK = openFileDialog.ShowDialog();
  127.       if (!bClickedOK.HasValue || !bClickedOK.Value) return;
  128.       ed.WriteMessage(isRussian ? "\nОбработаны файлы:\n" : "\nProcessed files:\n");
  129.      
  130.       foreach (string fileName in openFileDialog.FileNames) {
  131.         System.Windows.Forms.Application.DoEvents();
  132.         using (AcDb.Database db = new Database(false, false))
  133.         {
  134.           try
  135.           {
  136.             db.ReadDwgFile(fileName, FileOpenMode.OpenForReadAndAllShare, false, "");
  137.             if (db.IsEmr)
  138.               ed.WriteMessage(isRussian ? "\tЕсть метка: {0}\n" : "Has mark: {0}\n", fileName);
  139.             else
  140.               ed.WriteMessage(isRussian ? "\tНет  метки: {0}\n" : "Has not mark: {0}\n", fileName);
  141.           }
  142.           catch {}
  143.         }
  144.       }
  145.       ed.WriteMessage(isRussian ? "\nГотово!\n" : "\nDone!\n");
  146.     }
  147.   }
  148. }

Прикрепил EmrInfo.bundle в архиве, которым можно заменить старый. Там же и исходники.
P.S.: Не забывай про команду CheckFilesEmr для массовой проверки dwg-файлов на метку учебной версии.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Спасибо попробую на досуге. Сейчас нормально работаю со старой.  Если проверять файлы все, то нужно исправлять, а я не могу все сразу. Тем более что, в общем, контору не клюнуло серьёзно. А я не хочу через месяц два сидеть с кучей файлов и исправлять. Так что исправляю по мере столкновения, в процессе работы, а начальство пускай думает, я им сообщение о том, что нет сообщения, и что есть решение. Так что для себя проблему решил, когда до начальства дойдет, посмотрим, что будет. Да и  волнуюс за свои блоки. Когда вставляешь меченный блок он сообщает, а вот когда блок уже присутствует уже в файле, не помню что тогда.  Но по ходу разберусь. :)

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Если проверять файлы все, то нужно исправлять, а я не могу все сразу.
Я так понимаю, что проблема в том, что ты используешь для убирания метки сохранение в DXF. Способ далеко не идеальный и не работает (или работает плохо) с чертежами, созданными в вертикальных приложениях (Civil 3D, Architectural Desktop и т.д.).
Я подумал, взвесил все "За" и "Против", и решил, что раз Autodesk отказался от использования метки учебной версии, то я могу выложить программу (без исходников - этот вопрос не обсуждается), которую я создал и использовал для себя (и только для себя!!!) для снятия этой метки в течении многих лет.
Итак в приложенном архиве есть еще два arx-файла:
EmrTools2014x64.arx
EmrTools2014x32.arx
Если установить новую версию EmrInfo.bundle, то при запуске AutoCAD 2014 появится новая команда EMRCLEAR - эта команда снимает флаг учебной версии в активном чертеже. Она никаких сообщений не выдаёт. При помощи команды CheckEmr можно будет убедится в том, что метка исчезла. Для того, чтобы метка отсутствовала и в соответствующем dwg-файле, чертеж необходимо после этого сохранить. Я не проверял работоспособность этой команды в вертикальных приложениях AutoCAD линейки 2014, но по всей вероятности должно работать.
P.S.: Программа работает Как есть.
« Последнее редактирование: 11-06-2015, 13:23:52 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Да Александр Наумович, вы меня озадачили. Для вертикальных приложений я как то  в основном своими файлами пользуюсь, не откуда не получаю и ни куда не передаю. Я с Civil_лом работаю. Но последние дни закрадывается вопрос, а что с файлами Civil_ла. Я работая с Civil часто использую _NCOPY и притаскиваю в файл Civil_ла объекты из ссылочных. И в данной ситуации не факт что файлы получатся не с меткой. И для Civil_ла через DXF ни чего хорошего не получается. Хорошо в конце дня не буду пробовать, а завтра с утра на свежую голову попробую. Так файла *.arx работают во всех приложениях и самом Автокаде?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Так файла *.arx работают во всех приложениях и самом Автокаде?
Те arx-файлы, которые я выложил, должны работать в AutoCAD только версии 2014 без и с Service Pack, а так же в 2014-ых вертикальных приложениях.
Проверишь в Civil 3D 2014. :)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Проверишь в Civil 3D 2014
Да обязательно проверю.