Не удается активизировать статический объект activex автокад
Компонент ActiveX не может создать объект
Причина
Такое поведение может произойти, если любое из следующих условий является верным:
- Объекты доступа к данным (DAO) не регистрируются должным образом.
- Отсутствуют одна или несколько ссылок.
- Существует ссылка на базу данных утилиты, которая не является допустимой.
- У вас нет необходимых разрешений для необходимых библиотек.
- Существует поврежденный файл мастера.
Решение
Причина 1: DAO не регистрируется должным образом
Перерегистрируйте библиотеку DAO 3.6. Для этого выполните следующие действия:
- На компьютере, на котором установлен Microsoft Access, или на компьютере, на котором находится Microsoft Терминал Windows Server, нажмите кнопку Пуск и нажмите кнопку Запустить. (Если вы не видите Run, вы можете найти его или открыть командную подсказку).
- В текстовом поле Run введите regsvr32, а затем путь к файлу DAO. Заключим этот путь в кавычках. Например, чтобы зарегистрировать библиотеку DAO 3.6, используйте следующую команду, которая включает путь по умолчанию к файлу библиотеки DAO: regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\DAO360.DLL" .
Причина 2. Отсутствуют одна или несколько ссылок
Проверьте отсутствие ссылок. Для этого выполните следующие действия:
Кроме того, вы можете нажать кнопку Обзор в диалоговом окне Ссылки, чтобы просмотреть расположение файла библиотеки, связанного с отсутствующих ссылок.
Причина 3. Существует ссылка на базу данных утилиты, которая не является допустимой
С выпуском Microsoft Access 2000 ссылка на Utility не требуется. Если вы преобразовали базу данных из предыдущей версии, в списке ссылок по-прежнему может появиться ссылка на Utility. Ото всех ссылок на utility или Utility.mda. Для этого выполните следующие действия:
Причина 4. У вас нет необходимых разрешений для необходимых библиотек
Все пользователи Microsoft Access должны иметь разрешения на Windows системных папок.
Убедитесь, что у пользователей есть разрешения на чтение для всех файлов в следующих папках.
Если вы не можете предоставить разрешения на чтение, вы можете использовать такую утилиту, как Process Monitor, чтобы определить, какие файлы или файлы пользователи не имеют необходимых разрешений для использования. Чтобы получить монитор процесса, посетите следующий веб-сайт Sysinternals: Sysinternals.
Причина 5. Существует поврежденный файл мастера
Чтобы восстановить поврежденные файлы мастера, выполните следующие действия:
- Используйте Windows Explorer, чтобы найти следующие файлы мастера: Acwzmain.mde, Acwztool.mde и Acwzlib.mde.
- Измените расширение имени файла каждого файла на "старый". Например, измените Acwzmain.mde на Acwzmain.old.
- Ремонт Microsoft Access или Microsoft Office Professional, чтобы переустановить файлы Мастера.
Дополнительные сведения
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Компонентов и ActiveX заменяющих Автокад "без установленного Автокада" не существует. Тем более с для работы с базами данных. Есть, конечно, кое-какие "CAD-компоненты", даже бесплатные, некоторые даже кое-как разбираются с DWG, но работа их на уровне самых ранних версий Автокада. В основном это компоненты для создания CAD-подобных полудетских редакторов. И заменить Автокад никак не могут.
И таких "компонентов" в принципе быть не может. Система уровня Автокада (а он не самого высокого класса) очень сложна и в графической и в математической части. Аутодеск могла бы выпустить нечто подобное MapX для Mapinfo (OCX + куча dll, заменяющие саму Mapinfo с некоторыми ограничениями), но политика у фирмы другая.
А что такое ObjectDBX господа?
Господин ShaggyDoc очень подробно описал почему невозможно существование подобных компонент.
Но ведь действительно есть как минимум библиотека ObjectDBX(правда на сколько я понимаю это не ActiveX компоненты).
Есть еще CAD OEM - тоже помоему из этой области.
От того, что существует ObjectDBX нам не легче. Так же, как от наличия исходников где-то Автокада. Практически это внутренняя библиотека, предоставляющаяся избранным партнерам Аутодеск. Цитата:
"ObjectDBX is selectively licensed. Developers must apply for a developer license by submitting a business plan to Autodesk."
Или кто-то "submitting a business plan to Autodesk" и использует ObjectDBX? Поделитесь опытом.
"Компоненты" (в Дельфийском понимании) и элементы ActiveX изначально задуманы и распространяются (пусть за плату) неограниченному кругу желающих.
Что такое ObjectDBX?
Несмотря на интригующее название, ничего феноменального эта технология из себя, на мой взгляд, не представляет. Особой разницы между ARX и DBX модулями нет: и то и другое ? DLL. Просто Автодеск предлагает ту часть динамической библиотеки, в которой описываются объекты базы данных(пользовательские) помещать в отдельный модуль, который имеет расширение .DBX, а интерфейсную часть - в модулях .ARX . Преимущества такого подхода понятны: кто-то специализируется на создании хороших и полезных для всех объектов(Автодеск, тоже этим занимается и, естественно, впереди планеты всей на белом коне), а другие создают не менее замечательные для них интерфейсы. Все это, конечно же, работает в Автокадовской среде и ни какой речи о независимости от нее быть не может.
Отличие именно в том, что ObjectDBX - библиотека для работы с DWG БЕЗ АВТОКАДА. Ее используют AM Wokflow, VoloView и другие продукты. Но это все крупные официальные "selectively licensed" партнеры Аутодеск.
"What is the difference between ObjectDBX and ObjectARX?
The most visible difference between ObjectDBX and ObjectARX? applications is the presence of AutoCAD. ObjectDBX can be used to create DWG files that will run with any host application, even without AutoCAD present. ObjectARX applications always require AutoCAD as their host application. ObjectDBX can also be used to create host applications, but ObjectARX cannot."
, или, возможно, есть более рациональные программные способы создания
вышеуказанных объектов. Благодарю за внимание.
> to spook
Раньше никак не мог сообразить самостоятельно, как правильно задать
точечную пару и Список для (vlax-make-safearray), ну и, конечно,
что все это еще нужно назначить с помощью (vlax-safearray-fill). Большое спасибо.
А как создать в ActiveX одиночный Блок из Набора объектов?
В перечне Методов для этого объекта я нашел только возможность
добавления одиночных объектов в Блок по принципу их создания:
Очевидно, что объекты Набора должны, как это делается в команде _.-BLOCK,
указываться при создании, а не при "редактировании" Блока, но не могу
докопаться, как это сделать. Поможите, люди добрые!
Насколько я понимаю, именно так и предлагается создавать описание блоков - сначала пустой блок, а потом в нём "рисовать" содержимое.
> to spook
Означает ли это, что создавать Блоки из объектов рациональнее с помощью команды (vl-cmdf "_.Block" name_block point (ssget) ""), а не в ActiveX?
Скорее уж с помощью entmake - есть и там некоторые "радости".
Хотелось бы поговорить об этих "радостях". Ведь для entmake нужен Список,
а, например, в Списке объекта типа "BLOCK" нет "явных" указаний на объекты,
входящие в него - только точечная пара с DXF-кодом -2, и то это, как я понимаю,
- "записанная" копия /возможно, заготовка для INSERT/ одного из удаленных при
создании Блока объектов. Поэтому для меня вопрос остается открытым:
можно ли вообще с помощью entmake создавать Блоки из Набора объектов?
А, главное, непонятен механизм определения вхождения Блока.
Помоему такая тема уже была.
Создается блок из набора объектов под именем proba.
> submariner
Об "радостях"
Один из примеров "радостей" буквально вот он - в функции предложенной Эдуардом всё хорошо, до момента, когда ей "под ноги" попадётся составной примитив, на котором она бодро вылетит, при этом оставив "незакрытый" блок. Хорошо, если при этом вылетит и ACAD, а если нет. Решаемая "радость" - да, причём легко, но код, к сожалению, уже не будет столь короток и нагляден.
Ещё есть кой какие мелочи, типа непочищенных DXF-ов. В 99% случаев это не будет иметь никакого значения, но. короче, если интересует результат, некоторые коды - надо чистить.
А так, хорошая функция - простая и наглядная.
В моем случае функция "налетела" на объект типа POLYLINE /command: "_.3DPOLY",
не путать с command: "_.PLINE"/ и entmake отказалась с ним работать. Судя по
Вашим отзывам, это не последний "сюрприз", который может меня ожидать, но
принцип, предложенный Эдуардом (2004-03-16 13:03:32), значительно сократил
время создания в цикле большого количества объектов типа INSERT по сравнению
с классической
В качестве возможного решения можно попробовать такой вариант:
Предупреждение
Код очень сырой - "склёпан" из кусков разных функций, так что.
"Перед употреблением взболтать."
"Аптека" никакой ответственности за последствия не несёт.
Создание блока объектными методами:
1. Из набора
2. Из VLA-массива:
Незнакомые ru-функции легко заменяются на свои - назначение понятно. В наборе или VLA-масссиве могут быть любые примитивы.
А вот создавать блок через entmake действительно муторно. Надо знать массу нюансов.
> to ShaggyDoc
Если я правильно понял, то (ru-obj-ent-ss-erase selection) должна
удалять исходные объекты. И тут возникает вопрос, возможно,
и не совсем по теме, но все же. : если в selection есть заблокированные
объекты, то можно ли их удалить, не разблокируя сам Слой?
А, вообще, в очередной раз восхищен Вами: прием с использованием
vla-copyobjects - это высший пилотаж! Встроенный в VL Help по ActiveX
в виде коктейля с VBA, согласитесь, слабое подспорье начинающему лисписту
для досконального его изучения. Но это, наверное, тоже другая тема.
Благодарю за внимание.
> submariner
>если в selection есть заблокированные
объекты, то можно ли их удалить, не разблокируя сам Слой?
Вот как это сделано:
Внутри также используется метод. Удалится объект или нет мы не знаем - причин для неудаления может быть много. Но все обернуто в функцию ru-error-catch, в аргументах которой передаются (с апострофом) защишаемое выражение и выражение, выполняющееся в случае ошибки (или NIL, если ошибку просто нужно предотвратить, но ничего не нужно делать).
> ShaggyDoc
В ваш ru_error_catch можно передать любое выражение.
Я уже два раза столкнулся с ситуацией когда, если под vl-catch-all-apply находится достаточно большая функция происходит вылет, как будто накакого vl-catch-all-apply и не используется.
Я не смог систематизировать эту ошибку. При разбиении на более маленькие участки - такого не происходит.
Не сталкивались с подобным?
> Олег
Да, можно передать любое выражение. В том числе такое, внутри которого также ru-error-catch. Со сбоем из-за величины не сталкивался. Ошибки обычно получаются из-за неправильного применения методов.
На маленьких участках просто могут всегда передаваться правильные данные, а на больших предсказать труднее. Поэтому везде нужны еще дополнительные проверки, типа доступности свойства или применимости метода.
Тут не следует полагаться на свой опыт или "очевидность".
Вот Kenny прислал код для извлечения координат из LINE и LWPOLYLINE:
При кажущейся очевидности - ошибка, так как LINE не знает метода vla-Get-Coordinates. При тестировании маленького участка на полилинии все будет работать. Стоит применить к набору, в котором попадется отрезок - будет вылет.
С этим приходится часто сталкиваться, если надеяться только на память и на предположения.
Обычно я натыкаюсь на свои ошибки. Но был случай (spook знает), когда в вылизанном десятки раз коде, со всеми мыслимыми ловушками, вылетает ошибка Си-шного exception. С падением AutoCAD. Так как она повторяется везде, то явный глюк AutoCAD.
После установки обновления для системы безопасности, описанного в бюллетене по безопасности (Майкрософт) MS14-082,могут возникнуть следующие симптомы:
Симптом 1
Visio не удается вставить этот тип управления, так как его типInfo не удалось правильно объединить. Убедитесь, что все типы параметров являются более удобными для VBA. При необходимости удалите EXD-файл TEMP.
Библиотека объектов недействительна или содержит ссылки на определения объектов, которые не удалось найти.
Не удается вставить объект.
Программа, используемая для создания этого объекта— Forms. Программа либо не установлена на компьютере, либо не отвечает. Чтобы изменить объект, установите forms или закройте все диалоговое окно в Forms.
Симптом 2
При установке Office 2013 на компьютере с пакетом Office 2007 или Office 2010 с помощью технологий "нажми и ты" могут возникнуть те же ошибки, что и в разделе "Симптом 1".
Симптом 3
После сохранения книги Microsoft Excel, которая содержит ActiveX (forms3) на компьютере, на компьютере с установленным приложением MS14-082 макрос Excel может не работать на компьютерах, на которые не установлена система MS14-082.
Решение
Чтобы устранить все проблемы, описанные в разделе "Симптомы", установите следующие обновления для всех установленных версий Office:
Обратите внимание, что для получения полного результата исправления необходимо установить все обновления всех установленных версий Office. Если вы используете одновременное сочетание продуктов Office 2013 C2R и Office MSI, необходимо обновить все продукты одновременно. Дополнительные сведения см. в разделе "Важная информация об изменении".
Office 2013 (установки по нажми и работы)
Клиенты Office 2013 версии "нажми и ир" (C2R) должны автоматически получать обновления, включаю в себя это исправление. Убедитесь, что у вас установлена версия 15.0.4701.1002 или более поздней версии, чтобы убедиться, что исправление установлено. Сведения о том, как определить, используете ли вы C2R-версию Office 2013 и какая у вас версия, см. в разделе "Дополнительные сведения". Если у вас не версия 15.0.4701.1002 или более поздней версии, вы можете принудительно восстановить Office 2013 вручную, чтобы получить последние обновления.
Office 2013 (установки MSI)
2920754 Обновление для Office 2013
2956145 от 10 марта 2015 г., обновление для Excel
2013 2956163 MS15-022: описание обновления для системы безопасности для Word 2013: 10 марта 2015 г. Обновление
PowerPoint 2013 от 10 марта 2015 г. от 10 марта 2015 г. для
PowerPoint2956176, обновление для Access 2013
2956155, обновление для Visio 2013
Office 2010
2920813 Обновление для Office 2010
2956142 MS15–022 от 10 марта 2015 г.: описание обновления для системы безопасности для Microsoft Excel 2010, русская версия: 10 марта
2015 г. 2956139 MS15-022: описание обновления для системы безопасности для Word 2010: 10 марта 2015
2920812 MS15-022: описание обновления для системы безопасности для PowerPoint 2010: 10 марта 2015
г. 2837601 10 марта 2015 г., обновление для Access
2010 2878283 от 10 марта 2015 г., обновление для Visio 2010
Система Office 2007
2984939 MS15-022: описание обновления для системы безопасности для пакета Microsoft Office версии 2007: 10 марта
2015 г. 2920794, 10 марта Обновление для 2007 системы Office
2956103 MS15–022: описание обновления для системы безопасности для Microsoft Excel 2007 Пакет обновления 3: 10 марта 2015 г.
2956109 MS15-022: описание обновления для системы безопасности для Word 2007 с sp3: 10 марта 2010 г. 2015
2899580 MS15-022: описание обновления для системы безопасности для PowerPoint 2007 Пакет обновления 3: 10 марта
2015 г. 2817561 от 10 марта 2015 г., обновление для Visio 2007
Дополнительная информация
Важная информация об изменении
Пакет управления Microsoft Forms (FM20.dll) — это общий компонент, который используется между приложениями при установке Office рядом. Убедитесь, что исправление применено во всех версиях Office, установленных рядом, чтобы убедиться, что все версии обновлены правильно, чтобы работать с изменениями элементов управления. Чтобы не прерывать работу, эти обновления следует применять вместе. Следует помнить, что более ранние версии Office (т. е. более ранние версии, чем система Office 2007) не будут обновлены для работы с обновленным общим компонентом Forms (FM20). Это означает, что установка этого обновления на компьютере, на компьютере с установленной до версии 2007 системы Office наряду с более поздней версией может помешать более ранней версии правильно работать со стандартными средствами управления Формы. Это известное ограничение, и его можно устранить только путем обновления старых версий до одной из поддерживаемых версий, упомянутых в разделе "Решение".
После установки этого обновления вы не сможете использовать элементы управления формами из веб-проектов Internet Explorer или HTA. Корпорация Майкрософт никогда официально не поддерживала такие средства контроля, и мы настоятельно рекомендуем всем, кто использовал их, найти средства замены или переработать проект, чтобы использовать HTML5 без ActiveX контроля. Удаление ключей безопасности (killbit) для любых видов управления формы не поддерживается и настоятельно не рекомендуется. Мы намерены никогда не использовать эти элементы управления на веб-странице.
На сторонние продукты, в которых используются элементы управления форм из стандартного кода, не должно повлиять, если только они не имеют явного кода для проверки безопасности Internet Explorer (параметры killbit) или не используете Internet Explorer для просмотра веб-страниц с помощью элементов управления на этих веб-сайтах. Для обработки исключений в этих приложениях нужно внести собственные изменения в код. Разработчики программного обеспечения могут обратиться за помощью в корпорацию Майкрософт по таким вопросам.
Определение того, является ли Office 2013 MSI или office 2013 нажми ижми и запускай
Чтобы определить, является ли установка Office 2013 в системе базой данных MSI или "нажми и работы", выполните следующие действия:
Запустите приложение Office 2013, например Microsoft Word 2013.
В меню "Файл" выберите пункт "Учетная запись".
При установке Office 2013 на основе "нажми и работы" отображается элемент "Параметры обновления". При установке с учетом MSI элемент "Параметры обновления" не отображается.
Установка Office 2013 "нажми и работы"
Office 2013 на базе MSI
Обработка устаревших продлений
При обновлении, включенном в раздел "Разрешение", файл расширения кэша для пакета управления Microsoft Forms (MSForms.exd) будет удален и обновлен по мере необходимости для каждого пользователя, загрузившего любой из этих элементов управления. Однако если вы подозреваете, что возникла проблема с неправильным расширением, вы можете удалить их вручную, чтобы убедиться в том, что после перезапуска приложения у вас есть пустая копия.
Чтобы вручную удалить объекты-вытянутые из кэша объекты-расширение, выполните указанные здесь действия.
В проводнике откройте папку %TEMP%, а затем в поиске по запросу "*.exd" во всех вложенных папках.
Удалите все экземпляры, в которых находится этот файл. Это относится и к всем вподдержным ветвям.
Обратите внимание, что EXD-файлы будут созданы автоматически при следующем использовании новых элементов управления. Они находятся в профиле пользователя и могут также быть в других местах, например в следующих папках:
Простое исправление
Перед запуском любого из следующих решений простого исправления убедитесь, что затронутые приложения закрыты.
Чтобы автоматически удалить файлы с кэшом файлов расширения для управления, запустите одно из следующих решений простого исправления: При этом
EXD-файлы будут удаляться для пользователя, вошел в
систему.
Следующее решение простого исправления должно быть за которое работает администратор и удаляет EXD-файлы для всех учетных записей пользователей на компьютере:
Читайте также: