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

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

Как определить расстояние между полилиниями, включая дуги.

Ответ
Поиск в этой теме
Непрочитано 10.02.2022, 11:06 #1
Как определить расстояние между полилиниями, включая дуги.
koui
 
Регистрация: 24.01.2017
Сообщений: 125

Задача такая: есть полилинии, отображающие границы, например, тротуара. тротуар должен быть определенной ширины в каждой точке. но по факту в некоторых местах ширина тротуара немного неверна, немного - это буквально несколько сантиметров. заказчику (понятное дело) нужно с точностью до миллиметра. мне поставили задачу всё перепроверить, но реально сейчас мне проще перерисовать, чем перепроверить. как это вышло -я не знаю, делал не я.
есть идеи как упростить задачу? можно ли, например, проставить расстояния каждый метр между дугами? или просто вывести критические точки? их не так много, а перечерчивать очень много.
Просмотров: 3071
 
Непрочитано 10.02.2022, 11:11
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


построить буферы и искать пересечения - задача на один запрос
trir вне форума  
 
Непрочитано 10.02.2022, 11:37
#3
Петр-и-Алекс


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


первое, о чем подумалось:
- делаем блок из круга радиусом в нужное расстояние. на спец слое
- "дивиджим" одну кромку тротуара этим блоком с шагом положим в метр
по получившейся картине можно будет визуально заценить, где критические узости...
команду может быть и перепутал, сто лет не акадю. надеюсь товарищи поправят
---
второе:
а почему собственно не с офсетить одну из кромок???
Петр-и-Алекс вне форума  
 
Автор темы   Непрочитано 10.02.2022, 11:41
#4
koui


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


Цитата:
Сообщение от trir Посмотреть сообщение
построить буферы и искать пересечения - задача на один запрос
не совсем понял какие буферы, но будут ли пересечения, если, например, по всей длине будет одинаковое расхождение?

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Петр-и-Алекс Посмотреть сообщение
первое, о чем подумалось:
- делаем блок из круга радиусом в нужное расстояние. на спец слое
- "дивиджим" одну кромку тротуара этим блоком с шагом положим в метр
по получившейся картине можно будет визуально заценить, где критические узости...
команду может быть и перепутал, сто лет не акадю. надеюсь товарищи поправят
---
второе:
а почему собственно не с офсетить одну из кромок???
там километры тротуара, дорог, зеленых зон. а расхождения минимальны. заказчик не смотрит на миллиметры, но смотрит на сантиметры. короче, глазом не проверить никак, проще перечертить. но это тоже очень долго, сложная структура с кольцевыми дорогами и так далее.
koui вне форума  
 
Непрочитано 10.02.2022, 11:53
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


STBuffer

Цитата:
но будут ли пересечения, если, например, по всей длине будет одинаковое расхождение?
дырка будет, можно попробовать сделать STIntersection и поискать разрывы
trir вне форума  
 
Непрочитано 10.02.2022, 11:55
#6
Петр-и-Алекс


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


написать примечание: "ширина тротуара не менее Хмм" не прокатит?

----- добавлено через ~13 мин. -----
"первое" - это заготовка для лиспа
сценарий:
- из регулярных размеченных точек одной из полилиний замеряем расстояние до "ближайшей точки" противоположной
- если расстояние меньше заданного, в этих точках ставим размер на спец слое с сигнальным цветом. либо обводим эти места "сигнальной" полилинией
это к тому, что если задача регулярная, то есть смысл заказать кому то такую фичу. она простая в реализации
Петр-и-Алекс вне форума  
 
Непрочитано 10.02.2022, 12:31
#7
Browning Zed


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


Как вариант. Построить среднюю линию между двумя полилиниями тротуара, после чего сделать равномерный оффсет в обе стороны от средней линии. Единственное "но" - корректность построенной средней линии придется перепроверить, алгоритм построения не всегда выдает желаемый результат.
Browning Zed вне форума  
 
Автор темы   Непрочитано 10.02.2022, 13:23
#8
koui


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


Цитата:
Сообщение от trir Посмотреть сообщение
STBuffer


дырка будет, можно попробовать сделать STIntersection и поискать разрывы
STIntersection - что это? как это использовать? поиск в интернете ссылается на SQL

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Петр-и-Алекс Посмотреть сообщение
написать примечание: "ширина тротуара не менее Хмм" не прокатит?

