|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вопрос: изменение свойств участка последовательно соединённых примитивов.
Воронеж
Регистрация: 26.06.2007
Сообщений: 151
|
||
Просмотров: 6405
|
|
||||
|
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Не совсем. Допустим, командой PL-JOIN (кстати, отличная вещь!) мы получили полилинию PLINE. Теперь делаем
(command "_break" "_F" p1 p1); для разрыва в первой точке Для разрыва во второй точке надо бы сделать то же самое, но с p2, но имя примитива теперь не PLINE, т.к. мы его до этого разбили. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Да, и после этого надо будет сначала создать список из этих двух полилиний, затем найти, какой из этих двух полилиний принадлежит вторая указанная точка, и разрывать уже ту полилинию. В результате получится 3 полилинии, из которых свойства средней нужно изменить. Наверно, только так.
|
|||
![]() |
|
||||
Можно через ssget определить, какая полилиния проходит через указанную точку. При помощи него же определить среднюю полилинию (она будет начинаться и заканчиваться в указанных точках). Как то так...
|
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
По-моему, не совсем так.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
А так работает, но до такого способа я не додумался =)
Цитата:
1. PL-JOIN - обхединение примитивов (могут быть и полилинии, и отрезки) в одну полилинию; 2. Указание двух точек для разрыва; 3. Разрыв в первой точке командой _break. После этого получаем две полилинии. Чем-то вроде entnext получаем из имена. Ищем, какой из них принадлежит вторая точка; 4. Разрыв одной из этих двух полилиний во второй точке. 5. Поиск двух новых полилиний и включение их в новый список; объединение этого списка с первым списком; Исключение из него примитива, который вернёт на Entget NIL (т.к. уже не будет существовать); 6. Поиск среднего отрезка из списка трёх полилиний (алгоритм - что-то вроде "если начальная точка соотв. нач. или кон. точке одной полилинии И конечная точка соотв. нач. или кон. точке другой полилинии") 7. Изменение свойств средней полилинии. Но тут ещё один вопрос возникает. Если мы делаем это в цикле. Допустим, было 3 дуги/отрезка/полилинии. Мы объединили их в одну полилинию, потом поделили точками и изменили тип линии средней полилинии. Затем в начале след. цикла мы объединяем три полилинии в одну, НО тип линии у всех трёх полилиний становится одинаковым! |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Выбор объекта - в смысле, средней полилинии? Так дело не в сложности её нахождения - алгоритм (пусть не самый лучший) я привёл. Дело в том, что изменить требуется участок от точки до точки, а в этих пределах может лежать 3 отрезка и 2 дуги, к примеру. Причём, нужно предусмотреть возможность выбора контура (если мы на замкнутом контуре указали 2 точки, то надо предложить выбрать, какой из 2 контуров имеется ввиду). И всё равно нужно эти примитивы по контуру объединять в полилинию и затем разбивать в указанных точках. Но при объединении в полилинию типы линий станут одинаковыми, а ведь до этого они могли быть различными. Вот проблема.
|
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
На рисунке:
1. Так выглядит первоначальный контур; 2. Так выглядит контур, тип линий которого изменён полностью (ничего сложного) 3. Так должен выглядеть контур после того, как на нём укажут две точки (между ними изменится тип линии). Причём надо ещё и предложить на выбор: от точки 1 до точки 2 изменить тип или от точки 2 до точки 1! 4. А так может выглядеть контур, если после примера 3 пользователь покажет ещё 2 точки на нём же, между которыми также надо изменить тип линий. P.S. Первоначально это блок, но с его расчленением и созданием списка старых/новых примитивов и обратным созланием блока вопросов нет. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как добраться до свойств примитивов AutoCAD Structural Detailing? | AlexV | Программирование | 6 | 17.06.2015 21:17 |
Изменение свойств атрибута в составе блока | rzinnurov | AutoCAD | 9 | 24.04.2009 15:17 |
Изменение параметров примитивов составляющих сложный блок. | Theodor | Программирование | 5 | 19.04.2009 21:29 |
список свойств параметров примитивов | leonardo23 | AutoCAD | 7 | 10.01.2007 09:02 |
Изменение свойств текстов и размеров | Кулик Алексей aka kpblc | Программирование | 2 | 23.06.2005 16:11 |