Ограничения entmakex

Автор Тема: Ограничения entmakex  (Прочитано 8692 раз)

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

Оффлайн Кирилл НикифоровАвтор темы

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Ограничения entmakex
« : 27-11-2018, 11:51:56 »
Здравствуйте!

На днях столкнулся с неожиданным поведением функции entmakex.
Описание проблемы: В файле чертежа вставлена внешняя ссылка (подложка с планом) объемом около 160 Мб. Тяжело, но автокад дышит. Запускается лисп, который должен создать анонимный блок, а затем создать вставку этого блока в пространстве модели. В лиспе используется entmakex в обоих случаях.
Блок создается (имя приблизительно *U33333), но при вставке возвращается nil. Ладно, ну не смог... хотя непонятно почему. Но самое интересное - дальше. Если создать именованный блок, то при запуске возвращается имя примитива, но УДАЛЁННОЕ, и никакой вставки. Линии, полилинии создаются "на ура".
Без такой большой внешней ссылки, естественно, все работает, как ожидается.

Собственно вопрос: это нормально? ))) Ни про какие ограничения entmakex за много лет я сведений не нашел.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #1 : 27-11-2018, 12:00:58 »
Я бы предположил, что это какой-то баг. Но его причину и есть ли возможность его обойти - не скажу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Кирилл НикифоровАвтор темы

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Re: Ограничения entmakex
« Ответ #2 : 27-11-2018, 12:39:23 »
Обойти может vla-InsertBlock, что собственно мы и сделали.
Но "нежданчик" насторожил.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #3 : 27-11-2018, 13:01:37 »
Проверяли в нескольких версиях AutoCAD со всеми обновлениями?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Кирилл НикифоровАвтор темы

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Re: Ограничения entmakex
« Ответ #4 : 27-11-2018, 13:23:35 »
2016-x64 и 2018-x64 дают одинаковый результат. И - да, со всеми апдейтами.
Подозреваю, что виновато имя блока большее, чем 32768.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #5 : 27-11-2018, 13:32:13 »
Подозреваю, что виновато имя блока большее, чем 32768.
Не понял. Имеется в виду число в наименовании неименованного блока? Тогда причем здесь внешняя ссылка? Или в ней тоже огромное количество неименованных блоков?
Проверить несложно. Достаточно в цикле создать > 32K неименованных блоков.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Кирилл НикифоровАвтор темы

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Re: Ограничения entmakex
« Ответ #6 : 27-11-2018, 14:15:34 »
Проверил. Работает значительно дальше. Предположение было ошибочным.
« Последнее редактирование: 27-11-2018, 14:57:10 от Кирилл Никифоров »

Оффлайн Кирилл НикифоровАвтор темы

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Re: Ограничения entmakex
« Ответ #7 : 27-11-2018, 14:50:59 »
Блоков создает "без счета", я не дождался конца (больше 33000)
А вот инсерты может создать из блока с именем <= *U32767. *U32768 уже nil.
Предположение подтверждается.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #8 : 27-11-2018, 14:54:04 »
Интересный факт. Нужно подумать как сделать тестовый файл и демонстрационную программку в несколько строк. Тогда можно будет отправить в ADN DevHelp.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Кирилл НикифоровАвтор темы

  • ADN OPEN
  • Сообщений: 24
  • Карма: 4
Re: Ограничения entmakex
« Ответ #9 : 27-11-2018, 14:58:28 »
OK
Сейчас попробую оформить.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #10 : 27-11-2018, 15:00:55 »
OK
Сейчас попробую оформить.
Спасибо! Я заодно проверю в AutoCAD 2019 со всеми обновлениями. Если исправлено, то особого смысла отправлять нет - это значит, что этот баг уже отправляли и его исправили и к старым версиям (даже 2018) решили не возвращаться.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Re: Ограничения entmakex
« Ответ #11 : 27-11-2018, 15:01:19 »
А почему не использовать конструкцию вида
Код - Auto/Visual Lisp [Выбрать]
  1. (setq def (vlax-vla-object->ename (vla-add (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
  2.                                            (vlax-3d-point '(0. 0. 0.))
  3.                                            "*U"
  4.                                            ) ;_ end of vla-add
  5.                                   ) ;_ end of vlax-vla-object->ename
  6.       ) ;_ end of setq
Если уж так нужен именно entmake? Имя будет гарантированно уникальное.
Хотя сам факт невозможности создания анонимного блока интересен.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #12 : 27-11-2018, 15:06:04 »
Алексей Кулик,
Так вариант с vla-InsertBlock уже выше был предложен как workaround. Или ты о чем-то другом?
И вообще-то тут отловленный баг, который не мешало бы отправить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ограничения entmakex
« Ответ #13 : 27-11-2018, 15:07:51 »
Хотя сам факт невозможности создания анонимного блока интересен.
Блок создаётся, но не вставляется при помощи (entmake)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Re: Ограничения entmakex
« Ответ #14 : 27-11-2018, 15:08:11 »
Я не про вставку, а про создание анонимного блока. Я так понял, что проблема именно в этом - невозможно создать анонимный блок, если число превышает 2^15-1
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!