Selection sets

Автор Тема: Selection sets  (Прочитано 51021 раз)

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

Оффлайн altverАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 143
  • Карма: 2
Re: Selection sets
« Ответ #90 : 02-03-2020, 17:46:03 »
Факт, программа зарботала прекрасно!  Переполнея наборов нет! 

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Selection sets
« Ответ #91 : 02-03-2020, 17:48:03 »
Факт, программа зарботала прекрасно!  Переполнея наборов нет! 
Осталось разобраться как передавали наборы в _hideobjects. Ну и версия AutoCAD и наличие установленных обновлений.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Selection sets
« Ответ #92 : 02-03-2020, 21:03:18 »
Проблему решили след. образом:
после того, как проверили\перепроверили всю программу и все сторонние модули  (в местах, где было возможно отказаться от (ssget)-отказались и переделали) и не поучили никакого положительного результата стали методом "тыка" проверять команды одну за другой. И нашли! Оказывается, что комада _hideobjects создат наборы, которые невозможно ни проследить ни обнулить... Причем, если изолировать списком, то кажый объект это один дополнительный набор, а т.к. программа изолирует много объектов, то и присходило превышение 128-и наборов.
Решили просто: объекты переводим в особый слой и этот слой гасим...
Очень надеемся, что наш опыт поможет кому-либо.
Всем огромное спасибо!
Быть того не может! Как же она в таком случае может изолировать овердофига объектов? Только что проверил - больше 1500 отрезков отработаны корректно.
Может, все же передавались аргументы в команду не совсем корректно? И вообще, зачем было ее использовать? Не проще ли было поменять свойство Visible для примитивов (ну или 60, кажется, DXF-код)?
Все, что сказано - личное мнение.

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

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

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Selection sets
« Ответ #93 : 05-03-2020, 14:30:53 »
Советую напрочь забыть про наборы и формировать списки примитивов чисто программно. Это усложнит код раз эдак в дцать, но зато работать будет.
А как можно формировать код программно? Допустим у меня имеется линия и над ней текст. Как мне получить доступ к тексту, зная координаты линии, но при этом не использовать наборы?

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Selection sets
« Ответ #94 : 05-03-2020, 14:49:47 »
Во-первых, я говорил не о формировании кода программно :)
Во-вторых, что значит "над"? Z другая? Линия горизонтально с Y= (например) 100, а точка вставки текста (кстати, какого текста - однострочного? Многострочного?) равна 105?
Все, что сказано - личное мнение.

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

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Selection sets
« Ответ #95 : 05-03-2020, 14:50:15 »
Как мне получить доступ к тексту, зная координаты линии, но при этом не использовать наборы?
Придется (если не использовать наборы) пройтись по всем текстам в чертеже и найти ближайший к линии.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Selection sets
« Ответ #96 : 05-03-2020, 14:52:36 »
Это если не выяснится, что объект текста тупо пересекается отрезком :)
Все, что сказано - личное мнение.

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

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

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Selection sets
« Ответ #97 : 05-03-2020, 15:09:35 »
Линия горизонтально с Y= (например) 100, а точка вставки текста (кстати, какого текста - однострочного? Многострочного?) равна 105?
Алексей, Вы верно меня поняли. Речь идёт о 2D пространстве.

Придется (если не использовать наборы) пройтись по всем текстам в чертеже и найти ближайший к линии.
А это разве будет не медленнее чем использовать набор с фильтром?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Selection sets
« Ответ #98 : 05-03-2020, 15:44:13 »
А это разве будет не медленнее чем использовать набор с фильтром?
Будет медленнее. Но если область с текстом за пределами экрана, то фильтр типа (ssget "_C" ...) не сработает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Selection sets
« Ответ #99 : 05-03-2020, 15:49:29 »
Но если область с текстом за пределами экрана, то фильтр типа (ssget "_C" ...) не сработает.
Эту особенность наборов я знаю, как и особенность когда слишком сильно удаляешь, то флаг "_C" не работает корректно. Указываешь одни координаты, а выбирает как карта ляжет. Приходится пользоваться "_CP".
А как дела обстоят с этим на .NET?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Selection sets
« Ответ #100 : 05-03-2020, 16:16:43 »
А как дела обстоят с этим на .NET?
С этим точно так же - отбор примитивов проходит по одной и той же схеме и в .NET и в ObjectARX и в VisualLisp.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Selection sets
« Ответ #101 : 05-03-2020, 16:19:50 »
А как дела обстоят с этим на .NET?
С этим точно так же - отбор примитивов проходит по одной и той же схеме и в .NET и в ObjectARX и в VisualLisp.
То есть для скорости лучше делать так?
1. Zoom:Extends
2. Использовать SSet.
3. Делать то, что нужно.
4. Удалять SSet.
5. Возвращать зум к исходному значению.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Selection sets
« Ответ #102 : 05-03-2020, 16:22:02 »
То есть для скорости лучше делать так?
1. Zoom:Extends
2. Использовать SSet.
3. Делать то, что нужно.
4. Удалять SSet.
5. Возвращать зум к исходному значению.
Это далеко не всегда будет самый быстрый способ, так как возможная регенерация чертежа можсть съесть всю выгоду от наборов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Selection sets
« Ответ #103 : 05-03-2020, 16:23:46 »
А как дела обстоят с этим на .NET?
С этим точно так же - отбор примитивов проходит по одной и той же схеме и в .NET и в ObjectARX и в VisualLisp.
То есть для скорости лучше делать так?
1. Zoom:Extends
2. Использовать SSet.
3. Делать то, что нужно.
4. Удалять SSet.
5. Возвращать зум к исходному значению.
ИМХО все зависит от частоты подобных "поисков" и реализации алгоритма. А заодно и тонкостей критерия "что-то над чем-то".
Все, что сказано - личное мнение.

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

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

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 389
  • Карма: 21
Re: Selection sets
« Ответ #104 : 05-03-2020, 16:24:38 »
То есть для скорости лучше делать так?
1. Zoom:Extends
2. Использовать SSet.
3. Делать то, что нужно.
4. Удалять SSet.
5. Возвращать зум к исходному значению.
Это далеко не всегда будет самый быстрый способ, так как возможная регенерация чертежа можсть съесть всю выгоду от наборов.
В будущем попробую реализовать метод перебора.