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

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

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

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
1. Подскажите пожалуйста, что поменялось начиная с Civil 3D 2014 SP1 c этим сообщением, оно исчезло? 

2. Где об этом написано?

3. Теперь пользователи даже не вкурсе, что к ним попал файл созданый для учебных заведений?

4. Скопировав одну линию в другой файл и передав этот другой файл пользователю с автокадом 2012 - у пользователя с автокад 2012 теперь проблемы и с этим сообщением и с печатью?

Отмечено как Решение Александр Ривилис 19-03-2015, 15:40:42

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
1. Подскажите пожалуйста, что поменялось начиная с Civil 3D 2014 SP1 c этим сообщением, оно исчезло?
Исчезло.
2. где об этом написано?
http://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/Educational-Plot-Stamp-Removal-Issues.html

3. Теперь пользователи даже не вкурсе что к ним попал файл созданый для учебных заведений?
Да. Из стандартных средств проверки: http://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/AutoCAD-Detect-drawings-with-educational-plot-stamp.html
4. Скопировав одну линию в другой файл и передав этот другой файл пользователю с автокадом 2012 - у пользователя с автокад 2012 теперь проблемы и с этим сообщеним и с печатью?
Это вопрос или утверждение?
Если сохранить чертеж в AutoCAD 2015 то штамп учебной версии исчезает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати, как программист ты можешь сам диагностировать есть метка учебной версии или нет: свойство Database.IsEmr (в AutoCAD 2015 этого свойства уже нет) и выводить об этом сообщение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Спасибо за развёрнутый ответ.
Видомо теперь придётся что срочно придумывать - проблемы уже начались, т.к. у половины пользователей  2012.

Пользователи теперь спрашивают как включить это сообщение, т.к. они даже не вкурсе что передали в другую организацию файлы с этим сообщением, при это у нас нет лицензий для учебных заведений (файлы могли появится только из вне).
« Последнее редактирование: 27-11-2014, 10:17:43 от Doublefish »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Пользователи теперь спрашивают как включить это сообщение
Никак. Только если ты напишешь для них приложение, которое будет анализировать Database.IsEmr и выдавать сообщение.
Можешь в событии открытия файла, а можешь в фоне по таймеру, т.к. отлавливать необходимо кучу разных операций копирования, то лучше просто проверять HostApplicationServices.WorkingDatabase.IsEmr
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Пользователи теперь спрашивают как включить это сообщение, т.к. они даже не вкурсе что передали в другую организацию файлы с этим сообщением, при это у нас нет лицензий для учебных заведений (файлы могли появится только из вне).
Да, согласен, знатную нам свинью подсунули в 2014 версии SP1. У нас тоже с этим проблемы есть. Казалось бы, если уж убрали сообщение, почему бы сразу не сделать, чтобы штамп снимался при пересохранении? Ан нет, помучайтесь...
У нас уже определились, у кого еще стоит AutoCAD 2014 без SP, на которых проверяем есть штамп или нет. С нетерпением жду, когда нам всем уже 2015 версии установят...

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Да, согласен, знатную нам свинью подсунули в 2014 версии SP1.
Абсолютно согласен. Если решили отказаться от метки учебной версии, то это нужно было делать только в новой (т.е. 2015) версии. И чтобы сразу при сохранении эта метка снималась.
Насколько я понимаю при помощи DWG True View 2015 эту метку тоже можно снять.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
На всякий случай налепил такой код, который совсем не проверял:
Код - C# [Выбрать]
  1. using System;
  2. using System.Collections.Generic;
  3. using Autodesk.AutoCAD.Runtime;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.DatabaseServices;
  6. using Autodesk.AutoCAD.Geometry;
  7. using Autodesk.AutoCAD.EditorInput;
  8. using AcRx = Autodesk.AutoCAD.Runtime;
  9. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  10. using AcDb = Autodesk.AutoCAD.DatabaseServices;
  11. using AcGe = Autodesk.AutoCAD.Geometry;
  12. using AcEd = Autodesk.AutoCAD.EditorInput;
  13.  
  14. // This line is not mandatory, but improves loading performances
  15. [assembly: ExtensionApplication(typeof(EmrInfo.MyPlugin))]
  16.  
  17. namespace EmrInfo
  18. {
  19.   public class MyPlugin : IExtensionApplication
  20.   {
  21.     List<AcDb.Database> dbs = new List<AcDb.Database>();
  22.     void IExtensionApplication.Initialize()
  23.     {
  24.       AcAp.Application.DocumentManager.DocumentLockModeChanged +=
  25.         new AcAp.DocumentLockModeChangedEventHandler(DocumentManager_DocumentLockModeChanged);
  26.     }
  27.  
  28.     void IExtensionApplication.Terminate()
  29.     {
  30.     }
  31.     public void DocumentManager_DocumentLockModeChanged(object sender, DocumentLockModeChangedEventArgs e)
  32.     {
  33.       if (e.Document.Database.IsEmr && !dbs.Contains(e.Document.Database)) {
  34.         dbs.Add(e.Document.Database); // Чтобы каждый раз не сообщать.
  35.         AcAp.Application.ShowAlertDialog("\nВнимание! Чертеж <" +
  36.           e.Document.Name + "> выполнен в учебной версии AutoCAD!");
  37.       }
  38.     }
  39.   }
  40. }

