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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить набор текста не в области видимости?

Как получить набор текста не в области видимости?

Ответ
Поиск в этой теме
Непрочитано 29.04.2015, 08:59 #1
Как получить набор текста не в области видимости?
prajdziswet
 
Регистрация: 30.03.2015
Сообщений: 152

Вопрос:
1) как получить набор если находишься не в области видимости, то есть
я делаю так
(setq nabor_s (ssget "_W" '(159395 90167) '(160855 89167) '((0 . "*EXT")))) (или "_C" неважно)
если я нахожусь в той части экрана, то есть вижу рамку (секущую) - я получаю набор , если нет то не получаю...как мне получить набор даже если я не вижу тех координат
2) как мне получить набор из листа находясь в модели (рамка с координатами)

Р.S Заранее благодарствую =)
Ну и пояснение скриншотами, где х1 и х2 -координаты рамки
Нажмите на изображение для увеличения
Название: п1.jpg
Просмотров: 38
Размер:	46.5 Кб
ID:	148827
Нажмите на изображение для увеличения
Название: п2.jpg
Просмотров: 32
Размер:	49.8 Кб
ID:	148828

Просмотров: 3956
 
Непрочитано 29.04.2015, 09:16
#2
Кулик Алексей aka kpblc
Moderator

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


Очень старое поведение выбора. Практически не лечится: только если сначала выбирать объекты, а потом использовать (ssget "_I") (насколько я помню ключи ssget).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.04.2015, 09:21
1 | #3
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Если не ошибаюсь, (ssget "_X"... подбирает со всех пространств. только там не получится явно задать точки рамки и надо будет писать нечто в духе:
Код:
[Выделить все]
 (ssget "_x" (list 
	(cons 90 3) 
	(cons -4 ">,>,*") (cons 10 (	mapcar '- pt (list d d d)) ) 
	(cons -4 "<,<,*") (cons 10 (	mapcar '+ pt (list d d d)))
))
допилить туда (cons 410 "layout...") и все что еще душа пожелает

p.s. не ошибся. в чистом документе нарисовал два круга, один в модели, второй в листе:
Код:
[Выделить все]
Команда: (sslength (ssget "_x" (list (cons 0 "CIRCLE"))))
2
Команда: (sslength (ssget "_x" (list (cons 0 "CIRCLE") (cons 410 "model"))))
1
Команда: (sslength (ssget "_x" (list (cons 0 "CIRCLE") (cons 410 "Лист1"))))
1
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 29.04.2015 в 09:30.
Vladimir_Sergeevich вне форума  
 
Непрочитано 29.04.2015, 12:43
#4
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Я вот так делаю
Код:
[Выделить все]
 (vl-cmdf "_zoom" "_W" '(159395 90167) '(160855 89167))
(setq nabor_s (ssget "_W" '(159395 90167) '(160855 89167) '((0 . "*EXT"))))
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 29.04.2015, 20:09
#5
prajdziswet


 
Регистрация: 30.03.2015
Сообщений: 152


Спасибо огромное,всегда приятно услышать идеи и подсказки
Vladimir_Sergeevich -спасибо покорпаюсь,просто не встречал условий -> надо поизучать ssget ( гдето видел, но и сейчас трудновато как задавать понять--пороюсь...идея выбора через условий мне больше нравиться)
Disney -спасибо, я об этом думал и делал zoom c ключом _e (сразу все на чертеже)..не элегантно,не очень красиво -но Просто и лаконично,но хочется как то по элегатнее,хоть незнаю как..
п.с ну и отдельное спасибо Кулику, без него общение б форуме замерло , да и толковые подсказки бывают (но жаль что мне тут автоматическое условие надо..)
если есть идеи буду благодарен..
prajdziswet вне форума  
 
Непрочитано 29.04.2015, 21:23
#6
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 188
Отправить сообщение для nolte с помощью Skype™


собирает из всех пространств как и писалVladimir_Sergeevich,
(ssget "_X" (list(cons 0 "TEXT")))
для проверки можно перевести набор в список и...
Команда: (mapcar '(lambda(a)(dxf 410 a))lst)
("Лист1" "Лист2" "Model" "Model" "Model" "Model" "Model" "Model")
метод "GETBOUNDINGBOX" возвращает координату нижней левой и правой верхней точки описывающей рамки примитива.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 29.04.2015, 23:11
#7
skkkk


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


Цитата:
Сообщение от Disney Посмотреть сообщение
Я вот так делаю
Я тоже делаю так, но в конце добавляю "_.zoom" "_p". Тогда пользователь ничего не замечает.
skkkk вне форума  
 
Непрочитано 29.04.2015, 23:53
#8
Кулик Алексей aka kpblc
Moderator

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


Мне кажется, была тема с решением вопроса по получению примитивов вне видимой области экрана...
А если не секрет, почему именно такое требуется - именно рамкой, которая не факт что видна?
P.S. ИМХО самое лучшее решение предложил nolte - хотя оно и самое длинное по времени выполнения (да и при его реализации придется учитывать вариант разных систем координат). Выполнение зума на загруженных чертежах может занимать приличное время (да еще, помимо зума, наверняка понадобится обновление - тоже потери). Так что я бы задумывался о переделке алгоритма...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.04.2015, 02:47
#9
skkkk


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Выполнение зума на загруженных чертежах может занимать приличное время
Бывали чертежи, на которых реакция на один поворот колеса затягивалась на несколько секунд, так тут не только программно, тут просто просмотреть этот чертеж - уже обплюешься. Я такие чертежи сперва чищу основательно, если нечего больше чистить, а тормоза не прекратились - разбиваю на несколько. Если нельзя разбить - морожу ненужные слои. А в основном зум по рамке, затем выделение, затем зум обратно (все программно) - реально даже и не заметно. Я для себя написал функцию - аналог ssget, но с возможностью своего приглашения, так там я и реализовал этот принцип. Тяну рамку, если первая ее точка ушла за экран при нажатии второй, то происходят описанные выше действия - и все попадает в набор. Работает безотказно. Правда почти все штатные команды пришлось слегка допиливать, чтоб они получали набор от моей функции, но оно того стоило: теперь, выбрав перенос, я вижу информативное предложение у курсора: "Что переносим, хозяин?" вместо скучного "Выберите объекты", а в качестве бонуса имею набор и того, что не попало в экран. Другой вопрос, что к тому времени, когда я смог такое написать, я уже привык щелкать рамкой несколько раз, в случае непопадания на экран всего что надо, да и взял в оборот инструменты типа выбор подобных, выбор объектов слоя, и прочих самописных "выборов" - в итоге так по-моему ни разу и не воспользовался на практике этим, так скажем, фиксом.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А если не секрет, почему именно такое требуется - именно рамкой, которая не факт что видна?
Если в текущем пространстве - я только что описал пример такого применения, а вот выбирать рамкой в модели, находясь при этом в листе - не могу сообразить ситуации, в которой мне бы подобное понадобилось.
skkkk вне форума  
 
Автор темы   Непрочитано 30.04.2015, 11:13
#10
prajdziswet


 
Регистрация: 30.03.2015
Сообщений: 152


Спасибо
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А если не секрет, почему именно такое требуется - именно рамкой, которая не факт что видна?
не секрет - просто лисп переводит чертежи в pdf, и в название чертежа я проставляю номер (если удалось определить в поле, как текст). и не факт что я нахожусь именно там чтобы выцепить номер страницы рамки чертежа, чертежей может быть несколько
prajdziswet вне форума  
 
Непрочитано 30.04.2015, 11:25
#11
baksconstructor


 
Регистрация: 05.11.2014
Сообщений: 982


Цитата:
Сообщение от prajdziswet Посмотреть сообщение
если удалось определить в поле, как текст
А если рамка блоком ?
baksconstructor вне форума  
 
Автор темы   Непрочитано 30.04.2015, 19:53
#12
prajdziswet


 
Регистрация: 30.03.2015
Сообщений: 152


- ну это как ты хочешь(я не обрабатываю текст внутри блока,пока что) :
1) про блоки много написано,например хорошо Алексей написал http://autolisp.ru/2014/06/27/dynblocks-parameters/ (самое лучшее)
2) да простым взрывом (если не динамический конечно),взять ssget и возвратить до взрыва, да и куча наверное идей найдется
но топик не про это..
А всем спасибо буду пытаться думать и пробывать
prajdziswet вне форума  
 
Непрочитано 01.05.2015, 11:17
1 | #13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от Disney Посмотреть сообщение
Я вот так делаю
Цитата:
Сообщение от skkkk Посмотреть сообщение
Я тоже делаю так, но в конце добавляю "_.zoom" "_p"
Я перед zoom _p даю еще одну команду Zoom с коэффициентом 0.95. У меня были случаи, когда не выбирались примитивы на самой границе
Код:
[Выделить все]
(command "_.Zoom" "_Window" (trans bl 0 1)(trans tr 0 1) "_.Zoom" "0.95x")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.05.2015, 08:14
#14
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Zoom с коэффициентом 0.95
Вот спасибо
А то я чтоб на границах с выбором проблем не было, к координатам рамки прибавлял небольшие значения(к правому верхнему) ну и отнимал(от левого нижнего)
Но использование command меня всегда немного огорчает, как-то это не профессионально. Так что на будущее возьму на вооружение вариант Vladimir_Sergeevich, хотя в нём казалось бы ни какой тайны не раскрыто, но то ли лениво было самому нормальный вариант продумывать, что заставляет использовать костыли с command.
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить набор текста не в области видимости?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Освоение тел Солнечной системы: Техника, технологии, ресурсы. Солидворкер Разное 3697 18.04.2024 08:18
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Как с помощью lisp получить список всех состояний видимости динамического блока crosandr LISP 4 11.04.2012 22:33
Быстро получить Набор объектов попадающих в Сферу [N.S] Программирование 10 09.08.2009 11:04