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

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

Экспорт в Excel длины всех участков полилинии

Ответ
Поиск в этой теме
Непрочитано 16.08.2013, 19:02
Экспорт в Excel длины всех участков полилинии
Meddoks
 
Регистрация: 19.05.2010
Сообщений: 12

Заранее извиняюсь если этот вопрос уже поднимался, но поиск ничего не дал!!
Вообщем вопрос следующий - полилиния с "n" количеством точек , полилиния изменяет свое направления под разными углами.

Нужно: получить файл экселя в котором в табличке будут показаны длины каждого участка полилинии, угол поворота.

Планирую использовать - для дальнейшего построения профиля.

Либо если есть программы позволяющие получить данную таблицу данных - укажите Фоме не ведающему
Но хотелось бы лисп - т.к например для построения профиля в ГЕОНИКСЕ нет генпаланов с горизонталями 3d
Просмотров: 13274
 
Непрочитано 30.08.2013, 10:46
1 | #21
VVA

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


Условия те же, что и в #4
Все функции взяты из ECoorE rev7.zip по ссылке.
Полилинии выбирать по одной за раз
Код:
[Выделить все]
(defun c:COORVIK (/ ptLst seg n ret tmp)
  (vl-load-com)
  (setq *ptcol:SEPARATE* "")
  (if (setq ptLst (vva-get-final-points-list))
    (progn
      (setq seg
             (mapcar
               '(lambda (a b)
                  (list
                    a
                    b
                    (vec1 b a) ;_единичный вектор
                    (rtos (distance a b) 2 6) ;_расстояние 6 - точность округления
                  ) ;_ end of list
                ) ;_ end of lambda
               ptlst
               (cdr ptlst)
             ) ;_ end of mapcar
      ) ;_ end of setq
      (setq n   0
            ret nil
      ) ;_ end of setq
      (foreach i seg
        (setq ret
               (cons
                 (list
                   (nth 0 i)
                   (nth 1 i)
                   (if (and
                         (setq tmp (nth (setq n (1+ n)) seg))
                         (nth 2 tmp)
                       ) ;_ end of and
                     (angtos (3d_angw1w2 (nth 2 i) (nth 2 tmp)) 0 6) ;_угол 6 - точность округления
                     ""
                   ) ;_ end of if
                   (nth 3 i)
                 ) ;_ end of list
                 ret
               ) ;_ end of cons
        ) ;_ end of setq
      ) ;_ end of foreach
      (xls (reverse ret)
           '("Начало" "Конец" "Угол поворота" "Длина сегмента")
           nil
           "COORVIK"
      ) ;_ end of xls
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
) ;_ end of defun
(defun vec1 (p1 p2)
  ((lambda (d)
     (if (not (zerop d))
       (mapcar '(lambda (x1 x2) (/ (- x2 x1) d)) p1 p2)
     ) ;_ end of if
   ) ;_ end of lambda
    (distance p1 p2)
  )
) ;_ end of defun

(defun 3d_angw1w2 (Wekt1 Wekt2 / CosA)
;;; Угол между векторами (скалярное произведение векторов)
;;;--------------------------------------------------------
;;; Параметры:
;;; Wekt1, Wekt2 - вектора
;;; Возвращает  угол между векторами в радианах
;;; http://www.elecran.com.ua/index.php?pagename=programer.php
;;;--------------------------------------------------------
  (if (equal (setq CosA (/ (apply '+ (mapcar '* Wekt1 Wekt2))
                           (distance '(0 0 0) Wekt1)
                           (distance '(0 0 0) Wekt2)
                        ) ;_ end of
             ) ;_ end of setq
             -1.0
             1e-6
      ) ;_ end of equal
    pi
    (if (equal CosA 0.0 1e-6)
      (* 0.5 pi)
      (atan (sqrt (- 1 (* CosA CosA))) CosA)
    ) ;_ end of if
  ) ;_ end of if
) ;_ end of defun
PS На 25 пикете у тебя 2 совпадающие вершины. Используй "удаление совпадающих вершин" из pltools
PPS если заменить в строчке
Код:
[Выделить все]
(angtos (3d_angw1w2 (nth 2 i) (nth 2 tmp)) 0 6) ;_угол 6 - точность округления
Ноль (0) на 1, то получишь градусы, минуты, секунды
Код:
[Выделить все]
(angtos (3d_angw1w2 (nth 2 i) (nth 2 tmp)) 1 6) ;_угол 6 - точность округления
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 30.08.2013 в 11:01.
VVA вне форума  
 
Автор темы   Непрочитано 04.09.2013, 23:44
#22
Meddoks


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


Спасибо всем кто откликнулся!!
Наконец я приехал из своей командировки...

Теперь по порядку:
1. nolte - сори за бестолковый вопрос, но зачем а главное как (углы не 45 и не 90*) лепить уголки на пластиковой трубе, она же гнется. Получаешь катушку метров 200 и растягиваешь.

В примере я показал разные варианты углов и положения линий во всех квадрантах, чтоб понимать как программа вычисляет значения углов между участками полилинии (векторами).
По поводу пластиковой трубы - диаметр 630 не сильно согнешь)) И еще планирую использовать для самотечных сетей - где также угол указывается.
2. Как Вы наверное уже поняли - требовалось перенести данные из автокада в эксель.


Ну и самое главное - потестил програмку, подкорректированную VVA на основании функций взятых из ECoorE rev7.zip http://forum.dwg.ru/showpost.php?p=244237&postcount=7

Работает отлично. Угол определятся как и требовалось !
Премного благодарен Вам за помощь!

Последний раз редактировалось Meddoks, 05.09.2013 в 00:01.
Meddoks вне форума  
 
Непрочитано 09.09.2013, 22:52
#23
nolte

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


на Ваш суд.
Вложения
Тип файла: rar tbl_test.rar (104.6 Кб, 233 просмотров)
nolte вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт в Excel длины всех участков полилинии



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление в чертеж длины полилинии Кочетков Андрей Программирование 35 14.02.2019 07:22
Выбор всех объектов внутри замкнутой полилинии fellow123 AutoCAD 22 08.03.2017 05:30
Два вопроса новичка: Доступ к свойствам полилинии и обработка всех полилиний Иван Морозов Программирование 7 02.11.2012 17:11
Лисп для вычисления длины полилинии со скруглениями CooL LISP 8 21.02.2007 17:14
Нужна прога для преобразования ВСЕХ примитивов в полилинии timurka AutoCAD 4 25.11.2003 05:15