Дальше можно допиливать по месту.
« Последнее редактирование: 27-11-2014, 17:56:50 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Надо будет проверить на досуге... Есть подозрение, что надо допиливать. Я так понимаю, что если "заражена" внешняя ссылка, сообщение не появится при открытии чертежа, куда эта ссылка вставлена. А стандартное сообщение в этом случае появлялось. В любом случае, спасибо за идею!

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Ужастик: в AutoCAD 2016 появится очередное новшество - если ты хотя бы раз открывал в своём акаде файл, созданный в учебной версии, то после этого, при открытии любых других чертежей, они автоматом так же становятся учебными. Причём надпись об учебной версии будет располагаться на весь лист, по диагонали. Не поможет даже переустановка акада, только полный снос системы. :) Всем приятных снов  ;)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Надо будет проверить на досуге... Есть подозрение, что надо допиливать. Я так понимаю, что если "заражена" внешняя ссылка, сообщение не появится при открытии чертежа, куда эта ссылка вставлена. А стандартное сообщение в этом случае появлялось. В любом случае, спасибо за идею!
Ну тогда как-то так. Тоже практически без тестирования:
Код - C# [Выбрать]
  1. using System;
  2. using System.Collections.Generic;
  3. using Autodesk.AutoCAD.Runtime;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.DatabaseServices;
  6. using Autodesk.AutoCAD.Geometry;
  7. using Autodesk.AutoCAD.EditorInput;
  8. using AcRx = Autodesk.AutoCAD.Runtime;
  9. using AcAp = Autodesk.AutoCAD.ApplicationServices;
  10. using AcDb = Autodesk.AutoCAD.DatabaseServices;
  11. using AcGe = Autodesk.AutoCAD.Geometry;
  12. using AcEd = Autodesk.AutoCAD.EditorInput;
  13.  
  14.  
  15. // This line is not mandatory, but improves loading performances
  16. [assembly: ExtensionApplication(typeof(EmrInfo.MyPlugin))]
  17.  
  18. namespace EmrInfo
  19. {
  20.   public class MyPlugin : IExtensionApplication
  21.   {
  22.     List<string> fileNames = new List<string>();
  23.     void IExtensionApplication.Initialize()
  24.     {
  25.       AcAp.Application.DocumentManager.DocumentLockModeChanged +=
  26.         new AcAp.DocumentLockModeChangedEventHandler(DocumentManager_DocumentLockModeChanged);
  27.     }
  28.  
  29.     void IExtensionApplication.Terminate()
  30.     {
  31.     }
  32.  
  33.     List<AcDb.Database> GetAllXrefedDatabase(AcDb.Database db)
  34.     {
  35.       List<AcDb.Database> dbs = new List<AcDb.Database>();
  36.       if (db != null)
  37.       {
  38.         if (!dbs.Contains(db)) dbs.Add(db);
  39.         AcDb.XrefGraph xg = db.GetHostDwgXrefGraph(true);
  40.         AcDb.XrefGraphNode root = xg.RootNode as AcDb.XrefGraphNode;
  41.         for (int i = 0; i < root.NumOut; i++)
  42.         {
  43.           AcDb.XrefGraphNode node = root.Out(i) as AcDb.XrefGraphNode;
  44.           if (node.XrefStatus == AcDb.XrefStatus.Resolved)
  45.           {
  46.             AcDb.Database db_child = node.Database;
  47.             if (db_child != null && !dbs.Contains(db_child))
  48.             {
  49.               List<AcDb.Database> dbs_child = GetAllXrefedDatabase(db_child);
  50.               for (int j = 0; j < dbs_child.Count; j++)
  51.                 if (!dbs.Contains(dbs_child[j])) dbs.Add(dbs_child[j]);
  52.             }
  53.           }
  54.         }
  55.       }
  56.       return dbs;
  57.     }
  58.     public void DocumentManager_DocumentLockModeChanged(object sender, DocumentLockModeChangedEventArgs e)
  59.     {
  60.       try
  61.       {
  62.         AcDb.Database db = e.Document.Database;
  63.         List<AcDb.Database> dbs = GetAllXrefedDatabase(db);
  64.         string fileNamesString = "";
  65.         for (int i = 0; i < dbs.Count; i++)
  66.         {
  67.           if (dbs[i].IsEmr && !fileNames.Contains(dbs[i].Filename))
  68.           {
  69.             fileNames.Add(dbs[i].Filename);
  70.             fileNamesString += ("\n<" + dbs[i].Filename + ">");
  71.           }
  72.         }
  73.         if (fileNamesString.Length > 0)
  74.         {
  75.           AcAp.Application.ShowAlertDialog(
  76.             "\n!!! ВНИМАНИЕ-ВНИМАНИЕ-ВНИМАНИЕ !!!" +
  77.             "\nСледующие чертежи содержат Штамп Учебной Версии:"
  78.             + fileNamesString);
  79.         }
  80.       }
  81.       catch { };
  82.     }
  83.   }
  84. }

