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

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

Поиск блоков пересекающих полилинию

Ответ
Поиск в этой теме
Непрочитано 03.08.2015, 16:07
Поиск блоков пересекающих полилинию
tujn08
 
Регистрация: 26.12.2013
Сообщений: 284

Привет!
Помогите найти/написать функцию:
1) есть полилинии
2) есть дин.блоки
3) есть 2Д точки: начало и конец на полилинии (между точками могут быть несколько вершин). Эти точки могу являться как началом и концом полилинии, так и просто точки на линии

надо найти все блоки у которых точка вставки блока находится на участке п.3
Просмотров: 20836
 
Автор темы   Непрочитано 06.08.2015, 20:39
#61
tujn08


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Думаешь эти +-метры когото кроме тебя интересуют?))
Обязательно... к примеру КИП приборы на НПЗ - на установке высотой 30м - явно будет недобор.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
По атрибутам - наиболее удобный вариант, хотя минусов тоже хватает.
Согласен...

Что-то ушли от темы ))) Хотя я решил задачу уже. Еще раз спасибо всем!
tujn08 вне форума  
 
Непрочитано 06.08.2015, 21:54
#62
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от skkkk Посмотреть сообщение
Если я правильно понял о чем речь, то в лиспе я в свое время (лет 5 назад), начав программно создавать выноски, воевал с тем, чтобы созданная мультивыноска (строки и точка стрелки задавались программно) адекватно отображалась при запросе точки вставки полки. Визуализировалась, иначе говоря. При стандартном подходе он выдавал мне только резиновую нить, и я решил формировать блок, состоящий из текста в том же шрифте, чтобы видеть размеры самой выноски, и вставлял этот блок визуализируя его под курсором, резиновую нить при этом воспроизвести так и не удалось.
Примерно в то-же время я делал подобное и на лиспе - больше, чтоб показать как, а вообще это конечно решается джигом. Кстати, при условии установленных Экспрессов, появляються и соотв. лисп. функции для "визуального" перемещения - по моему в той, же теме я об этом писал.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 07.08.2015, 01:27
#63
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Как вариант готового jig'а, используемого в lisp: http://www.caduser.ru/forum/index.ph...171&MID=112412
Александр Ривилис вне форума  
 
Непрочитано 07.08.2015, 05:12
#64
skkkk


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


Цитата:
Сообщение от tujn08 Посмотреть сообщение
Что-то ушли от темы )))
Вы, правы, прошу прощения, это я виноват.
zamtmn, Сергей812, Дима_, Александр Ривилис и все, кому интересен вопрос, предлагаю продолжить в более подходящей теме: Как визуализировать создаваемый объект?.

Уважаемая администрация, я извиняюсь за нарушение правил, сам не понял, что на меня нашло, о чем думал, но как-то отвело меня от темы разговора. И довольно нехило. Однако тема нужная, и не хотелось бы терять данную информацию. Как прикажете поступить? Если решите перенести в ту тему, то я вставил там все цитаты со ссылками сюда на посты, относящимися к той теме - может, удобней будет вам их отсюда тогда изъять? Готов понести посильный труд для устранения своей ошибки. Например, удалить потом свое то сообщение с цитатами. Но может быть, их лучше так уже и оставить в цитатах, а тут по возможности либо заоффтопить каждому свое, либо их поудалять, но там есть сообщения, в которых затрагиваются обе темы, я вроде как профильтровал.
Ей-Богу, не нарочно...
skkkk вне форума  
 
Непрочитано 11.08.2015, 14:25
1 | #65
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от tujn08 Посмотреть сообщение
Поиск блоков пересекающих полилинию
Может быть пригодилось бы уже готовое из http://forum.dwg.ru/showthread.php?t=105238:
- PSI_SEL_ON_LINE - выбрать элементы на линиях с учетом указанного допуска. У блоков и текстов учитываются только точки вставки. Выбираются элементы относительно линии в зоне, шириной в допуск в каждую сторону.
- PSI_SEL_ON_LINE_3D - выбрать элементы на линиях с учетом 3D с учетом указанного допуска. У блоков и текстов учитываются только точки вставки. Выбираются элементы относительно линии в зоне, шириной в допуск в каждую сторону и в высоту.
- PSI_SEL_INTERSECT - выбрать элементы, пересекающие линии. У блоков и текстов учитываются габариты.
- PSI_SEL_INTERSECT_3D - выбрать элементы, пересекающие линии с учетом 3D. У блоков и текстов учитываются габариты.

Да! Еще команда FS из Express ищет блоки на линиях. (Иногда не находит).
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 11.08.2015 в 14:54.
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 12.08.2015, 08:12
#66
tujn08


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