----- добавлено через ~13 мин. -----
"первое" - это заготовка для лиспа
сценарий:
- из регулярных размеченных точек одной из полилиний замеряем расстояние до "ближайшей точки" противоположной
- если расстояние меньше заданного, в этих точках ставим размер на спец слое с сигнальным цветом. либо обводим эти места "сигнальной" полилинией
это к тому, что если задача регулярная, то есть смысл заказать кому то такую фичу. она простая в реализации
написать - не прокатит. есть техзадание, надо что б было строго по нему.
не умею я лиспы писать. может, есть готовый, но не нашёл. хотя бы автоматом каждые 3 метра расстояния бы ставил - уже хорошо. можно было бы выделить размеры с нужным расстоянием и удалить их, тогда остались бы те, которые не подходят. но и такого лиспа не найду.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Browning Zed Посмотреть сообщение
Как вариант. Построить среднюю линию между двумя полилиниями тротуара, после чего сделать равномерный оффсет в обе стороны от средней линии. Единственное "но" - корректность построенной средней линии придется перепроверить, алгоритм построения не всегда выдает желаемый результат.
не совсем понял - то есть, вместо одной линии придётся проверять две?
koui вне форума  
 
Непрочитано 10.02.2022, 14:05
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop:
Цитата:
Сообщение от koui Посмотреть сообщение
написать - не прокатит. есть техзадание, надо что б было строго по нему.
имхо, строго по техзаданию выглядит так. А не когда приходят и описывают словами свои хотелки, играя в испорченный телефон)
Сергей812 вне форума  
 
Автор темы   Непрочитано 10.02.2022, 14:12
#10
koui


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


придумал довольно неплохой вариант - делаем смещение (подобие) полилинии, а затем командой ПОДЧИСТИТЬ удаляем наложения с определенным допуском. уже лучше, но можно и лучше, наверное?

Последний раз редактировалось koui, 11.02.2022 в 01:19.
koui вне форума  
 
Непрочитано 10.02.2022, 14:21
#11
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


загрузи в БД
trir вне форума  
 
Автор темы   Непрочитано 10.02.2022, 14:35
#12
koui


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


Цитата:
Сообщение от trir Посмотреть сообщение
загрузи в БД
это потребует от меня дополнительных знаний. надо что-то попроще.
koui вне форума  
 
Непрочитано 11.02.2022, 08:02
#13
Browning Zed


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


Цитата:
Сообщение от koui Посмотреть сообщение
не совсем понял - то есть, вместо одной линии придётся проверять две?
Почему две? Из условий задачи:
Цитата:
Сообщение от koui Посмотреть сообщение
есть полилинии, отображающие границы, например, тротуара. тротуар должен быть определенной ширины в каждой точке. но по факту в некоторых местах ширина тротуара немного неверна
Верно ли я понимаю, что существуют две полилинии (для каждого тротуара, дороги, и т.д.) и по всей их длине необходимо выдержать определенное расстояние между этими двумя полилиниями (ширина тротуара)? Если я верно понял условие задачи, тогда создаете среднюю линию, которая будет являться осью тротуара и относительно нее делаете равномерный оффсет в обе стороны.
Browning Zed вне форума  
 
Непрочитано 11.02.2022, 08:34
#14
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Я бы прикинул объём ручной работы за день, потом сделал вывод, сколько дней понадобится. Часто "глаза боятся, а руки делают" И намного ли дольше будет вручную, чем поиски и применение автоматизации, хотя бы из того, что предложили...!
ЗЫ
А главное - сделал бы выводы на будущее, как рисовать так, чтобы потом можно было быстро изменить в случае чего!

Последний раз редактировалось VitalyAF, 11.02.2022 в 09:40.
VitalyAF вне форума  
 
Непрочитано 11.02.2022, 11:36
#15
Бим

пенсионер
 
Регистрация: 09.04.2018
Украина
Сообщений: 2,309


Цитата:
Сообщение от koui Посмотреть сообщение
по факту в некоторых местах ширина тротуара немного неверна,
Цитата:
Сообщение от koui Посмотреть сообщение
как это вышло -я не знаю, делал не я.
Так происходит при экспорте планов в двг из ряда программ, сталкивался в продуктах КРЕДО.
Цитата:
Сообщение от koui Посмотреть сообщение
есть идеи как упростить задачу?
Перечертить все вручную, т.е. выбросить сторонние программы и работать лишь в том, для чего двг родной. Что выглядит глупым, как и изначальное требование...
Ну и в древние времена измерение по чертежам было тупо запрещено, если это не специфическая продукция, изначально для того предназначенная. Вроде топографического чего.
Бим вне форума  
 
Непрочитано 11.02.2022, 12:55
#16
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Если дело в чертежах, то решается просто, с помощью записи в ТТ типа- ширина тротуаров по всей длине - 3000 мм., или см. лист такой-то
Если сделали на месте не по чертежу, то это дело тех, кто делал., я т.д.
VitalyAF вне форума  
 
Непрочитано 11.02.2022, 13:08
#17
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,456


