|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Выравнивание полилинии в одну линию.
Регистрация: 16.10.2007
Сообщений: 7
|
||
Просмотров: 36174
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
1. Полилиния LW, 2d, 3d ?
2. Есть или нет дуговые сегменты? 3. Примерчик приложи
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 16.10.2007
Сообщений: 7
|
VVA :
2d полилиния без дуговых сегментов. Технически это выглядело бы примерно так: 1. Взять координаты вершин полилинии. 2. Вычислить длину каждого сегмента. 3. Построить полилинию из заданной точки с заданными длинами. Либо математически изменить координаты вершин существующей линии. Вот только в лиспе не силен, к сожалению. Последний раз редактировалось f0lk, 25.03.2008 в 16:53. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Примерчик (возможно) требует пригонки и обработки напильником
(defun c:razv ( / P lst2 lst n obj krd) (setq krd 0 n 0 obj (entget (car (entsel "Выберите полилинию ")))) (if (/= (cdr (assoc 0 obj)) "LWPOLYLINE") (progn (alert "Это не LW полилиния") (exit))) (setq p (trans (getpoint "Куда вставлять развертку ") 1 0)) ;записывает координаты вершин (while (/= krd nil) (setq krd (nth n obj)) (if (= (car krd) 10) (setq lst (append lst (list (list (cadr krd) (caddr krd))))) );end of if (setq n (1+ n)) );end of while ;записывает расстояния (setq n 0) (while (/= (nth (1+ n) lst) nil) (setq lst2 (append lst2 (list (distance (nth n lst) (nth (1+ n) lst)))) n (1+ n) );end of setq );end of while ;строит полилинию (setq n 0) (entmakex '((0 . "POLYLINE") (66 . 1))) (entmakex (list '(0 . "VERTEX") (append '(10) (list (car p) (cadr P))))) (while (/= (nth n lst2) nil) (setq p (list (+ (car p) (nth n lst2)) (cadr p))) (setq n (1+ n)) (entmakex (list '(0 . "VERTEX") (append '(10) (list (car p) (cadr P))))) );end of while (entmakex '((0 . "SEQEND"))) );end defun P.S. Запускать командой "razv".
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 25.03.2008 в 21:40. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Я тут тоже немного размялся
![]() RAZV1 - создает развернутую новую LW полилинию RAZV2 - разворачивает существующую Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Копирует так-же круги и любые блоки, НО чтоб центр (или точка вставки для блока) лежали строго на вершине полилинии.
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 21.05.2008 в 12:57. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Дима_, Только я бы сравнивал координаты с допуском. У меня бывали случаи, когда 2 одинаковые точки не были equal
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Один из вариантов:
Код:
--- Добавлено: слои должны быть разморожены и разблокированы (этот контроль не выполняется). Отрисовка нового отрезка и простановка блоков вершин выполняется на текущем слое с текущими установками; точки, блоки и окружности - копируются исходные. --- Добавлено, часть 2: и тишина...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 22.05.2008 в 23:02. |
|||
![]() |
|
||||
Регистрация: 16.10.2007
Сообщений: 7
|
Кулик Алексей aka kpblc - пытаюсь разобраться с функциями =)
Можно ли сделать так чтобы не только окружности и блоки разворачивались, а также отрезки, в идеале еще и выноски, не обязательно красиво - это уже мелочи =) Всем откликнувшимся огромное спасибо! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Чего-чего?? ОБразец в студию!
Хотя... ближайшие два дня точно не сяду - не до того будет ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Посоветуйте пожалуйста, как поступить в моем случае. В прикрепленном чертеже желтая полилиния и ее пересекает некое кол-во полилиний других цветов. Хотелось бы выпрямить желтую так, чтобы остальные остались ее пересекать в тех же местах, т.е. на тех же расстояниях от начала желтой. Реально ли осуществить?
Последний раз редактировалось skkkk, 01.07.2008 в 16:19. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Думается, надо загнать каждую из пересекаемых линий в блок. Тогда возникает вопрос, как загнать в блок их попроще (меньшими телодвижениями)? Что-то типа нажать кнопку на панели, затем кликнуть объект - (оп!) и он уже блок (без диалоговых окон)....Может есть в КАДе стандартное решение, но я его не знаю
![]() |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
lisp: Длина по полилинии до точки | vosh | LISP | 19 | 15.07.2013 15:10 |
Как получить контур полилинии с различной шириной | Marina | AutoCAD | 5 | 26.12.2008 09:16 |
Странное выравнивание в таблице | Bull | AutoCAD | 8 | 12.03.2008 12:01 |
Как рисуя одну полилинию получить сразу 4? | Димас | AutoCAD | 33 | 22.07.2006 01:17 |
некорректно определяется площадь замкнутой полилинии | elena_din | AutoCAD | 16 | 23.09.2005 17:37 |