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

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

Нахождение расстояния между точками на чертеже

Ответ
Поиск в этой теме
Непрочитано 23.08.2010, 09:03
Нахождение расстояния между точками на чертеже
Макс_Кунгур
 
Регистрация: 10.12.2008
Сообщений: 122

Добрый день! Столкнулся с такой задачей. Есть чертеж с множеством точек (около 100). Нужно при помощи языка LISP найти расстояния от одной точки, которую ты укажешь на чертеже, до всех остальных точек. Результат с расстояниями должен вывестись в текстовый файл или в таблицу Excel.
Как найти расстояние между 2-мя точками, я знаю. А вот как до всех точек, пока не разобрался. Подскажите, пожалуйста, как решить данную задачу.
Просмотров: 18152
 
Непрочитано 25.08.2010, 10:12
#21
Дима_

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


Ну тогда-уж и не поленись пример что должно получиться с этого чертежа?
з.ы. и еще раз подумай нужен-ли тебе автокад для решения этой задачи, может лучше пример исходного текстового и результата?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 25.08.2010, 10:31
#22
Кулик Алексей aka kpblc
Moderator

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


Может, проще будет все же воспользоваться инструментами Civil'a? Там же не точки, а объекты Civil...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.08.2010, 11:10
#23
Макс_Кунгур


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


Дима_, выкладываю, то, что должно получиться.
Кулик Алексей aka kpblc, я не знаю, как будет проще, лишь бы работало. В дальнейшем я буду импортировать точки в этот dwg по мере их поступления, и применять данный лисп.
Вложения
Тип файла: zip Distan.zip (4.9 Кб, 62 просмотров)
Макс_Кунгур вне форума  
 
Непрочитано 25.08.2010, 11:20
#24
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


А где точки?
gomer вне форума  
 
Непрочитано 25.08.2010, 11:50
#25
Дима_

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


Макс ну ты прикалываешся что-ли? У тебя пример результата рисунку соответствует? В какие единицы не переводи - отношения в расстояних различается. Еще раз напоминаю - нужен-ли здесь вообще автокад - откуда эти точки полученны - не поленись тоже файл приложи. (только чтоб соответствовал).
p.s. если хочешь чтобы тебе что-то сделали не поленись объяснить, и пойми наконец что "секретные" точки твоей фирмы здесь всем по барабану, будешь урывками выкладывать это рано или поздно всех з...ет и обмерять тебе руками свои точки (или лисп учить).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.08.2010, 11:57
#26
Макс_Кунгур


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


Выкладываю файл с точками.
Дима_, да я значения расстояний наугад написал для примера, как должно выглядеть в лучшем случае. Там должны стоять истинные расстояния между точками.
Вложения
Тип файла: rar dist.rar (154 байт, 80 просмотров)
Макс_Кунгур вне форума  
 
Непрочитано 25.08.2010, 12:09
#27
CB

Конструирование в области нефтеразведки
 
Регистрация: 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
CB вне форума  
 
Автор темы   Непрочитано 25.08.2010, 12:11
#28
Макс_Кунгур


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


ВДима_, выкладываю файл, то что должно получиться, с реальными расстояниями и реальным расположением их в таблице (т.е. с минимальной по максимальную).
Вложения
Тип файла: rar Dist_New.rar (4.4 Кб, 82 просмотров)
Макс_Кунгур вне форума  
 
Непрочитано 25.08.2010, 12:30
#29
Дима_

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


Я правильно понимаю что 3 столбец (144,9 130,9 134.9 149.2) в расчетах участия не принимает?
То есть считаем расстояния только по 2 и 3 столбцу (x,y)?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 25.08.2010, 12:55
#30
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Макс_Кунгур Посмотреть сообщение
ВДима_, выкладываю файл, то что должно получиться, с реальными расстояниями и реальным расположением их в таблице (т.е. с минимальной по максимальную).
Сегодня наверно не смогу даже глянуть твой файл -
срочная работа
Сделаю позже...
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 25.08.2010, 12:56
#31
Макс_Кунгур


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


Извините, забыл сказать, что координату z (т.е. 3-й столбец 144,9 130,9 134.9 149.2) надо ОБЯЗАТЕЛЬНО в расчеты брать!!!

Последний раз редактировалось Макс_Кунгур, 25.08.2010 в 13:03.
Макс_Кунгур вне форума  
 
Непрочитано 25.08.2010, 13:07
#32
Дима_

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


Так у тебяж она не считаеться (у тебя только по 2 координатам?) Точно учитывать надо? (ладно-уж расчет можешь не переделывать, скажи только он верен или нет - ихмо он по 2 сделан)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.08.2010, 13:14
#33
Макс_Кунгур


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


Дима_, а как я смогу это проверить, если у меня этих значений расстояний нет. В том-то и дело, что мне их и нужно рассчитать и выдать результат. А когда они появятся, сверить с моими.
Макс_Кунгур вне форума  
 
Непрочитано 25.08.2010, 13:37
#34
Дима_

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


Короче я делаю тебе прогу которая считает расстояния с учетом xyz.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 25.08.2010, 13:40
#35
Кулик Алексей aka kpblc
Moderator

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


Моей соображалки хватило только на такое:
Вложения
Тип файла: rar Dist_New(2010.08.25-13.40).rar (8.1 Кб, 70 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.08.2010, 13:51
#36
Дима_

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


Смотри внимательно соблюдай формат твоего-же файла (программа его не проверяет набросал из готовых блоков - некогда мне особо), первую строку (в твоем файле она пустая) пропускает - можешь добавить там, например заголовок. Но все остальное - чтоб также (разделители табуляторы, поля по порядку). Выходной файл называй *.csv - его эксель должен "на ура" читать. Результат работы твоего-же примера в архиве. Если захочешь что-нибудь добавить-поменять 7 раз подумай - ничего не упусти - потом спроси.
Вложения
Тип файла: zip test.zip (4.17 Мб, 61 просмотров)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.08.2010, 15:40
#37
Макс_Кунгур


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


Дима_, спасибо. Сегодня-завтра потестирую, ответ напишу.
Кулик Алексей aka kpblc, спасибо, можно и так. Там у тебя в архиве только результат, а где сам лисп?
Макс_Кунгур вне форума  
 
Непрочитано 25.08.2010, 23:45
#38
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Тут делов с гулькин нос
Спробуй
Вложения
Тип файла: lsp mpex.LSP (2.5 Кб, 65 просмотров)
Олег (jr.) вне форума  
 
Непрочитано 25.08.2010, 23:49
#39
Кулик Алексей aka kpblc
Moderator

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


Макс_Кунгур, там нет лиспа. На втором листе Excel'a просто вычисления, вот и все. ДОбавляешь точки с номерами, справа - от какой до какой точки. И получаешь расстояния.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.08.2010, 08:59
#40
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


>Олег (jr.)
Цитата:
Там же не точки, а объекты Civil...
Пробуй такой вариант. С красотой в Exel'е не заморачивался...
Код:
[Выделить все]
(defun dwgru-string-to-list (str delimiter / pos)
  (if (= delimiter (chr 32))
    (setq str (dwgru-string-replace
                str
                (strcat (chr 32) (chr 32))
                delimiter
              ) ;_ end of dwgru-string-replace
    ) ;_ end of setq
  ) ;_ end of if
  (if (setq pos (vl-string-search delimiter str))
    (cons
      (substr str 1 pos)
      (dwgru-string-to-list
        (substr
          str
          (+ (strlen delimiter) pos 1)
        ) ;_ end of substr
        delimiter
      ) ;_ end of ru-string-pl-string-to-list
    ) ;_ end of cons
    (cons str '())
  ) ;_ end of if
) ;_ end of defun

(defun test (/ ent lst filename file)
  (setq ent (ssget "_x" '((0 . "MTEXT"))))
  (if ent
    (progn
      (setq lst
             (mapcar
               '(lambda (el)
                  ((lambda (txt pt)
                     (cons
                       (substr (car txt) 3)
                       (mapcar '+
                               pt
                               (list 0. 0. (read (last txt)))
                       ) ;_ end of mapcar
                     ) ;_ end of cons
                   ) ;_ end of lambda
                    (dwgru-string-to-list (car el) "\\P")
                    (cdr el)
                  )
                ) ;_ end of lambda
               (vl-sort
                 (mapcar
                   '(lambda (x)
                      ((lambda (a)
                         (cons
                           (cdr (assoc 1 a))
                           (cdr (assoc 10 a))
                         ) ;_ end of cons
                       ) ;_ end of lambda
                        (entget x)
                      )
                    ) ;_ end of lambda
                   (vl-remove-if
                     'listp
                     (mapcar 'cadr (ssnamex ent))
                   ) ;_ end of vl-remove-if
                 ) ;_ end of mapcar
                 (function
                   (lambda (a b)
                     (< (car a) (car b))
                   ) ;_ end of lambda
                 ) ;_ end of function
               ) ;_ end of vl-sort
             ) ;_ end of mapcar
      ) ;_ end of setq
      (setq
        filename
         (strcat (getvar "dwgprefix")
                 (vl-filename-base (getvar "dwgname"))
                 ".csv"
         ) ;_ end of strcat
      ) ;_ end of setq
      (setq file (open filename "w"))
      (mapcar
        (function
          (lambda (l)
            (foreach i l
              (write-line
                (strcat (car i) " " (rtos (cadr i) 2 2))
                file
              ) ;_ end of write-line
            ) ;_ end of foreach
          ) ;_ end of lambda
        ) ;_ end of function
        (mapcar
          (function
            (lambda (x)
              ((lambda (txt pt)
                 (mapcar
                   '(lambda (y)
                      (list
                        (strcat "r" txt "-" (car y))
                        (distance pt (cdr y))
                      ) ;_ end of list
                    ) ;_ end of lambda
                   (vl-remove x lst)
                 ) ;_ end of mapcar
               ) ;_ end of lambda
                (car x)
                (cdr x)
              )
            ) ;_ end of lambda
          ) ;_ end of function
          lst
        ) ;_ end of mapcar
      ) ;_ end of mapcar
      (close file)
      (print (strcat "Файл " filename " успешно создан..."))
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
) ;_ end of defun
Запуск - (test)
CB вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нахождение расстояния между точками на чертеже

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расстояния между компенсаторами тепловых сетей 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