| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
23.08.2010, 09:03 | #1 | |
Нахождение расстояния между точками на чертеже
Регистрация: 10.12.2008
Сообщений: 122
|
||
Просмотров: 18161
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Соберите все осальные точки в список и прогоните через функцию вычисления расстояния. Аналогично с выводом результата.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
|
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Олег (jr.), потестировал твой лисп. Вот что в командной строке написано:
Command: _appload DISTANCE_F.LSP successfully loaded. Command: Start command with PEX ... Command: Command: pex Select objects: Command: Как я понимаю, когда я выбрал точку, программа оборвалась. И куда этот файл .csv записывается? |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
~'J'~ |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
на экране У меня просто есть сомнение насчет того что выбранная точка является примитивом типа Point Добавим информативности: Код:
|
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Олег (jr.), спасибо. Все получилось, как надо. Я поменял строчку добавления в набор и заработало. Еще раз спасибо. Скажи, пожалуйста, а можно сделать так, чтобы точку не выбирать, с которой нужно считать значения, а при запуске лиспа, программа считала расстояния сначала от одной точки до всех оставшихся точек, потом от второй, и т.д., пока не дойдет до последней точки. А результаты бы выводились в один файл, но в разные таблицы. И еще, у меня у каждой точки стоит свой номер. Можно сделать так, чтобы в результирующий файл попадали значения расстояний с обозначением:
№ 35 - № 10Э06 15 № 35 - № 11Э06 25 ....................... № 35 - № n d |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
+ объяснения в чертеж в виде мтехта ~'J'~ |
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Чертеж не могу скинуть, потому что он у меня в проекте. Скидываю рисунок DIST. Эти точки импортированы с текстового файла с разделителями табуляции. В текстовом файле содержалось:
1 столбец - номер строки, 2 столбец - координата по X, 3 столбец - координата по Y, 4 столбец - координата по Z, 5 столбец - название (номер точки). Что нужно: загружаем лисп, вводим PEX, результат: Файл .csv, или можно много файлов .csv (по количеству точек), в котором должно быть всего 2 столбца: 1 ст. - название расстояния (например, r 1-2, r 1-3,....r 2-1, r 2-3,...r 3-1, r 3-2,....),Т.Е. ПО НОМЕРУ ТОЧЕК, чтобы не перепутать; 2 ст. - значение расстояния. Вот вроде бы все. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Рисунок ничем не поможет. Надо смотреть на внутренности dwg.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
то почему я должен писать эту фигню чтобы потом все переделывать? или ты думаешь что это прошу только из-за моей прихоти? А где расстояние от точек до текста, а как расположен текст относительно точек, а на каком слое и то и другое? Ну и мне это надо? |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
p.s. тебе еще "повезло" что точки оказались действительно точками, а расстояние - расстоянием (а, например, не проекцией на плоскость XY). p.p.s Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 24.08.2010 в 16:01. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
назад сделал 18 вариантов довольно большой программы - человек тоже говорил что не может чертеж выслать с рабочего места по корпоративным правилам, а в результате оказалось что ему совсем не то было нужно В результате я все же сделал как надо, на все про все месяц ушел, а можно было за пару дней сляпать если бы чертеж был изначально под рукой Насчет файла данных (текстовый или другой) тоже согласен, скорее всего он тоже у Макса есть |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Ну тогда-уж и не поленись пример что должно получиться с этого чертежа?
з.ы. и еще раз подумай нужен-ли тебе автокад для решения этой задачи, может лучше пример исходного текстового и результата?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Может, проще будет все же воспользоваться инструментами Civil'a? Там же не точки, а объекты Civil...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Макс ну ты прикалываешся что-ли? У тебя пример результата рисунку соответствует? В какие единицы не переводи - отношения в расстояних различается. Еще раз напоминаю - нужен-ли здесь вообще автокад - откуда эти точки полученны - не поленись тоже файл приложи. (только чтоб соответствовал).
p.s. если хочешь чтобы тебе что-то сделали не поленись объяснить, и пойми наконец что "секретные" точки твоей фирмы здесь всем по барабану, будешь урывками выкладывать это рано или поздно всех з...ет и обмерять тебе руками свои точки (или лисп учить).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
О как!
Оказывается здесь точки в пространстве, а не в плоскости... 1 484304.0 6373696.0 144.9 1Э04 2 484349.2 6373694.2 130.9 2Э04 3 484303.3 6373661.0 134.9 4Э04 4 484348.4 6373662.6 149.2 5Э04 |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Так у тебяж она не считаеться (у тебя только по 2 координатам?) Точно учитывать надо? (ладно-уж расчет можешь не переделывать, скажи только он верен или нет - ихмо он по 2 сделан)
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Моей соображалки хватило только на такое:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Смотри внимательно соблюдай формат твоего-же файла (программа его не проверяет набросал из готовых блоков - некогда мне особо), первую строку (в твоем файле она пустая) пропускает - можешь добавить там, например заголовок. Но все остальное - чтоб также (разделители табуляторы, поля по порядку). Выходной файл называй *.csv - его эксель должен "на ура" читать. Результат работы твоего-же примера в архиве. Если захочешь что-нибудь добавить-поменять 7 раз подумай - ничего не упусти - потом спроси.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Макс_Кунгур, там нет лиспа. На втором листе Excel'a просто вычисления, вот и все. ДОбавляешь точки с номерами, справа - от какой до какой точки. И получаешь расстояния.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Дима_, попробовал твою программу. Вроде бы все правильно делает, но мне нужен именно лисп, чтобы я в дальнейшем разобрался в нем и мог сам добавлять в него что-нибудь или убирать.
CB, попробовал твой лисп, выдает ошибку: Command: (test) *Cancel* bad argument type: numberp: {\\FTIMES Олег (jr.), потестировал твой лисп. Все хорошо работает, только номера точек ставятся по порядку, начиная с 1. А мне нужно, чтобы номера совпадали с названием точки (1Э06, 2Э06 и т.д). Можно это сделать? Последний раз редактировалось Макс_Кунгур, 27.08.2010 в 13:39. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
Смотри сам Последний раз редактировалось Олег (jr.), 27.08.2010 в 14:47. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Нет. Это личный выбор каждого, тем более что "подправить" иногда и не зная языка получается.
p.s. если б я ее на VB, C# или ассемблере написал - это-ж не значит, что я его изучить предлагаю. p.p.s если б предполагалось, что человек сам хочет написать - я б код в жизни бы не написал, еслиб только советом помог как сделать, здесь не мало народу (включая меня) которые так сами и программировать на лиспе научились - если время позволяет - в любом случае полезней с автокадом и лисп знать (ну хотя-бы ориентироваться), чем руками чертить.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 27.08.2010 в 14:52. |
|||
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Цитата:
В тестовом примере такого нет. Набери (entget (car (entsel))), ткни в Mtext и покажи что получилось... Интересует первая группа. У меня выдает следующий результат (с учетом z-координаты) r1Э04-2Э04 47.35 r1Э04-4Э04 36.41 r1Э04-5Э04 55.73 r2Э04-1Э04 47.35 r2Э04-4Э04 56.79 r2Э04-5Э04 36.53 r4Э04-1Э04 36.41 r4Э04-2Э04 56.79 r4Э04-5Э04 47.34 r5Э04-1Э04 55.73 r5Э04-2Э04 36.53 r5Э04-4Э04 47.34 |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
То СВ у тебя нет проверки м-текста (в рисунке могут не только с точками быть но и любые другие - на них по ходу и спотыкается) - самый простой вариант - в ssget "_x" убери - пусть рамкой нужные выбирает (хорошо - еще лисп вылетел а не в данные врет).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
>Дима_
Цитата:
Код:
Код:
>Макс_Кунгур Пробуй такой вариант: Код:
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
по этому я и говорю, что не нужно вобще здесь использовать сгененированный автокадом рисунок, искать в нем тексты и пр, получаеться много лишней работы - работать надо всегда с первоисточником данных (в нашем случае - текстовой файл), что у меня и сделанно, но уж коли это необходимо именно под автокад (хотя мне лично не понятно зачем он тут), можно переправить лисп под него, только мне уже честно лень этой программой заниматься, да и автора походу все (Олега лисп по крайней мере) устраивает.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
CB, потестировал твой лисп, выдает в csv файле:
Код:
Олег (jr.), твой последний вариант подходит,то, что нужно, только у тебя в результирующем файле расстояния начинаютя от наибольшего названия точки, а не от наименьшего расстояния и до самого большого. Можно это переделать? Последний раз редактировалось Кулик Алексей aka kpblc, 31.08.2010 в 14:18. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Может, просто надо формат ячеек сменить?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
~'J'~ Последний раз редактировалось Олег (jr.), 02.09.2010 в 09:40. |
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Олег (jr.), у тебя сейчас данные стоят с наименьшего НОМЕРА по наибольший. А мне надо с наименьшего РАССТОЯНИЯ по наибольшее. Т.е., у тебя сейчас выходит:
Point: 1Э04 2Э04 45.2358 4Э04 35.007 5Э04 55.5601 7Э06 397.179 9гЭ06 389.487 ...................... А надо: Point: 1Э04 4Э04 35.007 2Э04 45.2358 5Э04 55.5601 9гЭ06 389.487 7Э06 397.179 ...................... |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
|
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
Олег (jr.), проверил твое последнее творение. То что нужно, огромное спасибо! Скажи, у тебя в подсчете координата z присутствует или нет? Потому что, мне обязательно нужно, чтобы она присутствовала!!!
CB, выкладываю файл, на котором тестировал твой лисп. Последний раз редактировалось Макс_Кунгур, 02.09.2010 в 13:19. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
она учитывает Z координату если точка 3d, так что все пучком ~'J'~ |
|||
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
>Макс_Кунгур
Цитата:
Где в этом файле r141.2-140.0 31.мар r141.2-147.5 28.сен и т.д. Да и выше у тебя получалась ошибка {\\FTIMES Значит какому-то Mtext'у присвоен текстовый стиль TIMES... Да и вообще, наверняка в файле присутствует Мтекст, не имеющий отношения к точкам, а его нужно отфильтровать в ssget'е... Во всяком случае проверяй слегка обновленный вариант, тестируемый на том чертеже, что ты выложил (функции dwgru-string-replace, dwgru-string-to-list, mip_MTEXT_Unformat - без изменений): Код:
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
по крайней мере в приложенном примере точки были двухмерными а координата z должна была "тягаться" из текста (собственно почему я и начал говорить - что здесь проще вобще рисунком не пользоваться, а использовать исходный текстовой файл) - посему результат у тебя без учета z - неверный.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
рано или поздно - безусловно - только боюсь, не последний раз ты код переписываешь
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Регистрация: 10.12.2008
Сообщений: 122
|
CB, потестировал твой последний лисп, вроде бы все хорошо, но твои расстояния не совпадают с расстояниями Олег (jr.). Н-р: у тебя 10Э06 -> 9гЭ06 42.09, а у Олег (jr.) - 38.3214. По твоему лиспу у меня такой результат получается:
ТОЧКА 10Э06 10Э06 -> 9Э05 28.17 10Э06 -> 9бЭ06 28.82 10Э06 -> 9аЭ06 36.62 10Э06 -> 9гЭ06 42.09 10Э06 -> 9Э06 45.45 10Э06 -> 35 49.95 10Э06 -> 15Э06 50.46 10Э06 -> 9вЭ06 56 10Э06 -> 7Э06 57.32 10Э06 -> 12Э06 65.08 10Э06 -> 11Э06 85.91 10Э06 -> 14Э06 87.12 10Э06 -> 13Э06 87.56 10Э06 -> 34 118.66 10Э06 -> 4Э04 392.42 10Э06 -> 1Э04 392.58 10Э06 -> 5Э04 437.12 10Э06 -> 2Э04 438.07 ТОЧКА 11Э06 11Э06 -> 13Э06 21.82 11Э06 -> 12Э06 35 11Э06 -> 9вЭ06 35.5 11Э06 -> 9Э06 45.09 11Э06 -> 34 46.36 11Э06 -> 9аЭ06 53.07 11Э06 -> 35 53.67 11Э06 -> 15Э06 55.22 11Э06 -> 14Э06 57.96 11Э06 -> 7Э06 61.78 11Э06 -> 9бЭ06 64.39 11Э06 -> 9Э05 65.36 11Э06 -> 9гЭ06 69.86 11Э06 -> 10Э06 85.91 11Э06 -> 4Э04 453.19 11Э06 -> 1Э04 458.33 11Э06 -> 5Э04 498.46 11Э06 -> 2Э04 502.65 ................................. Вывод мне нравится, только лишь бы расстояния правильные были. Но я проверить это не могу, потому что кроме координат точек у меня данных нет. У тебя координата z учитывается в нахождении расстояния? И еще вопрос: если у меня на рисунке в дальнейшем будут построены границы и поверхности по этим точкам с изолиниями, программа сможет посчитать расстояния? Последний раз редактировалось Макс_Кунгур, 03.09.2010 в 08:31. |
|||
|
||||
Макс_Кунгур, почитал тему, стало очень любопытно...
Зачем все эти вычисления? Точнее, что нужно в конце? Может сразу нужно вычислить триангуляцию, например по Делоне или полигоны Вороного? По сути, запрошенные вычисления - направленный граф, те. вычисления, не зависимо от конечной задачи, избыточны. В предложенном задании, надо создать таблицу расстояний от точки до всех остальных и таблиц по количеству точек, сортировку в таблицах, сделать по расстоянию до остальных. Очень похоже на данные по триангуляции. Я упомянул о графе не зря - значительно быстрее будет вычислить в первой таблице расстояние от первой точки до всех, кроме первой, во второй, от второй до всех, кроме первой и второй, в третьей, от третьей до всех, кроме первой, второй и третьей. Вычислений меньше, данных столько же, использовать в будущем, еще проще. Но если говорить о триангуляции, то можно вообще не вычислять расстояние от точки до всех, достаточно сначала отсортировать все облако точек, а потом вычислять это расстояние от каждой до трех... Удачи!
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
хранится во второй строчке Mtext'a Просто удивительно, когда человек имеет такое количество постов на форуме, а вопросы задавать как-то не очень... И вот целая толпа уже неделю решает плевую проблему... Ну...ваще |
|||
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
А чего удивляться - про это уже было сказано...
Цитата:
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Расстояния между компенсаторами тепловых сетей | proekt_mep | Отопление | 10 | 29.05.2012 14:17 |
Определение высот рельефа по близлежащим точкам | dextron3 | Программирование | 21 | 10.11.2011 13:14 |
Расстояние между проемами в соседних пожарных отсеках (блокированные жилые дома) | Koliabek | Пожарная безопасность | 11 | 13.05.2009 11:17 |
Расстояние между видами на чертеже | Сеченов | Разное | 14 | 09.02.2009 15:50 |
Как определить расстояние между 2 точками по spline? | Хотабыч | Программирование | 5 | 22.01.2006 15:33 |