Подскажите пожалуйста функцию поиска в указанной/выделенной области.
Нашел метод Select.
Требуется:
По двум точкам раскидать по наборам из нужных слоев все линии и блоки

----- добавлено через ~12 мин. -----
Нужно сделать вот это из выделенной области:
(setq nab_E (ssget "_X" (list (cons 8 "Pr_Equipment") (cons 0 "INSERT")))) ;создали набор из Boxes и AK_device
(setq nab_O (ssget "_X" (list (cons 8 "Pr_Obj") (cons 0 "INSERT")))) ;создали набор из Object
(setq nab_T (ssget "_X" (list (cons 8 "Pr_Track") (cons 0 "LWPOLYLINE")))) ;создали набор трасс
(setq nab_U (ssget "_X" (list (cons 8 "Pr_UGO_with_to") (cons 0 "INSERT")))) ;создали набор смены высоты

Последний раз редактировалось tujn08, 12.08.2015 в 08:23.
tujn08 вне форума  
 
Непрочитано 13.08.2015, 00:18
#67
skkkk


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


Цитата:
Сообщение от tujn08 Посмотреть сообщение
Нужно сделать вот это из выделенной области
Убрать "_X" вообще - не то?
skkkk вне форума  
 
Автор темы   Непрочитано 18.08.2015, 13:20
#68
tujn08


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Убрать "_X" вообще - не то?
Да увидел (до этого совсем забыл об этом).

Код:
[Выделить все]
 (progn
(princ "Выберите границу за пределами которой будут насставленны выноски.")(terpri)
	(setq point_1(getpoint "Первая точка: "))(terpri)
	(princ point_1)(terpri)
	(setq point_2 (getcorner point_1 "Вторая точка: "))(terpri)
	(princ point_2)(terpri)
	(setq point_0 (list (/ (+ (nth 0 point_1) (nth 0 point_2)) 2) (/ (+ (nth 1 point_1) (nth 1 point_2)) 2) (/ (+ (nth 2 point_1) (nth 2 point_2)) 2))  )
	(setq point_7 (list (nth 0 point_0) (nth 1 point_1) (nth 2 point_0))  )
	(setq point_8 (list (nth 0 point_2) (nth 1 point_0) (nth 2 point_0))  )
	(setq point_5 (list (nth 0 point_0) (nth 1 point_2) (nth 2 point_0))  )
	(setq point_6 (list (nth 0 point_1) (nth 1 point_0) (nth 2 point_0))  )
		;	|-----3-----1
		;	| (2) | (1) |
		;	4-----0-----6
		;	| (3) | (4) |
		;	2-----5-----|
	(setq
		nab_E1 nil
		nab_E2 nil
		nab_E3 nil
		nab_E4 nil
	)
	(setq nab_E1 (ssget "_W" point_1 point_0 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 1 четверть
	(setq nab_E2 (ssget "_W" point_3 point_4 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 2 четверть
	(setq nab_E3 (ssget "_W" point_0 point_2 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 3 четверть
	(setq nab_E4 (ssget "_W" point_6 point_5 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 4 четверть
	)
Щас такая проблема - не хотят создаваться наборы. Хотя бы nab_E3 создавался, а щас вообще ни один
tujn08 вне форума  
 
Непрочитано 18.08.2015, 13:33
#69
Кулик Алексей aka kpblc
Moderator

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


А точки, по которым ты выбор делаешь, попадают в отображаемую на экране область или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.08.2015, 14:04
#70
tujn08


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


Код:
[Выделить все]
 	(command "_rectang" point_1 point_0)
	(setq nab_E1 (ssget "_W" point_1 point_0 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 1 четверть
	(command "_rectang" point_3 point_4)
	(setq nab_E2 (ssget "_W" point_3 point_4 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 2 четверть
	(command "_rectang" point_0 point_2)
	(setq nab_E3 (ssget "_W" point_0 point_2 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 3 четверть
	(command "_rectang" point_6 point_5)
	(setq nab_E4 (ssget "_W" point_6 point_5 (list (cons 8 "Pr_Equipment") (cons 0 "INSERT"))))  ; 4 четверть
Да.
Заметил такое, что отклонился от нужной точки и все вроде как заработало- почему так случилось не знаю. Может потому, что эта точка была на блоке?

----- добавлено через ~3 мин. -----
еще бывало, что точка 0 скакала:
в 2 и 3 четверти была правильной
в 1 и 4 была выше правильной

----- добавлено через ~13 мин. -----
все я понял ))

Как переключать режим выбора того, что за пределами экрана? У меня не выбиралось, нужное- я приближал.
tujn08 вне форума  
 
Непрочитано 19.08.2015, 10:48
#71
skkkk


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


Цитата:
Сообщение от tujn08 Посмотреть сообщение
Как переключать режим выбора того, что за пределами экрана?
Насколько я знаю, такого режима не существует. Я выходил из данной ситуации так: получал точки рамки интерактивно с помощью getcorner, затем перед запуском ssget с аргументом "_C" (но то же справедливо и для "_F") зумировал чертеж, чтобы точки попадали на экран, а после создания набора возвращал вид обратно. Для пользователя это незаметно, если, конечно, чертеж не сотни мегабайт весит.
skkkk вне форума  
 
Автор темы   Непрочитано 19.08.2015, 21:27
#72
tujn08


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Насколько я знаю, такого режима не существует
Режим есть- знаю точно. В 10 версии при работе дома и на работе - в этом была разница в настройках.
tujn08 вне форума  
 
Непрочитано 19.08.2015, 21:41
#73
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Обязательно... к примеру КИП приборы на НПЗ - на установке высотой 30м - явно будет недобор.
В таких случаях над бы показать разрезик - как трасса эти 30м проходит, а не просто "стоячек" на плане

>>Режим есть- знаю точно.
нет такого режима
zamtmn вне форума  
 
Непрочитано 19.08.2015, 21:41
#74
skkkk


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


Сколько раз обсуждалось - за пределами экрана ни ssget, ни штатные приглашения выбора не выбирают объекты, захваченные рамкой, но не попавшие в видимую часть экрана.
skkkk вне форума  
 
Автор темы   Непрочитано 20.08.2015, 10:27
#75
tujn08


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
над бы показать разрезик
Уточнение: какой разрез? Профильный - зачем? Лишняя информация- достаточно высоты прибора (зачем показывать колонну - для того что бы показать, что лоток вертикально поднимается). Случаи спирального подъема по колонне уверен не будут.
Для "информационной" красоты приемлем только горизонтальный разрез (поэтажность на колонне) - для того что бы показать где датчик расположен относительно другого оборудования. Опять же высота прибора будет указана все равно. А если приборы на разных этажах- показать на каких они высотах достаточно. Для подсчета длины достаточно- остальное дело красоты в чертежах.

Сугубо мое мнение - так как я сделал бы и уверен сделаю, если придется!
tujn08 вне форума  
 
Автор темы   Непрочитано 21.08.2015, 14:31
#76
tujn08


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


Кто поможет разобраться с проблемой:

ssget
При максимальном "приближением" области расстановка блоков идет идеально. Т.е. координаты вычисляются правильно.
При даже небольшом "удалении" области (для наглядности еще "дальше" сделал) расстановка блоков идет черти как. Т.е. координаты плохо вычисляются.

Округления могут помочь?
Миниатюры
Нажмите на изображение для увеличения
Название: правильно.png
Просмотров: 37
Размер:	33.6 Кб
ID:	155480  Нажмите на изображение для увеличения
Название: не правильно.jpg
Просмотров: 23
Размер:	97.4 Кб
ID:	155481  
tujn08 вне форума  
 
Непрочитано 21.08.2015, 14:38
1 | #77
Кулик Алексей aka kpblc
Moderator

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


А ты проверь - как они вычисляются. И не срабатывают ли "грабли номер раз"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.03.2019, 22:30
#78
tonimikojanovka

Проектирование ИОС4 ЭЭ ОВиК ТМ ТС
 
Регистрация: 11.04.2013
Белгород
Сообщений: 16
Отправить сообщение для tonimikojanovka с помощью Skype™


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

Последний раз редактировалось tonimikojanovka, 13.03.2019 в 00:07.
tonimikojanovka вне форума  
 
Непрочитано 13.03.2019, 00:04
#79
Кулик Алексей aka kpblc
Moderator

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


И какое это имеет отношение ко всей теме?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.03.2019, 00:06
#80
tonimikojanovka

Проектирование ИОС4 ЭЭ ОВиК ТМ ТС
 
Регистрация: 11.04.2013
Белгород
Сообщений: 16
Отправить сообщение для tonimikojanovka с помощью Skype™


косвенное
tonimikojanovka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Поиск блоков пересекающих полилинию

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Очистка рисунка от "пустых" блоков Makswell Готовые программы 15 26.10.2022 15:24
AutoCAD 2012 Поиск по атрибутам блоков yurka52rus AutoCAD 8 17.07.2020 12:09
Lisp. Поиск блоков в файлах и замена атрибутов AlexKey LISP 3 12.09.2013 16:39