| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не работает Ssget по координатам внутри Foreach

Не работает Ssget по координатам внутри Foreach

Ответ
Поиск в этой теме
Непрочитано 29.03.2022, 07:34 #1
Не работает Ssget по координатам внутри Foreach
mogulfx
 
инженер
 
Регистрация: 11.08.2017
Сообщений: 13

В цикле foreach не получается создать набор по координатам (секущей рамкой) для последующего "взрыва" через explode.
Причём в командной строке всё работает:
(setq ss2 (ssget "_C" mn mx)) (command "_explode" ss2)

Пытаюсь соорудить функцию на основе загашников с форума, которая будет собирать гору одностраничных чертежей в один файл, при этом каждый чертёж вставляется последовательно в файл в виде блока (_insert), затем он должен быть взорван 2 раза через burst и очищен от мусора (quick-purge из g-tools). Но для начала обкатки не получается даже наборы нормально реализовать и взорвать обычной explode.

BricsCAD v16. В AutoCADе тоже не работает. lsp приложил, не получается реализовать 79-84 строку.

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

Вложения
Тип файла: lsp собрать-взорвать.lsp (4.2 Кб, 18 просмотров)

Просмотров: 4944
 
Непрочитано 29.03.2022, 07:50
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


А вся область видна на экране? Кстати, не забудь про грабли.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.03.2022, 09:52
#3
mogulfx

инженер
 
Регистрация: 11.08.2017
Сообщений: 13


Нет, область не видна.
Приложил архив 4 фалами, которые использую для опытов.
Вложения
Тип файла: zip 123.zip (73.2 Кб, 12 просмотров)
mogulfx вне форума  
 
Непрочитано 29.03.2022, 09:55
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Цитата:
Сообщение от mogulfx Посмотреть сообщение
Нет, область не видна.
При работе ssget по координатам она должна быть видна. Точка.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.03.2022, 09:59
#5
mogulfx

инженер
 
Регистрация: 11.08.2017
Сообщений: 13


Спасибо, понял. Буду искать вопрос создания набора по координатам другим способом
mogulfx вне форума  
 
Непрочитано 02.04.2022, 15:41
#6
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Сделай "Покажи всё" перед первым запуском ssget и не мучайся.

Если не хочется тратить время на перерисовку экрана (возможно - не
обязательную), то перед запуском ssget делай проверку видимости
точек секрамки на экране. И уже тогда, если нужно, "Покажи всё".
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 06.04.2022, 14:53
#7
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


На всякий случай напомню про переменную VTENABLE. Она отвечает за визуализацию этого зумирования/панорамирования.
skkkk вне форума  
 
Непрочитано 09.04.2022, 16:02
#8
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


По-настоящему всё несколько сложнее...

Если "в общем виде", то перед вызовом (ssget "_C" mn mx)
не грех проверить, где вообще мы находимся.

Например, пользователь, находясь в Лайоуте, через видовой
экран вошел в пространство модели и там вызвал ssget.
А точка - вне видимости. А мы ему - "Покажи всё".
А видовой экран не заблокирован. Вот пользователь-то обрадуется,
когда у него вся картинка слетит :-)

Значит, сперва нужно или перейти на вкладку Модель, а потом вернуться
обратно или озаботиться последующим выполнением "Покажи предыдущий".

Если повспоминать, то и другие ньюансы, наверное, можно вспомнить...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Автор темы   Непрочитано 10.02.2023, 09:26
#9
mogulfx

инженер
 
Регистрация: 11.08.2017
Сообщений: 13


Спасибо за совет с zoom. Вернулся к задаче спустя почти год, снова всё забыл, но получилось сделать что хотел.
mogulfx вне форума  
 
Непрочитано 10.02.2023, 14:49
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Сделай "Покажи всё" перед первым запуском ssget и не мучайся.
Чтобы не было рок-н-ролла на экране пользователя написал функцию lib:Zoom2Lst (смотри Выделение объектов в области контура, AutoCAD)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.02.2023, 15:45
#11
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Всем привет!

Когда-то я тоже сталкивался с проблемой видимости точки.

Ох, давно это было ... в 90-х ещё …

Если склероз мне не изменяет, то остановился на таком алгоритме действий - при
первом обнаружении точки вне видимости сделать "Покажи всё", потом отработать
ssget'ами и прочим (что нужно), потом вернуть "как было" через "Покажи предыдущий".

Тогда компы были на проце 80286 и Автокад-10 под DOS, поэтому каждая перерисовка
чертежа "с регенерацией" занимала время. А ну, как через "Покажи рамка" не попадёшь,
чтобы весь чертёж попал в "виртуальный экран" ?

Тот самый, который быстро зуммировался простой перерисовкой.

Сейчас и слов-то таких не помнят. :-)

А тогда - снова регенерация и снова потеря времени.

А нет - вру. Дополнительную проверку делал. Сперва анализировал, попала ли точка
в границы виртуального экрана. Если да - быстрый показ без регенерации, если нет -
"Покажи всё".

Ностальжи…
__________________
Счастливо, Алексей!

Последний раз редактировалось ===AAA===, 10.02.2023 в 15:53.
===AAA=== вне форума  
 
Непрочитано 10.02.2023, 15:57
#12
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


для варианта (ssget "_cp" (list pt1 pt2 pt3 pt4) '(filter-list)) экранной видимости того что находится внутри контура, определяемого точками 1-4, как и видимости самих точек не требуется.
__________________
K Lisp
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не работает Ssget по координатам внутри Foreach

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить среднюю линию между непараллельными? vigold AutoCAD 53 10.03.2023 23:13
Помогите подкорректировать лисп "подсчета площади по точке внутри контура" dextron3 LISP 16 05.11.2019 10:31
Задача по выбору блока, который пересекается с линией определенной длины и цвета aafeoktistov LISP 18 08.04.2019 16:42
Разное время ssget при разнесенных примитивах и собранных? prajdziswet LISP 13 16.02.2017 10:08
Проблема с функцией ssget Scorpio_1986 Программирование 4 26.05.2009 10:07