1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны перебои в работе.
    Скрыть объявление

Разбить 3D полилинию на равные отрезки

Тема в разделе "Autodesk", создана пользователем mmm1121, 12 фев 2013.

  1. flareon

    flareon Форумчанин

    А я вот чего-то не пойму...Уже семь лет активно пользуюсь pl-tools и всегда функция convert 3d to 2d выносила полилинии, получаемые из 3d полилиний, отрезков и дуг на нулевую высоту. Я этой функцией чертежи утюжу перед реальным отрехмериванием в civil. А в чем прикол? Как у вас получаются полилинии на своих уровнях? Что нажать?
     
  2. Philin

    Philin Форумчанин

    Рискну предположить, что первичная 3D полилиния имеет разные высотные отметки в каждой вершине. Из высказываний в теме понял, что pl-tools сконвертирует 3D полилинию в 2D полилинию с уровнем только в случае, если все вершины изначальной 3D полилинии находились на одной высотной отметке.
     
  3. АлексЮстасу

    АлексЮстасу Форумчанин

    Может быть у Вас версия какая старая?
    Конечно. В данном обсуждении речь все-таки о горизонталях.
    Сейчас еще раз проверил - уровень присваивается по нижней точке, по меньшей Z вершин исходной 3D полилинии.
     
  4. Polina_348

    Polina_348 Форумчанин

    А мыслей как поднять контура ни у кого не возникли? Я полагаю, эта задачка посложнее. Кроме отрезков, ничего в голову не приходит.
     
  5. X-Y-H

    X-Y-H Администратор Команда форума

    Polina_348, нужно наложить на поверхность ситуацию?
     
  6. Polina_348

    Polina_348 Форумчанин

    Да, хочу попробовать и начать с контуров.
     
  7. X-Y-H

    X-Y-H Администратор Команда форума

    Polina_348, вы не сможете передать тип линии, а отрезки не будт соответсвовать УЗ
     
  8. flareon

    flareon Форумчанин

  9. Qvinto

    Qvinto Форумчанин

    Для Цивильных геодезистов: Объекты профилирования - Утилиты полилинии - Преобразовать 3D в 2D.
    Для тех кто пользуется голым Автокадом пользуемся лиспом отсюда:
    http://www.caduser.ru/forum/index.php?PAGE_NAME=message&FID=23&TID=20740&MID=116519#message116519
    Все преобразованные 3D полилинии останутся на своей высоте, если в вершинах имеются одинаковые отметки.
    Код:
    (defun c:poly3dto2d (/            adoc      selset
              3dpoly          counter      2dpoly
              coord          coord_lst
              _kpblc-conv-pointlist-to-variant
              )
      (defun _kpblc-conv-pointlist-to-variant (point-list / safe_list result)
        (setq safe_list (vlax-make-safearray
                vlax-vbdouble
                (cons 0 (1- (length point-list)))
                ) ;_ end of vlax-make-safearray
        ) ;_ end of setq
        (setq result (vlax-safearray-fill safe_list point-list))
        (vlax-make-variant result)
        ) ;_ end of defun
      (vl-load-com)
      (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
      (vla-startundomark adoc)
      (if (setq selset (ssget "_:L" '((0 . "POLYLINE") (410 . "Model"))))
        (progn
          (foreach 3dpoly (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
      (setq 3dpoly  (vlax-ename->vla-object 3dpoly)
            counter 0
            ) ;_ end of setq
      (while
        (not (vl-catch-all-error-p
          (vl-catch-all-apply 'vla-get-coordinate (list 3dpoly counter))
          ) ;_ end of VL-CATCH-ALL-ERROR-P
              ) ;_ end of not
          (setq coord_lst (append coord_lst
                  (list (vlax-safearray->list
                      (vlax-variant-value
                        (vla-get-coordinate 3dpoly counter)
                        ) ;_ end of vlax-variant-value
                      ) ;_ end of vlax-safearray->list
                    ) ;_ end of list
                  ) ;_ end of append
          counter  (1+ counter)
          ) ;_ end of setq
          ) ;_ end of while
      (setq
        2dpoly
          (vla-addlightweightpolyline
            (vla-get-modelspace adoc)
            (_kpblc-conv-pointlist-to-variant
              (apply
          'append
          (mapcar '(lambda (x) (list (car x) (cadr x))) coord_lst)
          ) ;_ end of apply
              ) ;_ end of _kpblc-conv-pointlist-to-variant
            ) ;_ end of vla-AddLightWeightPolyline
        ) ;_ end of setq
      (vla-put-elevation 2dpoly (caddar coord_lst))
      (setq coord_lst nil)
      ) ;_ end of foreach
          (while (and selset (> (sslength selset) 0))
      (setq 3dpoly (ssname selset 0))
      (ssdel 3dpoly selset)
      (entdel 3dpoly)
      ) ;_ end of while
          ) ;_ end of progn
        ) ;_ end of if
      (vla-endundomark adoc)
      (princ)
      ) ;_ end of defun
     
    flareon нравится это.
  10. Polina_348

    Polina_348 Форумчанин

    В работе часто приходится сталкиваться со съёмкой нашего АГП. Так вот горизонтали у них-3D полилинии и "по изрытому" тоже 3D полилинии. А контура представлены отрезками, начало и конец которых имеют свою высоту и длина у них, Иван, согласно УЗ. Контур отрезками мне не подходит, а как по-другому не знаю. Да, ещё бровки откосов- это тоже 3D полилинии определённой длины, а штрихи откосов-отрезки со своей высотой в начале и в конце. В отчёте пишут, что планы созданы в "Цифровая фотограмметрическая система ЦНИИГАиК". Интересно, возможно ли также сделать, имея Кредо и Автокад. Не вручную конечно.
     
  11. X-Y-H

    X-Y-H Администратор Команда форума

    Можно, заморочек много, но можно.
     
  12. Доброго времени суток!!!

    вопрос таков - разбить автоматически замкнутую полилинию на разные площади в автокаде?
     
  13. Qvinto

    Qvinto Форумчанин

  14. даа, как бы хорошо)))
    но нужно разделить объект на неравные площади
    допустим в % соотношении или по самой площади
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление