Команда загрузки по запросу в AutoCAD

Обновлено: 21.11.2024

AutoCAD: при использовании файла внешней ссылки производительность снижается.

Рисование замедляется при загрузке, редактировании, использовании эталонной палитры и работе с чертежом.

Причины:

  • Большое количество ссылок.
  • Файл поврежден.
  • Большое количество отсутствующих шрифтов.
  • Отсутствует путь.
  • Большие необслуживаемые файлы (большое количество весов, не очищено, общее обслуживание и т. д.).

Решение:

  • Используйте в локальной системе, чтобы увидеть, улучшится ли производительность.
  • Установите для системных переменных XLOADCTL и DEMANDLOAD значение 0.
  • Откройте и очистите файл с помощью Scaleslistedit и сбросьте список, очистите файл, очистите все, что не нужно.
  • Отсутствующие шрифты заменяются новым шрифтом.
  • Откройте внешнюю ссылку и проверьте наличие ошибок с помощью команды аудита.
  • Измените абсолютные пути внешних ссылок на относительный путь, щелкнув правой кнопкой мыши в палитре ссылок.
  • Установите для переменной SAVETIME значение 1.

Об авторе

Руководитель группы производственного центра решений

Джефф отвечает за производственную техническую поддержку как для внутреннего персонала, так и для клиентов. В дополнение к повседневной деятельности центра поддержки он помогает писать для блога Национального центра поддержки и пишет онлайн-курсы для сайта обучения IMAGINiT по запросу.

Следите за дополнительными материалами на Linkedin от Джеффа Арбогаста
Предыдущая статья

AutoCAD выдает ошибку AcDs: несоответствие подписи в командной строке

Эта проблема была вызвана плохим/поврежденным блоком, который находился в списке «недавних» палитр блоков в AutoCAD Ci.

Следующая статья

Сетевые развертывания Autodesk — рекомендации

Каковы передовые методы создания успешных сетевых развертываний Autodesk?

Последние статьи

Autodesk Inventor — невозможно сохранить изменения в параметрических деталях

Решение проблемы, из-за которой пользователи внезапно не могут сохранить параметрические детали в Autodesk Inventor.

AutoCAD: палитра блоков приводит к сбою AutoCAD

При попытке использовать палитру блоков AutoCAD аварийно завершает работу и зависает.

В отчетах Autodesk Inventor FEA отсутствуют изображения

Устранение неполадок, связанных с отсутствием изображений в отчетах Autodesk Inventor FEA.

Пакетное обновление визуализаций Autodesk Vault для переопределения цвета фона

Процесс Autodesk Vault для обновления цвета фона файла визуализации для повышения удобочитаемости.

Описывает влияние на приглашения на сайт учетной записи Autodesk, если связанный адрес электронной почты изменен.

Autodesk: при запуске программного обеспечения Autodesk появляется сообщение

Autodesk: при запуске программного обеспечения Autodesk. Вы получаете сообщение о том, что «Выполнение кода не может быть продолжено, поскольку VCOMP140.DLL не найден

Autodesk: при запуске программного обеспечения Autodesk. Вы получаете сообщение о том, что «Выполнение кода не может быть продолжено, поскольку VCOMP140.DLL не найден». Вот что нужно сделать.

Нужен ли b2bmigrate после обновления Vault Server?

Выполнять b2bmigrate нужно только в том случае, если это специально указано в примечаниях к выпуску для обновления.

Autodesk: при установке

Autodesk: при установке» Произошла ошибка при подготовке к установке. Выйдите и запустите установку снова».

Возможные решения и дальнейшие действия.

Обновление утилит IMAGINiT для импорта Civil 3D из Google

Утилиты IMAGINiT для Civil 3D: ошибка «Импорт из Google» устранена.

При установленном клиенте Vault Office Client 2019 – появляется ошибка при щелчке правой кнопкой мыши по zip-файлу

При установленном Vault Office Client 2019 — при щелчке правой кнопкой мыши появляется ошибка ZIP-файла «Не удается запустить Explorer.exe». '

Если щелкнуть ZIP-файл правой кнопкой мыши, появится сообщение "Explorer.exe не может быть запущен, поскольку не существует зарегистрированной версии Autodesk Inventor, Design Assistant или Apprentice Server. Запустите одну из этих программ"

Как создать запрос в службу поддержки на веб-сайте IMAGINiT

IMAGINiT предлагает различные уровни поддержки для всех клиентов. Время ответа на запросы зависит от уровня поддержки

Процесс: установка наклонной трубы с расчетной линией в MEP производителя

Производственные аннотации

Существует несколько различных типов аннотаций для Fabrication. Каждая аннотация имеет разные настройки, которые можно настроить в соответствии со стандартами вашей компании.

Revit: «Модель из хранилища скопирована или перемещена» — проблемы с сохранением или открытием» /><br /></p>
<p>При создании модели из хранилища Revit сохраняет путь к файлу из хранилища в том виде, в каком он отображается на компьютере, где он создается. Если путь к другому компьютеру отличается, появится указанная выше ошибка.</p>
<P> <IMG класс =

Проблема: изометрические виды проекта Revit не имеют четких четких линий или отображаются неправильно.

Руководство по навигатору проектов

Система управления Project Navigator поможет максимально увеличить функциональность и эффективность создания модели BIM с использованием нескольких версий программного обеспечения AutoCAD Architectural и MEP.

Способы работать из дома с помощью продуктов Autodesk

Есть множество доступных решений! Вам просто нужен тот, который наиболее подходит для вас.

Как изменить логотип компании на тонком клиенте Vault в 2022 году

Как изменить логотип компании на тонком клиенте Vault для версии 2022 с помощью редактора SVG, чтобы сохранить логотип в том же размере и в том же месте, что и логотип Autodesk Thin Client.

Autodesk: при запуске вы получаете сообщение

Autodesk: при запуске вы получаете сообщение «Лицензия на этот продукт больше недоступна. Пожалуйста, сохраните свою работу и завершите работу».

«Лицензия на продукт больше недоступна. Сохраните свою работу и закройте приложение.

будет отключен». Эта ошибка может быть вызвана рядом причин.

За счет комбинации загрузки чертежей по запросу и сохранения чертежей с индексами можно повысить производительность чертежей с внешними ссылками. Загрузка по требованию работает в сочетании с системными переменными XLOADCTL и INDEXCTL. При включении загрузки по требованию, если индексы были сохранены в ссылочных чертежах, AutoCAD загружает в память только те данные из ссылочного чертежа, которые необходимы для повторного создания текущего чертежа. Другими словами, материалы, на которые есть ссылки, читаются «по запросу».

Чтобы воспользоваться максимальными преимуществами загрузки по требованию, необходимо сохранить чертежи, на которые есть ссылки, со слоями и пространственными индексами. Преимущества загрузки по запросу наиболее заметны, когда вы

  • Вырежьте внешнюю ссылку, чтобы отобразить ее небольшую часть, и пространственный индекс будет сохранен в чертеже с внешней ссылкой.
  • Заморозьте несколько слоев внешней ссылки, и чертеж с внешней ссылкой будет сохранен с индексом слоя.

Чтобы включить загрузку по требованию, используйте свойство XRefDemandLoad. Если включить загрузку по запросу с помощью параметра acDemandLoadEnabledWithCopy, AutoCAD создаст временную копию файла, на который ссылаются извне, и загрузит временный файл по запросу. Затем вы можете запросить загрузку внешней ссылки, при этом исходный справочный чертеж будет доступен для модификации. Когда вы отключаете загрузку по запросу, AutoCAD считывает весь эталонный чертеж независимо от видимости слоя или экземпляров вырезания.

Чтобы включить слойные и пространственные индексы, задайте системную переменную INDEXCTL с помощью метода SetVariable. К системной переменной INDEXCTL применяются следующие настройки:

  • 0 = индексы не созданы
  • 1 = индекс слоя создан
  • 2 = пространственный индекс создан
  • 3 = созданы как пространственные, так и слоистые индексы

По умолчанию для INDEXCTL устанавливается значение 0 при создании нового чертежа AutoCAD.

Дополнительную информацию о загрузке по запросу и внешних ссылках см. в разделе "Повышение производительности с помощью больших внешних ссылок" в Руководстве пользователя.

Блог для разработчиков, использующих платформы Autodesk, особенно AutoCAD и Forge. Особое внимание уделяется AR/VR и IoT.

28 мая 2009 г.

Вот вопрос, который я недавно получил по электронной почте:

Аугусто Гонсалвеш из нашей команды DevTech Americas предложил для этого решение, которое показало, как программно создавать ключи реестра с загрузкой по запросу на основе имени и местоположения текущей сборки. Мне пришло в голову, что расширение кода для дальнейшего использования отражения для запроса команд, определенных сборкой, сделало бы это действительно интересным и, по сути, могло бы создать очень гибкий подход для создания записей, загружаемых по требованию, при инициализации приложения или во время выполнение пользовательской команды.

открытый класс RegistryUpdate

public static void RegisterForDemandLoading()

// Получаем сборку, ее имя и расположение

Сборка assem = Сборка .GetExecutingAssembly();

строковое имя = assem.GetName().Name;

строковый путь = assem.Location;

// Соберем информацию о командах

// (мы могли бы использовать карту или более сложный

// контейнер для глобального и локализованного имен

// - предполагается, что у нас будет равное

// количество каждого с возможно меньшим количеством групп)

Строка списка > globCmds = новая строка списка >();

Строка списка > locCmds = новая строка списка >();

Строка списка > groups = новая строка списка >();

// Перебираем модули в сборке

Module [] mods = assem.GetModules(true);

foreach (модуль модуля в модах)

// Внутри каждого модуля итерация по типам

Тип [] types = mod.GetTypes();

foreach ( тип типа в типах)

// Нам может понадобиться получить ресурсы типа

новый ResourceManager (type.FullName, assem);

// Получить каждый метод для типа

MethodInfo [] meths = type.GetMethods();

foreach (MethodInfo meth в meths)

// Получить атрибут(ы) пользовательской команды методов

foreach ( объект attb в attbs)

attb как CommandMethodAttribute ;

// И мы наконец можем собрать информацию

// о каждой команде

строка globName = cma.GlobalName;

строка locName = globName;

строковая крышка = cma.LocalizedNameId;

// Если у нас есть локализованный идентификатор команды,

// давайте поищем в наших ресурсах

// Давайте поместим блок try-catch вокруг этого

// Неудача просто означает, что мы используем глобальный

// имя дважды (по умолчанию)

// Добавляем информацию в наши структуры данных