Во вложении EmrInfo.dll для AutoCAD 2014 и исходник.
« Последнее редактирование: 28-11-2014, 15:19:17 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Ужастик: в AutoCAD 2016 появится очередное новшество - если ты хотя бы раз открывал в своём акаде файл, созданный в учебной версии, то после этого, при открытии любых других чертежей, они автоматом так же становятся учебными. Причём надпись об учебной версии будет располагаться на весь лист, по диагонали. Не поможет даже переустановка акада, только полный снос системы. :) Всем приятных снов  ;)
Да, как-то так :)
Александр Наумович, по быстрому попробовал проверить - чего-то не работает. Падает и на обычном автокаде и на Civil с фатальной ошибкой при попытке открытия нового чертежа:
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.
   в Autodesk.AutoCAD.Runtime.DisposableWrapper.Attach(IntPtr unmanagedPointer, Boolean autoDelete)
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   в System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   в System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
   в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   в Autodesk.AutoCAD.Runtime.DisposableWrapper.Create(Type type, IntPtr unmanagedPointer, Boolean autoDelete)
   в Autodesk.AutoCAD.ApplicationServices.Document.get_Database()
   в EmrInfo.MyPlugin.DocumentManager_DocumentLockModeChanged(Object sender, DocumentLockModeChangedEventArgs e)
   в Autodesk.AutoCAD.ApplicationServices.DocumentLockModeChangedEventHandler.Invoke(Object sender, DocumentLockModeChangedEventArgs e)
   в CDocCollReactorImpl.FireDocumentLockModeChanged(CDocCollReactorImpl* , AcApDocument* doc, DocLockMode myPreviousMode, DocLockMode myCurrentMode, DocLockMode currentMode, Char* pGlobalCmdName)
Вроде бы на этой строчке (или где-то рядом):
Код - C# [Выбрать]
  1. List<AcDb.Database> dbs = GetAllXrefedDatabase(db);

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
+ определить есть ли SP
 
Код - C# [Выбрать]
  1. bool yessp = false;
  2. try
  3.             {   //c3d 2014
  4.                 Registry.LocalMachine.OpenSubKey(@"Software\Autodesk\AutoCAD\R19.1\ACAD-D000\Service Packs").ToString();
  5.                 yessp = true;
  6.             }
  7. catch (SystemException)
  8.             {
  9.                 yessp = false;
  10.             }
  11. if (yessp)
  12. {
  13.    сообщение
  14. }

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
2 Doublefish

Ужасный код.  :-X

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Предложите другой  :)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Наумович, по быстрому попробовал проверить - чего-то не работает.
Проверил и исправил. Не хватало одного try/catch.
« Последнее редактирование: 28-11-2014, 15:18:26 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Предложите другой 
Информацию в реестре о наличии\отсутствии SP для текущей версии AutoCAD я бы искал следующим образом:
Код - C# [Выбрать]
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Win32;
  6.  
  7. #if AUTOCAD
  8. using cad = Autodesk.AutoCAD.ApplicationServices.Application;
  9. using Ap = Autodesk.AutoCAD.ApplicationServices;
  10. using Db = Autodesk.AutoCAD.DatabaseServices;
  11. using Ed = Autodesk.AutoCAD.EditorInput;
  12. using Rt = Autodesk.AutoCAD.Runtime;
  13. using Hs = Autodesk.AutoCAD.DatabaseServices.HostApplicationServices;
  14. using Us = Autodesk.AutoCAD.DatabaseServices.SymbolUtilityServices;
  15. #endif
  16.  
  17. [assembly: Rt.CommandClass(typeof(Bushman.CAD.Sandbox.Commands))]
  18.  
  19. namespace Bushman.CAD.Sandbox {
  20.     public sealed class Commands {
  21.  
  22.         [Rt.CommandMethod("Test")]
  23.         public void Test() {
  24.             Ap.Document doc = cad.DocumentManager.MdiActiveDocument;
  25.             if (null == doc)
  26.                 return;
  27.  
  28.             Ed.Editor ed = doc.Editor;
  29.  
  30.             Version old = new Version(18, 2);
  31.             String appPath = String.Empty;
  32.  
  33. #if CAD_NEWER_THAN_18_2
  34.             appPath = Hs.Current.MachineRegistryProductRootKey;
  35. #else
  36.             appPath = Hs.Current.RegistryProductRootKey;
  37. #endif
  38.             String spParentPath = String.Empty;
  39.             if (cad.Version > old) {
  40.                 Int32 len = appPath.IndexOf(':');
  41.                 spParentPath = appPath.Substring(0, len);
  42.             }
  43.             else {
  44.                 spParentPath = appPath;
  45.             }
  46.  
  47.             using (RegistryKey appKey = Registry.LocalMachine.OpenSubKey(
  48.                 spParentPath)) {
  49.                 using (RegistryKey spKey = appKey.OpenSubKey("Service Packs")) {
  50.  
  51.                     if (null != spKey && 0 != spKey.GetSubKeyNames().Length) {
  52.                         String patchTitle = spKey.OpenSubKey(spKey
  53.                             .GetSubKeyNames()[0]).GetValue("PatchTitle",
  54.                             String.Empty).ToString();
  55.                         ed.WriteMessage("{0}\n", patchTitle);
  56.                     }
  57.                     else {
  58.                         ed.WriteMessage("Service Packs is not installed.\n");
  59.                     }
  60.                     if (null != spKey) {
  61.                         spKey.Close();
  62.                     }
  63.                 }
  64.             }
  65.         }
  66.     }
  67. }
« Последнее редактирование: 28-11-2014, 15:54:05 от Андрей Бушман »

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Подправил код: добавил обработку IDisposable.

UPD Мне почему-то запомнилось, что в .Net 3.5 класс RegistryKey не имел реализацию IDisposable, в виду чего я и предложил сначала такой вариант:
Код - C# [Выбрать]
  1. foreach (RegistryKey rk in new RegistryKey[] { spKey, appKey }) {
  2.         rk.Close();
  3.         if (rk is IDisposable) {
  4.                 (rk as IDisposable).Dispose();
  5.         }
  6. }
