Autodesk Desktop App — что это за программа и нужна ли она?
- Описание
- Разбираемся
- Нужна ли программа?
- Удаление
- Вывод
Всем пламенный привет Сегодня как всегда я постараюсь выяснить инфу о данной программе, мы поймем зачем она нужна, а вы сможете сделать вывод и смысле ее нахождения на вашем компьютере. Ну что, поехали теперь разбираться
Autodesk Desktop App — что это за программа?
Я прошустрил интернет и стало все понятно. Давайте я сразу отвечу коротко:
Autodesk Desktop App — это компонент, который позволяет обновить установленные программы Autodesk, получить исправления, а также скачать другое ПО этой компании.
Теперь разбираемся
Разберемся и вы сможете понять — нужна вам эта прога или нет?
Значит данная программа устанавливается в эту папку:
C:\Program Files\Autodesk\Autodesk Desktop App
PS: Если винда 32-битная, то папка будет Program Files (x86).
И на самом деле все просто — данная прога это некий центр, где можно скачать проги Autodesk, обновить их, а также получить некоторые обновления. То есть это служебное приложение, некая оболочка, просто тоже самое существует и в Adobe — там тоже есть такая небольшая программка, при помощи которой можно скачать другое ПО Адобе. Например поставили Фотошоп — а можно скачать Лайтрум не переходя на офф сайта и вообще не открывая браузер. Но это уже совсем другая история))
Еще важно понимать — когда выйдет новая версия ПО Autodesk или обновление, то прога вас об этом уведомит специальным сообщением. Второе что важно понимать — да, другие проги при помощи Autodesk Desktop App скачать можно, но тут есть условие — у вас должна быть платная подписка ну или скачанные проги будут работать в демо-режиме. Халявы увы тут нет, компания серьезная
Вот пример — установка приложения Autodesk Revit 2019 и вместе с этой прогой ставится Autodesk Desktop App:

И это вполне нормальное явление. Конечно этот компонент может и не устанавливаться.. если вы скачали прогу с левого сайта, а она уже модифицированная, то есть репак..
Второй пример — тоже самое, только тут уже ПО MAYA, и при установке этой проги тоже ставится компонент Desktop App, вот только именно внизу на картине — ошибка установки:

Ну а вот собственно пример как выглядит сам компонент Autodesk Desktop App:

Как видите — программа как бы является центром, где вы можете установить другие продукты, а также получить обновления ПО. Поэтому, если вы софт купили — эта прога должна в принципе быть вам полезной.
Вот простой пример полезности — представим что у вас установлена серьезная прога Автокад, так вот утилита Autodesk Desktop App — может подсказать, что Автокаду пора обновиться и как видим внизу на картинке — это не просто обновление, а целый пак обнов Service Pack 1 (это означает что будут исправлено сразу много проблем):

Конечно такой пак очень и очень желательно установить, тут сомнений нет. А вот как узнать что пак появился? а скачать его? а поставить правильно? Вот все это — сможет сделать Autodesk Desktop App, в чем и плюс этого компонента
Нужна ли эта программа на компьютере?
А если удалить? Что будет? Давайте разберемся:
- После удаления установленный софт Autodesk будет работать в нормальном режиме, но не сможет обновляться. То есть получать исправления там, новые версии устанавливаться не будут. Критично ли это? Да… если у вас софт лицензионный.
- Также вполне возможно что Autodesk Desktop App чувствует в проверке лицензии. Но это только мои мысли.
- Важно понимать одно — вот например есть у вас прога от Autodesk, которой вы пользуетесь, она вам нужна. Так вот, если удалить Autodesk Desktop App — то ваша прога останется работать как и раньше. Ничего плохого не будет.
- Мой совет — если у вас софт Autodesk купленный, то удалять компонент Desktop App не стоит. Это только плюс для вас, как для клиента компании.
Как удалить?
Удалять нужно только если точно понимаете что в этом есть необходимость. Кстати заранее еще можно создать точку восстановления, тогда если что — сможете быстро все восстановить.
Простой способ удаления:
- Зажмите Win + R, появится окошко Выполнить, вставьте команду appwiz.cpl, кликните ОК.
- Откроется окно установленного софта. Здесь находим Autodesk Desktop App, нажимаем правой кнопкой — выбираем удалить.
- Все — теперь следуем инструкциям на экране, обычно нужно нажимать Далее/Next/Удалить/Uninstall. Вполне возможно что потребуется перезагрузка.
Заключение
- Autodesk Desktop App — фирменный компонент, позволяющий обновить установленное ПО Autodesk, получить исправления, а также загрузить другие продукты данной компании.
- Если ПО лицензионное — удалять не советую.
Надеюсь данная информация оказалась полезной. Удачи и добра, до новых встреч друзья!
Что-то новенькое? Autodesk Genuine Service.
погуглил и пока инфы не много и в основном на зарубежных сайтах. Вроде как проблема в Autodesk Genuine Service. У меня макс 2020.2 «лицензирован» стандартным способом по инструкции, до сегодняшнего для работал нормально где-то полтора месяца. Уже снес, сейчас чищу хвосты и буду заново ставить. Те, кто уже сталкивался и разобрался в проблеме подскажите какие дополнительные действия нужно предпринять при установке или после?
На сайте c 17.01.2017
Сообщений: 936
World
На сайте c 27.03.2017
Сообщений: 395
Краснодар
и тишина. только мертвые с косами стоят)))
На сайте c 14.12.2007
Сообщений: 841
Краснодар
vladimir.drobzhev90 мне понравилось когда корел выкидывал такое же окно, он при этом предлагал лицензироваться с большой такой скидкой )
На сайте c 15.04.2011
Сообщений: 430
Москва
Цитата vladimir.drobzhev90:
Те, кто уже сталкивался и разобрался в проблеме подскажите какие дополнительные действия нужно предпринять при установке или после?
Продать квартиру, поменять фамилию.
На сайте c 13.12.2016
Сообщений: 148
Цитата vladimir.drobzhev90:
Вот это чудо у меня сегодня вылезло поверх всех окон
погуглил и пока инфы не много и в основном на зарубежных сайтах. Вроде как проблема в Autodesk Genuine Service. У меня макс 2020.2 «лицензирован» стандартным способом по инструкции, до сегодняшнего для работал нормально где-то полтора месяца. Уже снес, сейчас чищу хвосты и буду заново ставить. Те, кто уже сталкивался и разобрался в проблеме подскажите какие дополнительные действия нужно предпринять при установке или после?
это не автодеск, это скорее всего местный ритейлер встраивает в свои сборки подобные штуки, просто найдите другой источник файла
На сайте c 27.04.2016
Сообщений: 2237
Kyiv
Цитата vladimir.drobzhev90:
Те, кто уже сталкивался и разобрался в проблеме подскажите какие дополнительные действия нужно предпринять при установке или после?
В тибецкие неконтактные храмы на 2 года петлять
На сайте c 20.11.2009
Сообщений: 150
Тоже вылезло, хотя макс ставил давно.
На сайте c 27.03.2017
Сообщений: 395
Краснодар
Будьте осторожны с удалением этой хрени под названием Autodesk genuine service. Я снес макс, корону и вирей, удалил autodesk desktop app. А вот Autodesk genuine service не удалялся, поэтому его решил сносить через revo uninstaller pro. В итоге при сканировании было найдено и предложено к удалению инфы почти на 7 гигов, которая к нему не имеет отношения, в том числе файлы относящиеся к панели пуска винды, файлы utorrent и других приложений. Странно, впервые такое с Revo случилось.
На сайте c 20.11.2009
Сообщений: 150
Цитата vladimir.drobzhev90:
погуглил и пока инфы не много и в основном на зарубежных сайтах. Вроде как проблема в Autodesk Genuine Service. У меня макс 2020.2 «лицензирован» стандартным способом по инструкции, до сегодняшнего для работал нормально где-то полтора месяца. Уже снес, сейчас чищу хвосты и буду заново ставить. Те, кто уже сталкивался и разобрался в проблеме подскажите какие дополнительные действия нужно предпринять при установке или после?
Без всяких переустановок просто заблочил Genuine Service через брандмаузер, полет нормальный, больше никаких окон не вылезает.
На сайте c 27.03.2017
Сообщений: 395
Краснодар
Цитата r-end:
Без всяких переустановок просто заблочил Genuine Service через брандмаузер, полет нормальный, больше никаких окон не вылезает.
Вооот, приятно увидеть адекватный комент с помощью)) а то у нас на форуме теперь одни только юмористы водятся)))
Итак решение! Спасибо Charlyxxx .
Необходимо найти файл: c:\Users\USERNAME\Autodesk\Genuine Service\message_router.exe
Переименуй файл к примеру так: _message_router.exe , и сообщение не будет тебя раздражать.
Также во время установки, перед самой установкой: В файле setup.ini нужно найти и заменить строки HIDDEN на SHARED
При установке в выборе компонентов появляется заголовок Autodesk Genuine Service, нужно просто снять галочку. Таким способом можно еще Autodesk Desktop App не устанавливать.
Первый опыт написания плагинов для Autocad на C#
Я начинающий разработчик, «школьный» уровень знания С++, небольшой (2 года) опыт программирования на С#, нулевой опыт работы в автокаде
Недавно попросили изменить LISP программки автокада, предназначенные для создания/изменения межевых планов и подготовки соответствующих документов MS Word / XML — пофиксить баги и добавить новый функционал.
Поскольку читабельность программ на Лиспе (по крайней мере для меня) оставляет желать лучшего, я решил переписать это на более понятный язык.
Т.к. мне не нужны были миллисекунды прироста скорости, я пропустил С++ и остановился на C#
Пишу эту статью, чтобы:
1. Разложить у себя в голове по полочкам, что я узнал об Autocad.
2. Помочь тем, кто так же как я продирается через очень малое количество документации.
3. Получить в комментариях информацию вида «это ты делаешь неправильно, проще и лучше будет сделать так. »
Начало работы. Создание плагина.
Создаем проект C# по шаблону ClassLibrary
Добавляем ссылки на managed библиотеки API Autocad’a, которые лежат в папке программы.
В моем случае это:
C:\Program Files\AutoCAD 2007\acdbmgd.dll
C:\Program Files\AutoCAD 2007\acmgd.dll
Создаем класс, который что-то делает:
using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; namespace AutocadPlugin < public class test : IExtensionApplication < [CommandMethod("hello")] public void Helloworld() < var editor = Application.DocumentManager.MdiActiveDocument.Editor; editor.WriteMessage("Привет из Autocad плагина"); >public void Initialize() < var editor = Application.DocumentManager.MdiActiveDocument.Editor; editor.WriteMessage("Инициализация плагина.."+Environment.NewLine); >public void Terminate() < >> >
Наследование от IExtensionApplication необязательно, Autocad автоматически подцепит все public классы в библиотеки, но, как мне сказали, так будет быстрее. Плюс можно контролировать Initialize/Terminate плагина.
Компилируем, запускаем автокад, загружаем плагин командой netload (открывается окно выбора managed dll)
Теперь при вводе команды hello мы будем получать ожидаемый ответ.
Структура Autocad приложения:
То, что мы видим на экране, графические объекты, унаследованные от Entity
Кроме видимых, есть невидимые информационные объекты — Слои, Типы линий, Стили размерности (Dimension styles), Стили таблиц и т.д.
Все это хранится в Database Table Records, в хранилищах вида TYPETable и классах вида TYPETableRecord.
Идентификаторы объектов
- ObjectId, известный также как EName (entity name). Число, создаваемое при открытии рисунка.
Использование — идентификация объекта в базе в течении одной сессии, объект запрашивается из базы по его ObjectId
Может меняться между разными открытиями, лучше не использовать для сохранения ссылок на объекты - Handle — число, неизменное между разными открытиями документа, удобно использовать для сохранения связей между объектами при сохранении файла.
Работа с базой данных
Обычно работа с базой идет с помощью транзакции. Объекты запрашиваются из базы данных, изменяются и commit’ом транзакции сохраняются обратно
Во время транзакции объект запрашивается из БД в одном из 3х режимов ForRead, ForWrite, ForNotify.
Назначение первых двух очевидно, третий как-то используется для механизма событий, с чем я пока не пересекался
В режиме ForWrite автокадом создаются дополнительные объекты, позволяющие отменить изменения в транзации.
Если нужно изменить объект, открытый как «ForRead», вызывается его метод UpgradeOpen().
Если вызвать этот метод на объекте, уже открытом в режиме изменения, метод выдаст исключение.
Пример получения объекта Polyline по его ObjectId
// UPDATE: Следует аккуратно работать с полилинией, полученной таким способом. При попытке изменения некоторых частей, например при вызове функции UpgradeOpen вылетит исключение, т.к. транзакция уже закрыта public static Polyline GetPolylineByEname(ObjectId ename) < if (ename == ObjectId.Null) return null; Polyline polyline = null; var db = Application.DocumentManager.MdiActiveDocument.Database; using (var transaction = db.TransactionManager.StartTransaction()) < return transaction.GetObject(ename, OpenMode.ForRead) as Polyline; >>
Транзакции могут быть вложенными, при отмене верхнеуровневой транзации отменяются и все дочерние.
В начале, долго не мог разобрать где ошибка — не сохранялись изменения в рисунке. Как оказалось забыл закрыть верхнюю транзацию.
Иллюстрация
public void OwnerTransFunction() < var db = Application.DocumentManager.MdiActiveDocument.Database; using (var transaction = db.TransactionManager.StartTransaction()) < // много кода ChangePolylineInChildTransation() >> public void ChangePolyline() < var db = Application.DocumentManager.MdiActiveDocument.Database; using (var transaction = db.TransactionManager.StartTransaction()) < // получение полилинии // ее измененние transaction.Commit(); // на этом этапе данные сохранены в базу, но после завершения внешней транзации без Commit'a изменения будут отменены >>
UPDATE: Как мне подсказали в комментариях, предпочтительнее всегда вызывать transaction.Commit(), кроме случаев, когда нужно отменить транзакцию. Если транзакция не коммитится, автоматически вызывается transaction.Abort(), влекущий за собой дополнительные расходы.
Словари
Словари я использовал для сохранения своих данных в DWG, чтобы не создавать лишних файлов
Я столкнулся с двумя видами словарей в рисунке — NamedObjectDictionary и ExtensionDictionary
Данные в словарях хранятся в записях (Record), которые в свою очередь хранят типизированные значения.
Адресуются данные по текстовым ключам.
NamedObjectDictionary — глобальный словарь рисунка. Создается автоматически при создании документа.
Его я использовал для хранения ссылок на главные используемые мной объекты.
ExtensionDictionary — словарь, свой для каждого объекта, его нужно создавать вручную.
Проверить его существование можно сравнив поле entity.ExtensionDictionary c ObjectId.Null
Пример записи и получения строкового значения из ExtensionDictionary
public static void SetExtDictionaryValueString(ObjectId ename, string key, string value) < if (ename == ObjectId.Null) throw new ArgumentNullException("ename"); if (String.IsNullOrEmpty(key)) throw new ArgumentNullException("key"); var doc = Application.DocumentManager.MdiActiveDocument; using (var transaction = doc.Database.TransactionManager.StartTransaction()) < var entity = transaction.GetObject(ename, OpenMode.ForWrite); if (entity == null) throw new DataException("Ошибка при записи текстового значения в ExtensionDictionary: entity с ObjectId=" + ename + " не найдена"); //Получение или создание словаря extDictionary var extensionDictionaryId = entity.ExtensionDictionary; if (extensionDictionaryId == ObjectId.Null) < entity.CreateExtensionDictionary(); extensionDictionaryId = entity.ExtensionDictionary; >var extDictionary = (DBDictionary) transaction.GetObject(extensionDictionaryId, OpenMode.ForWrite); // Запись значения в словарь if (String.IsNullOrEmpty(value)) < if (extDictionary.Contains(key)) extDictionary.Remove(key); return; >var xrec = new Xrecord(); xrec.Data = new ResultBuffer(new TypedValue((int) DxfCode.ExtendedDataAsciiString, value)); extDictionary.SetAt(key, xrec); transaction.AddNewlyCreatedDBObject(xrec, true); Debug.WriteLine(entity.Handle+"['" + key + "'] = '" + value + "'"); transaction.Commit(); > > public static string GetExtDictionaryValueString(ObjectId ename, string key) < if (ename == ObjectId.Null) throw new ArgumentNullException("ename"); if (String.IsNullOrEmpty(key)) throw new ArgumentNullException("key"); var doc = Application.DocumentManager.MdiActiveDocument; using (var transaction = doc.Database.TransactionManager.StartTransaction()) < var entity = transaction.GetObject(ename, OpenMode.ForRead); if (entity == null) throw new DataException("Ошибка при чтении текстового значения из ExtensionDictionary: полилиния с ObjectId=" + ename + " не найдена"); var extDictionaryId = entity.ExtensionDictionary; if (extDictionaryId == ObjectId.Null) throw new DataException("Ошибка при чтении текстового значения из ExtensionDictionary: словарь не найден"); var extDic = (DBDictionary)transaction.GetObject(extDictionaryId, OpenMode.ForRead); if (!extDic.Contains(key)) return null; var myDataId = extDic.GetAt(key); var readBack = (Xrecord)transaction.GetObject(myDataId, OpenMode.ForRead); return (string)readBack.Data.AsArray()[0].Value; >>
Работа с глобальным словарем почти такая же, только объект DBDictionary получается так:
var dictionary = (DBDictionary) transaction.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite);
С чем я еще столкнулся
1. Автозагрузка плагина
После пары десятков раз ввода netload для пятисекундной проверки плагина мне это надоело и я стал искать как упросить процедуру.
В ходе поиска наткнулся на статью, рассказывающую об автозагрузке .NET плагинов. Вкратце — нужно добавить ключ в реестр
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.0\ACAD-5001:419\Applications\GeocomplexPlugin] "LOADCTRLS"=dword:00000002 "MANAGED"=dword:00000001 "LOADER"="C:\\GeoComplexAutocadPlugin\\AutocadGeocomplexPlugin.dll"
Пояснения:
R17.0 — Autocad 2007
419 для русской версии
409 для английской версии
GeocomplexPlugin — создаваемый раздел
LOADCTRLS = 2 — загружать при старте автокада. Определенными ключами можно сделать запуск «по требованию», плагин загружается, когда вводится одна из его команд
LOADER — путь к плагину
2. Debug
Т.к. в плагине нельзя запустить пошаговую отладку в VS, мне пришлось на некоторых этапах выводить отладочные сообщения.
Поскольку editor автокада для этих целей использовать неудобно, сообщения я выводил стандартными средствами Debug.WriteMessage()
Дебаг будет выводиться только при компилировании в режиме отладки, выводимые данные можно посмотреть, запустив программу DebugView
UPDATE: Решил проблему пошаговой отладки:
Победил эту проблему таким образом:
В файле настройки автокада acad.exe.config установил среду исполнения на v4.0:
Поменял среду исполнения плагина на 4.0 client profile
И настройках сборки AssemblyInfo.cs закомментировал атрибут AllowPartiallyTrustedCallers
3. Отправка команды в Editor
Некоторые действия не реализованы в Autocad .NET API, или их намного проще сделать командной строкой.
Самый простой способ выполнить команду — выполнить функцию, пример для ZoomExtents:
var doc = Application.DocumentManager.MdiActiveDocument; doc.SendStringToExecute("_zoom _e ",false,false,true);
В автокаде пробел эквивалентен Enter, поэтому если послать команду без завершающего пробела, в результате в editor’e будет введено _e и он будет ожидать дальнейшего ввода
Однако этот способ не всегда можно использовать. Принцип работы команды SendStringToExecute такой, что команды посылается только после завершения работы фунции, вызыванной командой. Поэтому если вы сначала вызовите эту команду, а потом, например, предложите пользователю выбрать объект на рисунке, фунции выбора будет послано две строки «_zoom», «_e», которые она воспримет как неправильные объекты.
Приходится искать аналоги, выполняющиеся сразу же. В данном случае:
object acad = Application.AcadApplication; acad.GetType().InvokeMember("ZoomExtents", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, acad, null);
4. Выбор объектов пользователем
Для выбора объектов используются функции editor’a Get*
Например, выбор нескольких объектов — GetSelection, выбор одного объекта GetEntity…
var editor = Application.DocumentManager.MdiActiveDocument.Editor; var promtResult = editor.GetEntity("Выберите участок"); editor.WriteMessage(Environment.NewLine); if (promtResult.Status == PromptStatus.OK)
Получение пути к папке документа
Поиск в интернете выдал два способа доступа к полному имени файла:
MdiActiveDocument.Database.Filename
MdiActiveDocument.Name
На первый взгляд они одинаковы, но
По теме — свойством Database.Filename пользоваться не советую. После автосохранения оно указывает не на сам файл, а на автосохранённую копию — в отличие от Document.Name
Путь к папке я получил стандартными средствами .NET:
Path.GetDirectoryName(Application.DocumentManager.MdiActiveDocument.Name);
если возвращаемая строка пустая, значит документ создан, но не сохранен
И еще полезные отрывки кода:
Изменение координат полилинии (метод расширения)
// Изменение координат полилинии (метод расширения): public static void UpdatePoints(this Polyline polyline, List newPoints) < if (polyline == null) throw new ArgumentNullException("polyline"); if (newPoints.Count < 2) throw new ArgumentException("Попытка установить для полилинии одну точку"); using (var transaction = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()) < // открываем новый объект полилинии, привязывая его к текущей транзации var pline = transaction.GetObject(polyline.ObjectId,OpenMode.ForWrite) as Polyline; if (pline == null) throw new DataException("Ошибка! Полилиния не найдена в базе"); var bulge = pline.GetBulgeAt(0); var start_width = pline.GetStartWidthAt(0); var end_width = pline.GetEndWidthAt(0); var prevPointsCount = pline.NumberOfVertices; // добавление новых точек // нельзя сначала удалить все точки, а потом добавить новые, т.к. Autocad не позволит сделать линию с 0 или 1 точкой // сначала добавляем новые for (int i = prevPointsCount; i < prevPointsCount + newPoints.Count; i++) pline.AddVertexAt(i, newPoints[i - prevPointsCount], bulge, start_width, end_width); // потом удаляем старые for (int i = prevPointsCount - 1; i >= 0; i--) pline.RemoveVertexAt(i); transaction.Commit(); > >
Получение координат полилинии (метод расширения):
// Получение координат полилинии (метод расширения): public static Point2d[] GetPoints(this Polyline polyline) < if (polyline == null) < Debug.WriteLine("Непредвиденная ошибка! Попытка вызвать метод для несуществующей полилинии"); return null; >if (polyline.NumberOfVertices == 0) return null; var points = new List(); for (int i = 0; i
Полезные ссылки
1. AutoCAD .NET Developer’s Guide
Английский мини-референс, рассказывается суть устройства Autocad с примерами кода на VB.NET, C#.NET, VBA
2. Through the interface
Блог Kean’a Walmsley, очень много Howto. Встречаются примеры на C#, C#+COM, VB.NET, C++. У меня там искать не получается, но половина моих запросов в гугле «как сделать так..» вела на этот сайт
3. caduser.ru, подфорум «.NET»
Общение с русскоговорящими людьми, хорошо разбирающимися в теме. Много раз помогали разобраться в трудных местах
