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 теперь проблемы и с этим сообщеним и с печатью?Это вопрос или утверждение?
Пользователи теперь спрашивают как включить это сообщениеНикак. Только если ты напишешь для них приложение, которое будет анализировать Database.IsEmr и выдавать сообщение.
Пользователи теперь спрашивают как включить это сообщение, т.к. они даже не вкурсе что передали в другую организацию файлы с этим сообщением, при это у нас нет лицензий для учебных заведений (файлы могли появится только из вне).Да, согласен, знатную нам свинью подсунули в 2014 версии SP1. У нас тоже с этим проблемы есть. Казалось бы, если уж убрали сообщение, почему бы сразу не сделать, чтобы штамп снимался при пересохранении? Ан нет, помучайтесь...
Да, согласен, знатную нам свинью подсунули в 2014 версии SP1.Абсолютно согласен. Если решили отказаться от метки учебной версии, то это нужно было делать только в новой (т.е. 2015) версии. И чтобы сразу при сохранении эта метка снималась.
Надо будет проверить на досуге... Есть подозрение, что надо допиливать. Я так понимаю, что если "заражена" внешняя ссылка, сообщение не появится при открытии чертежа, куда эта ссылка вставлена. А стандартное сообщение в этом случае появлялось. В любом случае, спасибо за идею!Ну тогда как-то так. Тоже практически без тестирования:
Ужастик: в AutoCAD 2016 появится очередное новшество - если ты хотя бы раз открывал в своём акаде файл, созданный в учебной версии, то после этого, при открытии любых других чертежей, они автоматом так же становятся учебными. Причём надпись об учебной версии будет располагаться на весь лист, по диагонали. Не поможет даже переустановка акада, только полный снос системы. :) Всем приятных снов ;)Да, как-то так :)
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)
Вроде бы на этой строчке (или где-то рядом):Александр Наумович, по быстрому попробовал проверить - чего-то не работает.Проверил и исправил. Не хватало одного try/catch.
Предложите другойИнформацию в реестре о наличии\отсутствии SP для текущей версии AutoCAD я бы искал следующим образом:
Информацию в реестре о наличии\отсутствии SP для текущей версии AutoCAD я бы искал следующим образом:А я бы сделал проще: проверил значение системной переменной _VERNUM. Для AutoCAD 2014 SP1:
Command: _VERNUMДумаю что для Civil 3D 2014 SP1 аналогичное значение. Но можно проверить.
_VERNUM = "I.108.0.0 (UNICODE)" (read only)
Спасибо за идеюСоответственно достаточно проверки первых 5 байт на "I.108"
C3D без SP: _VERNUM = "I.18.0.0 (UNICODE)"
C3D c SP1: _VERNUM = "I.108.0.4 (UNICODE)"
C3D c SP2 _vernum: "I.108.0.11 (UNICODE)"В нем же тоже нет уведомления об учебной версии?
Соответственно достаточно проверки первых 5 байт на "I.108"И его лучше всего проверять перед подпиской на событие DocumentLockModeChanged. Если не "I.108", то и подписывать незачем.
Вопрос в том что при вставке блока сообщение о учебной версии буде работать?А попробовать самому? ;) Думаю, что если ты вставишь такой "испорченный" блок это сообщение появится сразу после окончания команды вставки.
А попробовать самому?Спасибо. Попробовать конечно можно, но дело в том что сегодня не знаю какие блоки и файлы у меня подпорчены. От того и вопрос, что бы знать к чему готовится. И потом я говорю о последней сессии когда обнаружил о таком приколе и это около 20 блоков. В конечном итоге, всё может оказаться значительно веселее.
Попробовать конечно можно, но дело в том что сегодня не знаю какие блоки и файлы у меня подпорчены.Т.е. вопрос заключается в том, что необходима массовая проверка dwg-файлов на наличие в них заразы? Например, проверить все dwg-файлы в заданном подкаталоге?
необходима массовая проверкаСмотрите. Я с помощью вашего приложения справлюсь со своими проблемами, а контора пока не готова к этому. С момента как начал разбираться выяснил, первое, что при наличии штампа "Учебной версии" в 2014 версии на плоттер она не выходит. В общем, внутри конторы это как бы не вопрос. У нас в конторе у всех 2014. Есть только одна 2012. На ней я и тестировал этот момент. Т.е. вроде печать нормально в пределах конторы. А вот отправляя на сторону файл DWG, там могут оказаться не только 2014 но и ранние версии. Я выразил это мнение, пока начальство молчит. Исходя из этого свои огрехи я выловлю по ходу. А вопрос проверки всех файлов в конторе не могу сказать. Менталитет и логика израильтян, не всегда вписывается в наши понятия. Они типа живут сегодняшним днём. Что будет завтра, будет завтра тогда и будет искаться решение. Я сказал, что есть версия на английском для проверки наличия штампа об учебной версии. У меня стоит сейчас сообщение на русском, но чуть позже переведу на английскую. Когда отсутствую, могут сесть за компьютер и открыть файл. Если будет файл со штампом то получат сообщение, что бы им было понятно, о чём речь.
Честно говоря из последней проблемы я мало что понял, кроме того, что моя программа определяет файл автосохранения как "зараженный".В момент автоссохранения, появляется сообщение что в файле присутствует штам учебной версии, хотя я его удалил через пересохранение в DXF. При повторном открытии файла нет сообщения что штам есть, но в этом же файле в момент автосохранения появляется сообщение что в файле присуствует штамп учебной версии. А сами файлы Автосохранения я не открывал. Хотя наверное надо было. Вчера не подумал на эту тему.
Где то было написанно как подкючить это приложение что бы не загружать его каждый раз, но не могу найти эту тему.Самый простой способ - это правка реестра. Если не боишься с ним работать, то я напишу что и как.
Если не боишься с ним работать, то я напишу что и как.Нет, с реестром я не работал, так что начинать, сегодня не стоит. Вчера подгрузил последнюю версию EmpInfo. Есть проблема. Открываю файл со штампом, получаю сообщение, жму ОК окно не закрывается, жму несколько раз не выходит закрыть, читаю в ком строке предлагается нажать Enter. Поле значительного количества попыток, окно закрывается. Но теперь я хочу закрыть файл, при этом опять появляется окно с сообщением что есть штамп, жму ОК закрытия файла не происходит, снова пытаюсь закрыть файл, опять получаю сообщение и так несколько раз. В конечном итоге файл всё таки удаётся закрыть.
По поводу надоедливого сообщения предлагаю такую схему - если в одном сеансе работы с AutoCAD в dwg-файле метка была обнаружена и сообщение об этом уже было, то в дальнейшем в этом сеансе сообщений об этом файле не делать.Вот первый вариант, что был меня, устраивал вполне. Я сегодня вернулся к файлу и 30 поста, просто вчера было в конце дня и я не ожидал, что придётся попробовать и понять процесс. Здесь уже если штамп присутствует от сообщение закрывается только после нескольких раз нажатия ОК, и когда закрываешь или сохраняешь опять сообщается что метка есть. И опять же после много кратного нажатия ОК процесс идёт дальше и файл закрывается.(файл я не исправлял так что закрывал с тем что метка остаётся и сообщение оно правильно) Но закрыть или открыть файл тяжело. Да и хватило бы наверное сообщения при открытии и вставке файла. Т.е. если закончил и закрываешь, то уже не важно с меткой или без неё файл. А то что приходит сообщение если вставляешь блок с меткой это вообще отлично. Со ссылочными у меня пока файлы нормальные. Т.е. в новых файлах я слежу за этим. А к старым я пока не возвращался. Так что самый первый вариант меня устраивал выше крыши и там сообщалось что ссылочные имеют метку. Его только по-простому поставить, что бы он загружался при запуске. Хотя и загрузить отдельно не проблема.
Если ты сделаешь то что написано здесь: http://adn-cis.org/forum/index.php?topic=1110.msg9845#msg9845, а затем заменишь EmrInfo.dll, на тот, который тебя устраивает, то получишь автозагрузку.Понял. Спасибо. Хорошо попробую.
Если проверять файлы все, то нужно исправлять, а я не могу все сразу.Я так понимаю, что проблема в том, что ты используешь для убирания метки сохранение в DXF. Способ далеко не идеальный и не работает (или работает плохо) с чертежами, созданными в вертикальных приложениях (Civil 3D, Architectural Desktop и т.д.).
EmrTools2014x64.arx
EmrTools2014x32.arx
Если установить новую версию EmrInfo.bundle, то при запуске AutoCAD 2014 появится новая команда EMRCLEAR - эта команда снимает флаг учебной версии в активном чертеже. Она никаких сообщений не выдаёт. При помощи команды CheckEmr можно будет убедится в том, что метка исчезла. Для того, чтобы метка отсутствовала и в соответствующем dwg-файле, чертеж необходимо после этого сохранить. Я не проверял работоспособность этой команды в вертикальных приложениях AutoCAD линейки 2014, но по всей вероятности должно работать.Так файла *.arx работают во всех приложениях и самом Автокаде?Те arx-файлы, которые я выложил, должны работать в AutoCAD только версии 2014 без и с Service Pack, а так же в 2014-ых вертикальных приложениях.
Проверишь в Civil 3D 2014Да обязательно проверю.
Если установить новую версию EmrInfo.bundleЧто то с утра не пошло. Разместил папку на то месте где была старая. При запуске Автокада и открытия файл появляется сообщение что есть метка. Сохраняю и открываю в 2012 сообщение есть. При последующих открытиях в 2014 сообщения нет. Пока вернул предыдущую сборку. Возможно что файлы *.arx нужно разместитьв другой папке, а не только подгрузить? Наверное отложу до воскресенья. И ещё раз с утра попробую разобраться.
Сохраняю и открываю в 2012 сообщение есть.А команду EMRCLEAR запускал?
А команду EMRCLEAR запускал?
Осталось макрос с ваять, и забыть.Кнопку с кодом
С блоками как это буде, догадываюсь, что также останется сообщение, и потом открыть файл и провести чистку. Ссылочные не чистит, т.е. нужно каждый открыть и повести процедуру и сохранить и тогда ОК.Именно. Хотя я не понял это был вопрос или утверждение. ;)
Хотя я не понял это был вопрос или утверждениеПерспективный план на следующую неделю. За макрос спасибо. Сделаю кнопку на работе. :)
Если установить новую версию EmrInfo.bundle, то при запуске AutoCAD 2014 появится новая команда EMRCLEAR - эта команда снимает флаг учебной версии в активном чертеже. Она никаких сообщений не выдаёт. При помощи команды CheckEmr можно будет убедится в том, что метка исчезла.
Команда EMRCLEAR работает, а на команды CheckEmr и CheckFilesEmr выдается сообщение о неизвестной команде.Странно. Попробуй при помощи команды _NETLOAD загрузить EMRINFO.DLL из указанной папки.
Странно. Попробуй при помощи команды _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.
Если в двух словах, то в acad.exe.config (находится в том же каталоге, что и acad.exe) нужно вписать:
Код - XML: [Выделить]
<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
Ну и возможно будет достаточно разблокировать (Unblock) этот dll-файл
Хочется отметить скорость с которой Вы "разделываетесь" с поставленной задачей.Просто для большинства проблем уже есть известные решения, о которых я помню, или помогает поиск в интернете.
Если в acad.exe.config уже есть тэг <runtime>, тоВнутрь.Код - XML [Выбрать]
<runtime> <loadFromRemoteSources enabled="true"/> </runtime>
вписывать ниже или внутрь тэга?
Александр Наумович, добрый день.
Возникла необходимость допилить Ваш проект (EmrInfo) под Autodesk Civil 3D 2017.
Подправил ссылки, компилирую. Ошибка:
'Database" не содержит определения для "IsEmr" и не удалось найти метод расширения "IsEmr", принимающий тип "Database" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Заглядываю внутрь и пытаюсь вместо IsEmr найти подходящее свойство, но увы, самого свойства IsEmr не вижу или даже хотя бы что-то аналогичное. Подскажите, может это свойство стало обитать в другом месте?
Начиная с AutoCAD 2015 этого свойства нет, так как в нём эта метка стирается. Т.е. если в AutoCAD 2015 (и более новых) открыть чертеж с меткой учебной версии и сохранить, то метка исчезает. Ну и проверить была ли эта метка изначально в dwg-файле в версиях AutoCAD 2015 и новее уже нельзя.
Спасибо попробую на досуге.Пришёл это самый досуг. Правда не по моей воле. Установили Windows 10 и обещали что все будет работать. Я не проверил прошло время и обнаружил, что программа снятия метки не работает и не сообщает о том что таковая присутствует. Короче имею кучу файлов с меткой. В общем теперь поставил последний вариант и он нормально работает. Так что еще раз спасибо за программу. Но вот с автозагрузкой что не получается
Вроде bundle должны быть в папке Users...Не обязательно.
Размести C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\EmrInfo.bundle\ContentsНеправильно. Правильно так:
Неправильно. Правильно так:C:\Program Files\Autodesk\ApplicationPlugins\EmrInfo.bundle\ContentsБольшое спасибо Александр. Теперь заработало!!!
Александр Ривилис, скажите, пожалуйста, те файлы, которые вы выложили для 2014 автокада, чтобы удалять метку "создано учебной версией", нельзя ли сделать и для 2012? :)Увы. Я и для 2014-ой их сделал только потому, что в нём (и в последующих) отказались от этой метки. Но в 2012-ой версии она есть и я не имею права её снимать.
Autodesk решил, что хватит халявы, и решил вернуть маркировку файлов, созданных в студенческой версии AutoCAD.Радость была недолгой :-\
Теперь введя в командную строку системную переменную STUDENTDRAWING можно узнать, создан ли был файл в коммерческой версии (STUDENTDRAWING = 0), или в учебной (STUDENTDRAWING = 1)
Также при печати возвращается надпись "СОЗДАНО В СТУДЕНЧЕСКОЙ ВЕРСИИ ПРОДУКТА AUTODESK".
Радость была недолгой :-\Не всё так страшно. В отличие от старых версий "заражение" файлов учебной меткой не происходит. И снова появилось API Database.IsEmr :-)
Также нужно помнить, что достаточно в свой проект скопировать какой-то безобидный объект из "студенческого" файла, чтобы навсегда заразить свой коммерческий проект надписями. Будьте бдительны и, если уж используете рабский труд студентов, то делайте это аккуратно и с умом.
Проверил - действительно, метка учебной версии не передаётся в нормальный файл при копировании объектов из учебного. Видимо, Андрей ошибся.Именно:
А что в 2019 опять возникла проблема с меткой учебной версии?Возвращается в 2019-ой версии.