if (cma.GroupName != null &&

// Зарегистрируем приложение для загрузки по требованию (12)

// если он содержит команды, иначе он будет у нас

// загрузка при запуске AutoCAD (2)

int flags = (globCmds.Count > 0 ? 12 : 2);

// По умолчанию создадим команды в HKCU

// (передаем false, если хотим создать в HKLM)

имя, путь, globCmds, locCmds, группы, флаги, правда

public static void UnregisterForDemandLoading()

private static void CreateDemandLoadingEntries(

Строка списка > globCmds,

Строка списка > locCmds,

Строка списка > группы,

// Выбираем куст реестра на основе ввода функции

(currentUser ? Реестр .CurrentUser : Реестр .LocalMachine);

// Открываем основные AutoCAD (или вертикальные) и клавиши "Приложения"

RegistryKey appk = ack.CreateSubKey("Приложения");

// Уже зарегистрированы? Просто вернись

строка [] subKeys = appk.GetSubKeyNames();

foreach (строка subKey в subKeys)

// Создаем корневой ключ нашего приложения и его значения

RegistryKey rk = appk.CreateSubKey(имя);

"DESCRIPTION" , имя, RegistryValueKind .String

rk.SetValue("LOADCTRLS", flags, RegistryValueKind .DWord);

rk.SetValue("LOADER", путь, RegistryValueKind.String);

rk.SetValue("УПРАВЛЯЕМЫЙ", 1, RegistryValueKind .DWord);

// Создаем подраздел, если есть какие-либо команды.

если ((globCmds.Count == locCmds.Count) &&

RegistryKey ck = rk.CreateSubKey("Команды");

для ( int i = 0; i

// И группы команд, если они есть

если (groups.Count > 0)

RegistryKey gk = rk.CreateSubKey("Группы");

foreach (строка grpName в группах)

grpName, grpName, RegistryValueKind .String

private static void RemoveDemandLoadingEntries( bool currentUser)

// Выбираем куст реестра на основе ввода функции

// Открываем основные AutoCAD (вертикальные) и клавиши "Приложения"

RegistryKey appk = ack.OpenSubKey("Приложения", true);

// Удаляем ключ с тем же именем, что и у этой сборки

Если вы поместите этот код в существующий проект, вы сможете просто добавить вызов DemandLoading.RegistryUpdate.RegisterForDemandLoading() во время метода Initialize() вашего IExtensionApplication или во время пользовательской команды.

Вот пример ключей реестра, созданных этим кодом (экспортированных из Regedit) при вызове из метода Initialize() приложения в этом предыдущем посте:

Редактор реестра Windows версии 5.00

"LOADER"="C:\\Program Files\\Autodesk\\AutoCAD 2010\\OffsetInXref.dll"

Вы можете видеть, что наш код нашел команды, определенные приложением, и создал записи реестра, которые сообщают AutoCAD о загрузке модуля, когда пользователь выбирает одну из них. Вы заметите, что значение LOADCTRLS равно c (шестнадцатеричное число для 12), что означает, что приложение будет загружаться «по требованию» при вызове указанной команды, но мы также можем изменить код, чтобы принудительно установить его равным 2, что означало бы модуль будет загружаться при запуске AutoCAD (по умолчанию, если команды не найдены). На самом деле это было бы хорошей идеей в данном случае, так как команда подключается к команде OFFSET, и мы не можем загрузить модуль по запросу при вызове встроенной команды.

Вы также заметите, что ключи были созданы в R18.0\ACAD-8001:409 (английская версия AutoCAD 2010), но если модуль был загружен в другой языковой версии вертикального продукта на основе AutoCAD (например, French AutoCAD Architecture 2009), то корневой ключ будет ключом для этого продукта. Все, что вам нужно сделать, это один раз загрузить модуль в выбранный вами продукт на основе AutoCAD, и с этого момента он будет зарегистрирован для автоматической загрузки.

Обновление:

Я пошел дальше и обновил приведенный выше код в соответствии с информацией в этой более поздней публикации.

ToolSetA.dll: необходимо загрузить, когда в AutoCAD открывается чертеж из проекта A, расположенный в области "AAA". Этот файл DLL определяет 2 команды: "ADoWorkOne" и "ADoWorkTwo".

ToolSetB.dll: необходимо загрузить, когда чертеж из проекта B, расположенный в области "BBB", открыт в AutoCAD. Этот файл DLL определяет 2 команды: "BDoWorkOne" и "BDoWorkTwo".

Команды в этих двух DLL-файлах не делают ничего, кроме отображения окна предупреждающего сообщения AutoCAD.

<р>2. 2 DLL-файла не загружаются при запуске AutoCAD, и к ним не применяется другой встроенный в AutoCAD механизм загрузки по запросу.

<р>3. Если чертеж из проекта A или проекта B открыт в AutoCAD, ToolSetA.dll или ToolSetB.dll должны быть загружены автоматически, если файл DLL не был загружен в этот AutoCAD. сессия.

Мое решение состоит из двух частей: набора настраиваемых параметров, определяющих условия загрузки по запросу (какие DLL-файлы следует загружать для определенного расположения проекта), и класса IExtensionApplication, который динамически загружает DLL-файл в AutoCAD в соответствии с настройками. . Конечно, сам класс IExtensionApplication должен быть загружен в AutoCAD, например, с помощью Acad.lsp.

Я использую app.config, добавленный в проект DLL, для хранения настроек:


Файл app.config компилируется в xxxxx.dll.config и идет с файлом DLL.


В классе OnDemandLoader основная логика заключается в определении условия загрузки DLL-файла при создании чертежа в AutoCAD. В данном случае условием является область текущего чертежа проекта. Обычно проект, к которому принадлежит файл чертежа, можно определить по имени файла, папке для хранения файлов и т. д. В этой статье я использую системную переменную USERI1, хранящуюся в чертеже, для стимулирования области проекта, просто чтобы сделать код работоспособным.

После завершения кода я протестировал следующие этапы:

<р>1. Запустите AutoCAD и вручную загрузите OnDemandLoader в AutoCAD (DemandLoading.dll). В реальном использовании, конечно, он будет автоматически загружаться при запуске AutoCAD.

<р>2. Поскольку текущий открытый чертеж в AutoCAD не принадлежит ни к проекту A (в регионе «AAA»), ни к проекту B (в регионе «BBB»), поэтому 2 файла DLL (ToolSetA.dll и < i>ToolSetB.dll) не загружены.

<р>3. Введите одну из команд, определенных в двух незагруженных файлах DLL, пользователю будет предложено ввести ее.

<р>4. Откройте 2 чертежа, подготовленные для проекта A и проекта B (на 2 чертежах системная переменная «USERI1» была установлена ​​для указания региона проекта). При открытии двух чертежей в командной строке отображается сообщение о том, что соответствующий файл DLL (ToolSetA.dll или ToolSetB.dll) загружен, поскольку каждый из этих файлов DLL реализован метод IExtensionApplication.Intialize(), где сообщение о загрузке выводится в командной строке.

<р>5. При открытом чертеже проекта введите команды, определенные в DLL-файлах загрузки по требованию. Это доказывает, что команды работают должным образом, поэтому загрузка по запросу выполняется успешно.

<р>6. Закройте один из чертежей проекта и снова откройте его. На этот раз в командной строке не отображается сообщение о загрузке DLL, поскольку соответствующий файл DLL был загружен ранее.

Посмотрите этот видеоклип, показывающий этапы тестирования.

Как видно из кода, ключевая логика в этом решении заключается в простом тщательном проектировании параметров для определения условий загрузки DLL и обеспечения того, чтобы код мог определить, выполняются ли условия во время выполнения в различных состояниях AutoCAD (в моем случае это когда документ создается и становится текущим в первый раз). Затем процесс загрузки по запросу работает полностью в соответствии с настройками, которые можно обновлять в любое время, не прерывая процесс загрузки по требованию.

Читайте также: