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

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

Перенести вершины полилинии, лежащие на прямом участке.

Ответ
Поиск в этой теме
Непрочитано 22.05.2014, 08:27 #1
Перенести вершины полилинии, лежащие на прямом участке.
Веселин
 
Регистрация: 15.05.2014
Сообщений: 42

Продолжаю активное изучение. Интересует Сабж. На рисунке должно быть видно, где лишние вершины.
От них нужно избавится. Думаю, можно вычислить их координаты, но как узнать угол, на котором они лежат?

----- добавлено через ~25 мин. -----
Придумал следующее. Можно достать все координаты, а потом проанализировать. Взять текущую точку и проверить, если две соседние совпадают по x или y, то удалить. Потом построить новую полилинию, вместо той.

Изображения
Тип файла: jpg pline.jpg (23.4 Кб, 158 просмотров)

Просмотров: 2825
 
Непрочитано 22.05.2014, 09:08
1 | #2
Кулик Алексей aka kpblc
Moderator

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


В Download "Утилиты для работы с полилиниями" (кажется, так называется), она же pltools.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.05.2014, 09:39
#3
Веселин


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


Да, я уже скачал и поглядел. Но в данном случае это мне не подойдет. Мне нужна простая подсказка, какими финтифлюшками пользоваться.
Веселин вне форума  
 
Непрочитано 22.05.2014, 09:47
1 | #4
Кулик Алексей aka kpblc
Moderator

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


Куда уж проще - прополка полилинии и вперед. Или вручную удалять вершины.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.05.2014, 10:20
#5
Веселин


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


А можно кусок кода, где эта самая прополка происходит?
Веселин вне форума  
 
Непрочитано 22.05.2014, 10:30
1 | #6
nolte

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


Посмотри функции vlax-curve-...., проверяя если на вершине изменятся угол следующего участка -вершину оставляешь, если сохраняется - удаляешь.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 22.05.2014, 14:00
1 | #7
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


На скорую руку- прополка. Определяем углы сегментов полилинии.
(опускаю проверку на замкнутость , на изменение ПСК , Bulge и т.д.)
Код:
[Выделить все]
 (defun pline_getangle (/pl)
  (if
    (and
      (setq pl (car (entsel "\n Select pline:")))
      (= (cdr (assoc 0 (setq pl (entget pl)))) "LWPOLYLINE")
    )
     (pdist
       (mapcar 'cdr
	       (vl-remove-if-not '(lambda (x) (= (car x) 10)) pl)
       )
     )
  )
)

(defun pdist (lst)
  (if (cdr lst)
    (cons (angle (car lst) (cadr lst)) (pdist (cdr lst)))
  )
)
Эдуард вне форума  
 
Автор темы   Непрочитано 22.05.2014, 17:19
#8
Веселин


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


Эдуард Спасибо, попробую!
А еще вопрос, чтоб новую тему не создавать. При выдавливании из области, создается тело, а область удаляется. Я знаю, что есть вариант, удалять исходный примитив либо нет. А какая переменная за это отвечает?

----- добавлено через ~9 мин. -----
Кажется нашел. DELOBJ
Веселин вне форума  
 
Непрочитано 22.05.2014, 17:59
1 | #9
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,925
<phrase 1=


Цитата:
Сообщение от Веселин Посмотреть сообщение
Продолжаю активное изучение. Интересует Сабж. На рисунке должно быть видно, где лишние вершины.
От них нужно избавится. Думаю, можно вычислить их координаты, но как узнать угол, на котором они лежат?

----- добавлено через ~25 мин. -----
Придумал следующее. Можно достать все координаты, а потом проанализировать. Взять текущую точку и проверить, если две соседние совпадают по x или y, то удалить. Потом построить новую полилинию, вместо той.
курсор на удаляемую вершину - клик ПКМ - удалить вершину
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Перенести вершины полилинии, лежащие на прямом участке.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли возможность вставить в вершины полилинии блоки? bimari AutoCAD 29 04.06.2021 14:49
Как добавить вершины в полилинии в тех местах, где на не находятся блоки? reddiska Программирование 10 10.07.2016 08:39
Как сделать выноски пикетажа в вершины полилинии. Leher27 Программирование 17 04.10.2015 17:32
Как удалить вершины полилинии!!! игорёк Программирование 6 17.04.2006 07:29