К примеру, выстроить массив из отрезков подлиннее по траектории по одной из бровок тротуара, расчленить, обрезать их до другой бровки
(или применить какую-нибудь программу построения откосов).
Дальше можно длины посмотреть в извлеченных данных или применить простенький лисп по простановке параллельных размеров.
Для себя писал когда-то:
Код:
[Выделить все]
 ;Команда образмеривания отрезков параллельными размерами
(defun c:dim1 ()
	(prompt "\n Выберите отрезки для образмеривания:")
	(setq nab (ssget))
	(setq kol (sslength nab))
	(setq n -1)
	(repeat kol
		(setq n (+ n 1))
		(setq pr (ssname nab n))
		(setq pr_ (entget pr))
		(if (= (cdr (assoc '0 pr_)) "LINE")
			(progn
				(setq t1 (cdr (assoc '10 pr_)))
				(setq t2 (cdr (assoc '11 pr_)))
				(command "_dimaligned" t1 t2 t1)
			)
		)
	)
)
Oleg T вне форума  
 
Автор темы   Непрочитано 11.02.2022, 13:20
#18
koui


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


Цитата:
Сообщение от Browning Zed Посмотреть сообщение
Верно ли я понимаю, что существуют две полилинии (для каждого тротуара, дороги, и т.д.) и по всей их длине необходимо выдержать определенное расстояние между этими двумя полилиниями (ширина тротуара)? Если я верно понял условие задачи, тогда создаете среднюю линию, которая будет являться осью тротуара и относительно нее делаете равномерный оффсет в обе стороны.
всё страшнее. есть граница участков, от них зеленая зона, от неё - тротуара, потом опять зеленая зона, потом дорога, потом опять зеленая зона и граница следующих участков. есть части, где нет тротуара или другие конфигурации. но "пляшем" всегда от участков.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от VitalyAF Посмотреть сообщение
И намного ли дольше будет вручную, чем поиски и применение автоматизации, хотя бы из того, что предложили...!
во время поисков можно заниматься другими делами, работа не встаёт. если была бы только одна задача, я бы изучил лисп до уровня, достаточного для написания подобной программки. я так изучил VBA для эксель, когда надо было за ночь сделать более 1000 документов из БД.

----- добавлено через ~5 мин. -----
Цитата:
Сообщение от VitalyAF Посмотреть сообщение
Если дело в чертежах, то решается просто, с помощью записи в ТТ типа- ширина тротуаров по всей длине - 3000 мм., или см. лист такой-то
Если сделали на месте не по чертежу, то это дело тех, кто делал., я т.д.
Заказчика это не устраивает.
koui вне форума  
 
Непрочитано 11.02.2022, 13:33
#19
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
Сообщение от koui Посмотреть сообщение
Заказчика это не устраивает.
Тогда какой смысл перечерчивать, он всё равно может измерить не там и не так, не той линейкой, и вообще по чертежам не меряют а размеры читают.

Цитата:
Сообщение от koui Посмотреть сообщение
я так изучил VBA для эксель, когда надо было за ночь сделать более 1000 документов из БД.
Две ночи уже прошло... ))

Последний раз редактировалось VitalyAF, 11.02.2022 в 13:39.
VitalyAF вне форума  
 
Непрочитано 11.02.2022, 15:06
#20
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,172


Можно попробовать построить среднюю линию между полилиниями методом "катящегося шара": http://www.jefferypsanders.com/autolisp_Rollin.html
Если не подойдут решения по ссылке из #7.
А потом найти пересечения с полилинией, построенной на половинном расстоянии (offset) от одной из границ тротуара.

Было бы неплохо посмотреть фрагмент чертежа, но если заказчик цепляется к такому - наверное, категорически не позволит выложить.

Цитата:
Сообщение от VitalyAF Посмотреть сообщение
вообще по чертежам не меряют а размеры читают
Генплан (как и карты) - редкое исключение.

Последний раз редактировалось kp+, 11.02.2022 в 15:13.
kp+ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как определить расстояние между полилиниями, включая дуги.

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какое максимально допустимое расстояние между опорами для триплекса из закалённого стекла yulia_suslova Прочее. Архитектура и строительство 2 07.06.2019 12:13
Как определить минимальное расстояние вдоль усилия между болтами, расположенными в шахматном порядке? anton_s Металлические конструкции 1 01.04.2019 12:29
Как определить расстояние между жилым домом и зданием автостоянки закрытого типа в 2018 году?:) fadeaway Пожарная безопасность 1 09.10.2018 09:12
Расстояние между жилыми зданиями V степени огнестойкости? RuEu Архитектура 21 17.06.2014 13:21
Расстояние в свету между сваями Plage Основания и фундаменты 31 21.04.2011 22:46