Сейчас полез, проверил и вижу, что обозначенный класс реализует данный интерфейс и в .Net 3.5. В виду этого отредактировал код, оформив вызов Dispose посредством блоков using, а так же добавил один блок else, пропущенный мною (всплыл при тестировании в AutoCAD 2009).
« Последнее редактирование: 28-11-2014, 15:51:57 от Андрей Бушман »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Информацию в реестре о наличии\отсутствии SP для текущей версии AutoCAD я бы искал следующим образом:
А я бы сделал проще: проверил значение системной переменной _VERNUM. Для AutoCAD 2014 SP1:
Цитировать
Command: _VERNUM
_VERNUM = "I.108.0.0 (UNICODE)" (read only)
Думаю что для Civil 3D 2014 SP1 аналогичное значение. Но можно проверить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Спасибо за идею
C3D без SP: _VERNUM = "I.18.0.0 (UNICODE)"
C3D c  SP1: _VERNUM = "I.108.0.4 (UNICODE)"

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Спасибо за идею
C3D без SP: _VERNUM = "I.18.0.0 (UNICODE)"
C3D c  SP1: _VERNUM = "I.108.0.4 (UNICODE)"
Соответственно достаточно проверки первых 5 байт на "I.108"
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
C3D c SP2 _vernum: "I.108.0.11 (UNICODE)"

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
C3D c SP2 _vernum: "I.108.0.11 (UNICODE)"
В нем же тоже нет уведомления об учебной версии?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Да - c SP2 I.108.0.11 тоже нету сообщения, а штемпель в файле есть.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Тогда это моё предположение остаётся в силе:
Соответственно достаточно проверки первых 5 байт на "I.108"
И его лучше всего проверять перед подпиской на событие DocumentLockModeChanged. Если не "I.108", то и подписывать незачем.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
А вот крамольный вопрос. Работаю я это приложение запустил, проверил всё нормально версия не учебная, а потом вставил блок который подпорчен и имеет сообщение о учебной версии. Вопрос в том что при вставке блока сообщение о учебной версии буде работать?  Или,  когда начну загружать файл, узнаю об этом. :)  Это к том у что пару дней я работал с файлом учебной версии, перенёс в свой из подпорченного файла что либо. А в процессе работы изменял, блоки и сохранял их из этого файла в свою библиотеку. Первое я не знаю когда файл стал с сообщением, а узнал уже десяток другой блоков менял. Теперь эти блоки будут вставляться в другие файлы.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вопрос в том что при вставке блока сообщение о учебной версии буде работать?
А попробовать самому? ;) Думаю, что если ты вставишь такой "испорченный" блок это сообщение появится сразу после окончания команды вставки.
P.S.: У тебя задача разбивается на две:
1) Исправить уже испорченные чертежи.
2) Не допустить порчу новых чертежей.
Так вот EmrInfo.dll решает только вторую задачу. А первую задачи ты можешь решить или при помощи AutoCAD 2015, который при сохранении чертежа эту метку убирает или при помощи DWG TrueView 2015 (в составе которого DWG TrueConvert), которые тоже позволяет убрать метку.
« Последнее редактирование: 05-06-2015, 20:45:27 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
А попробовать самому?
Спасибо. Попробовать конечно можно, но дело в том что сегодня не знаю какие блоки и файлы у меня подпорчены. От того и вопрос, что бы знать к чему готовится. И потом я говорю о последней сессии когда обнаружил о таком приколе и это около 20 блоков. В конечном итоге, всё может оказаться значительно веселее.

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

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

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
необходима массовая проверка
Смотрите. Я с помощью вашего приложения справлюсь со своими проблемами, а контора пока не готова к этому. С момента как начал разбираться выяснил,  первое, что при наличии штампа "Учебной версии" в 2014 версии на плоттер она не выходит. В общем, внутри конторы это как бы не вопрос. У нас в конторе у всех  2014. Есть только одна 2012. На ней я и тестировал этот момент. Т.е. вроде печать нормально в пределах конторы. А вот отправляя на сторону файл DWG, там могут оказаться не только 2014 но и ранние версии. Я выразил это мнение, пока начальство молчит. Исходя из этого свои огрехи я выловлю по ходу. А вопрос проверки всех файлов в конторе не могу сказать. Менталитет и логика израильтян, не всегда вписывается в наши понятия. Они типа живут сегодняшним днём. Что будет завтра, будет завтра тогда и будет искаться решение.  Я сказал, что есть версия на английском для проверки наличия штампа об учебной версии.  У меня стоит сейчас сообщение на русском, но чуть позже переведу  на английскую.  Когда отсутствую, могут  сесть за компьютер и открыть файл. Если будет файл со штампом то получат сообщение, что бы им было понятно, о чём речь.
Вкратце так.

Вот возникла одна проблема. При автосохранении файла пишет что Присутствует штамп учебной версии. Ситуация была такая. Вставлял блок получил сообщение что блок имеет штамп учебной версии. Нашёл файл блока открыл получил сообщение о штампе персохранил в DXF. Закрыл файл, потом открыл файл DXF и сохранил DWG. При последующем отрытии собщение о штампе отсутсвовало. Потом обнововил блоки в файле в который вставлял, и там сообщение исчезло, анологично при открытии файла сообщение о штампе отсутсвовалло. Но при автосообщении выскакивает сообщение что штамп есть. Я пару раз вызрузил и загрузил файл сообщения не было.

« Последнее редактирование: 07-06-2015, 09:39:26 от Valery Brelovsky »

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

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

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

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

Оффлайн Valery Brelovsky

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

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

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

Оффлайн Valery Brelovsky

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

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Если установить новую версию EmrInfo.bundle
Что то с утра не пошло. Разместил папку на то месте где была старая. При запуске Автокада и открытия файл появляется сообщение что есть метка. Сохраняю и открываю в 2012 сообщение есть. При последующих открытиях в 2014 сообщения нет. Пока вернул предыдущую сборку. Возможно что файлы *.arx  нужно разместитьв другой папке, а не только подгрузить? Наверное отложу до воскресенья. И ещё раз с утра попробую разобраться.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Сохраняю и открываю в 2012 сообщение есть.
А команду EMRCLEAR запускал?

Короче говоря, лучше один раз увидеть чем 100 раз услышать:

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

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
А команду EMRCLEAR запускал?

Конечно не запускал. :) Щас попоробую.
PS. Вот теперь всё работает. Осталось макрос с ваять, и забыть. С блоками как это буде, догадываюсь, что также останется сообщение, и потом открыть файл и провести чистку. Ссылочные не чистит, т.е. нужно каждый открыть и повести процедуру и сохранить и тогда ОК.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Осталось макрос с ваять, и забыть.
Кнопку с кодом
Код - INI [Выбрать]
  1. ^C^CEMRCLEAR;_QSAVE;
?
С блоками как это буде, догадываюсь, что также останется сообщение, и потом открыть файл и провести чистку. Ссылочные не чистит, т.е. нужно каждый открыть и повести процедуру и сохранить и тогда ОК.
Именно. Хотя я не понял это был вопрос или утверждение.  ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Хотя я не понял это был вопрос или утверждение
Перспективный план на следующую неделю. За макрос спасибо. Сделаю кнопку на работе. :)

PS. Что намечал, выполнил, установил макрос на кнопку. С блоками тоже хорошо. Заморочек вообще нет. Сегодня попался блок с меткой. Вставил в файл, запустил макрос  "1.^C^CEMRCLEAR;_QSAVE;" метка с блока была снята и основной файл чистый. Затем сохранил через WBLOCK с тем же именем в библиотеку и файл блока без метки. И открывать его не надо. Всё опробовано из описания. Большое спасибо Александр Наумович. :)
« Последнее редактирование: 15-06-2015, 07:38:34 от Valery Brelovsky »

Оффлайн tukoan

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Если установить новую версию EmrInfo.bundle, то при запуске AutoCAD 2014 появится новая команда EMRCLEAR - эта команда снимает флаг учебной версии в активном чертеже. Она никаких сообщений не выдаёт. При помощи команды CheckEmr можно будет убедится в том, что метка исчезла.

Команда EMRCLEAR работает, а на команды CheckEmr и CheckFilesEmr выдается сообщение о неизвестной команде.
Система Win7 x64, AutoCAD 2014 SP1, NetFrameWork  был 4.52 доустановил 4.0.
Подскажите, пож-ста, чего не хватает до полного счастья?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Команда EMRCLEAR работает, а на команды CheckEmr и CheckFilesEmr выдается сообщение о неизвестной команде.
Странно. Попробуй при помощи команды _NETLOAD загрузить EMRINFO.DLL из указанной папки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн tukoan

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Странно. Попробуй при помощи команды _NETLOAD загрузить EMRINFO.DLL из указанной папки.
Попробовал. Не помогло.
Команда: _NETLOAD
Не удалось загрузить сборку. Сведения об ошибке: System.IO.FileLoadException: Не удалось загрузить файл или сборку "file:///C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\Contents\EmrInfo.dll" либо одну из их зависимостей. Операция не поддерживается. (Исключение из HRESULT: 0x80131515)
Имя файла: 'file:///C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\Contents\EmrInfo.dll' ---> System.NotSupportedException: Предпринята попытка загрузить сборку из сетевого ресурса, что в предыдущих версиях .NET Framework могло привести к помещению сборки в "песочницу". Этот выпуск .NET Framework не включает политику CAS по умолчанию, поэтому данная загрузка может быть опасной. Если эта нагрузка не предназначена для изоляции сборки, включите переключатель loadFromRemoteSources. Дополнительные сведения см. на странице http://go.microsoft.com/fwlink/?LinkId=155569.
   в System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   в System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   в System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   в System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
   в System.Reflection.Assembly.LoadFrom(String assemblyFile)
   в Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
   в loadmgd()


Команда: CheckFilesEmr
Неизвестная команда "CHECKFILESEMR".  Для вызова справки нажмите F1.

Команда: CheckEmr
Неизвестная команда "CHECKEMR".  Для вызова справки нажмите F1.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Почитай эту статью: http://through-the-interface.typepad.com/through_the_interface/2011/07/loading-blocked-and-network-hosted-assemblies-with-net-4.html
Если в двух словах, то в acad.exe.config (находится в том же каталоге, что и acad.exe) нужно вписать:
Код - XML [Выбрать]
  1. <runtime>
  2.     <loadFromRemoteSources enabled="true"/>
  3. </runtime>

Ну и возможно будет достаточно разблокировать (Unblock) этот dll-файл, как показано здесь:

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

Оффлайн tukoan

  • ADN OPEN
  • Сообщений: 3
  • Карма: 0
Если в двух словах, то в acad.exe.config (находится в том же каталоге, что и acad.exe) нужно вписать:
Код - XML: [Выделить]
<runtime>
    <loadFromRemoteSources enabled="true"/>
</runtime>

Ну и возможно будет достаточно разблокировать (Unblock) этот dll-файл

Работают оба  варианта. Проблема закрыта.
Большое спасибо Вам, Александр Наумович, за предоставленные программы.
Хочется отметить скорость с которой Вы "разделываетесь" с поставленной задачей.


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

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

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Если в acad.exe.config уже есть тэг <runtime>, то

Код - XML [Выбрать]
  1. <runtime>
  2.     <loadFromRemoteSources enabled="true"/>
  3. </runtime>

вписывать ниже или внутрь тэга?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Если в acad.exe.config уже есть тэг <runtime>, то

Код - XML [Выбрать]
  1. <runtime>
  2.     <loadFromRemoteSources enabled="true"/>
  3. </runtime>

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

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Александр Наумович, добрый день.

Возникла необходимость допилить Ваш проект (EmrInfo) под Autodesk Civil 3D 2017.

Подправил ссылки, компилирую. Ошибка:

'Database" не содержит определения для "IsEmr" и не удалось найти метод расширения "IsEmr", принимающий тип "Database" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Заглядываю внутрь и пытаюсь вместо IsEmr найти подходящее свойство, но увы, самого свойства IsEmr не вижу или даже хотя бы что-то аналогичное. Подскажите, может это свойство стало обитать в другом месте?


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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Наумович, добрый день.

Возникла необходимость допилить Ваш проект (EmrInfo) под Autodesk Civil 3D 2017.

Подправил ссылки, компилирую. Ошибка:

'Database" не содержит определения для "IsEmr" и не удалось найти метод расширения "IsEmr", принимающий тип "Database" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Заглядываю внутрь и пытаюсь вместо IsEmr найти подходящее свойство, но увы, самого свойства IsEmr не вижу или даже хотя бы что-то аналогичное. Подскажите, может это свойство стало обитать в другом месте?



Начиная с AutoCAD 2015 этого свойства нет, так как в нём эта метка стирается. Т.е. если в AutoCAD 2015 (и более новых) открыть чертеж с меткой учебной версии и сохранить, то метка исчезает. Ну и проверить была ли эта метка изначально в dwg-файле в версиях AutoCAD 2015 и новее уже нельзя.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Начиная с AutoCAD 2015 этого свойства нет, так как в нём эта метка стирается. Т.е. если в AutoCAD 2015 (и более новых) открыть чертеж с меткой учебной версии и сохранить, то метка исчезает. Ну и проверить была ли эта метка изначально в dwg-файле в версиях AutoCAD 2015 и новее уже нельзя.

Благодарю.

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Спасибо попробую на досуге.
Пришёл это самый досуг. Правда не по моей воле. Установили Windows 10 и обещали что все будет работать. Я не проверил прошло время и обнаружил, что программа снятия метки не работает и не сообщает о том что таковая присутствует. Короче имею кучу файлов с меткой. В общем теперь поставил последний вариант и он нормально работает.   Так что еще раз спасибо за программу. Но вот с автозагрузкой что не получается
Размести C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\EmrInfo.bundle\Contents
дал ссылку на этот каталог и вот перегрузил и программа не заработала. Нужно в ручную подгружать.

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Вроде bundle должны быть в папке Users...
В надежные пути путь добавлен?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вроде bundle должны быть в папке Users...
Не обязательно.
Размести C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\EmrInfo.bundle\Contents
Неправильно. Правильно так:
C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\Contents
(т.е. не должно быты повторного EmrInfo.bundle в пути)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
 bundle не обязательно должно быть в  Users..., а вот для приложений в apps.autodesk.com было такое требование

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Неправильно. Правильно так:C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\Contents
Большое спасибо Александр. Теперь заработало!!!

Оффлайн Evgenia

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Александр Ривилис, скажите, пожалуйста, те файлы, которые вы выложили для 2014 автокада, чтобы удалять метку "создано учебной версией", нельзя ли сделать и для 2012? :)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Ривилис, скажите, пожалуйста, те файлы, которые вы выложили для 2014 автокада, чтобы удалять метку "создано учебной версией", нельзя ли сделать и для 2012? :)
Увы. Я и для 2014-ой их сделал только потому, что в нём (и в последующих) отказались от этой метки. Но в 2012-ой версии она есть и я не имею права её снимать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Evgenia

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Понятно, спасибо!

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Evgenia
А почему бы вам для удаления метки не воспользоваться бесплатной Autodesk'овской утилитой DWG TrueView? Начина с версии 2015 она позволяет убирать метку "учебной версии": https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/Educational-Plot-Stamp-Removal-Issues.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Evgenia

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Александр Ривилис, да, спасибо! Воспользуюсь именно этим приложением. Просто гораздо удобнее запустить программу не выходя из автокада  :)

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
https://mikhailov-andrey-s.blogspot.ru/2018/04/chto-novogo-v-autocad-2019-3.html
Цитировать
Autodesk решил, что хватит халявы, и решил вернуть маркировку файлов, созданных в студенческой версии AutoCAD.
Теперь введя в командную строку системную переменную STUDENTDRAWING можно узнать, создан ли был файл в коммерческой версии (STUDENTDRAWING = 0), или в учебной (STUDENTDRAWING = 1)
Также при печати возвращается надпись "СОЗДАНО В СТУДЕНЧЕСКОЙ ВЕРСИИ ПРОДУКТА AUTODESK".
Радость была недолгой  :-\

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Радость была недолгой  :-\
Не всё так страшно. В отличие от старых версий "заражение" файлов учебной меткой не происходит. И снова появилось API Database.IsEmr :-)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Если верить Андрею Михайлову, то заражение возможно:
Цитировать
Также нужно помнить, что достаточно в свой проект скопировать какой-то безобидный объект из "студенческого" файла, чтобы навсегда заразить свой коммерческий проект надписями. Будьте бдительны и, если уж используете рабский труд студентов, то делайте это аккуратно и с умом.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Проверил - действительно, метка учебной версии не передаётся в нормальный файл при копировании объектов из учебного. Видимо, Андрей ошибся.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Проверил - действительно, метка учебной версии не передаётся в нормальный файл при копировании объектов из учебного. Видимо, Андрей ошибся.
Именно:
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Да вроде говорили что ещё в 2015 отказались помечать файлы учебной версии.  Я сегодня ещё работаю в 2014 но сообщение о метке выскакивает редко, а свои подпорченные файлы блоков я почистил. А что в 2019 опять возникла проблема с меткой учебной версии?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А что в 2019 опять возникла проблема с меткой учебной версии?
Возвращается в 2019-ой версии.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Valery Brelovsky

  • ADN Club
  • Сообщений: 24
  • Карма: 1
Спасибо, понял. :)

Оффлайн bender

  • ADN Club
  • **
  • Сообщений: 62
  • Карма: 4
Подниму тему.

Может я чего-то пропустил. Более вменяемых способов снять эту (вырезано цензурой) метку не появилось, кроме как пересохранение через dxf или DWG TrueView?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
bender,
Так как Autodesk повторно ввёл эту метку для образовательных лицензий в последних версиях, то дальнейшее обсуждение этой темы закрываю!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение