Как добавить точку в полилинию в автокаде
Перейти к содержимому

Как добавить точку в полилинию в автокаде

  • автор:

3.3. Редактирование полилиний

Кроме того, нажатие клавиши (вместо выбора опции) завершает команду PEDIT (ПОЛРЕД).
Опция Close (Замкнуть) замыкает разомкнутую полилинию, добавляя сегмент, идущий из конечной точки в начальную. Если последний сегмент полилинии был прямолинейным, то замыкание выполняется добавлением прямолинейного участка. Если последний сегмент был дуговым, то для замыкания строится дуговой сегмент, касающийся последнего сегмента. На рис. 3.44 приведены примеры замыкания двух полилиний, отличие которых только в типе последнего сегмента: у первой полилинии он прямолинейный, у второй — дуговой. Точками 1 и 2 отмечены участки, добавляемые системой с помощью опции Close (Замкнуть). Для наглядности эти участки выделены штриховой линией.

Рис. 3.44. Варианты замыкания полилинии

Опция Open (Разомкнуть) действует очевидным образом: удаляет последний участок полилинии.
Опция Join (Добавить) преобразует отрезок или дугу в односегментную полилинию или добавляет к полилинии новые смежные сегменты, которыми могут быть отрезки, дуги и другие двумерные полилинии. Разумеется, при этом не должен нарушаться основной принцип полилинии: начальная точка каждого последующего сегмента должна совпадать с конечной точкой предыдущего.
Опция Width (Ширина) изменяет ширину всех сегментов полилинии на новое постоянное значение, которое запрашивается системой. Значения ширины всех сегментов до операции, даже если они были разными, утрачиваются.
Опция Fit (СГладить) сглаживает полилинию с помощью дуговых сегментов, которые касаются друг друга. На рис. 3.45 приведен пример полилинии до сглаживания (состоит из прямолинейных сегментов) и после сглаживания (состоит из дуговых сегментов). Исходные вершины полилинии остаются на старых местах, но к ним могут быть добавлены промежуточные, которые исчезают после ликвидации сглаживания (см. описание опции Decurve (Убрать сглаживание)).

Рис. 3.45. Сглаживание полилинии с помощью опции Fit

На рис. 3.46 приведена та же полилиния, но сглаженная с помощью опции Spline (СПлайн). Видно, что промежуточные вершины новой полилинии не совпадают с вершинами старой полилинии.
Опция Decurve (Убрать сглаживание) убирает сглаживание, выполненное опциями Fit (СГладить) или Spline (СПлайн). Результирующая полилиния состоит только из прямолинейных сегментов. Для несглаженных полилиний данная опция заменяет дуговые сегменты на прямолинейные, сохраняя вершины на старых местах.
Как было уже сказано в разд. 3.1, полилиния может быть представлена в информационном окне команды LIST (СПИСОК) с двумя наименованиями: LWPOLYLINE — компактная полилиния, и POLYLINE — подробная полилиния. Легкая полилиния превратится в подробную, если к ней применить операцию сглаживания с помощью опций Fit (СГладить) и Spline (СПлайн). Подробная полилиния может иметь дополнительные вершины, вычисленные системой AutoCAD, а компактная — не может. При отключении сглаживания подробные полилинии преобразуются в компактные полилинии.

Рис. 3.46. Сглаживание полилинии с помощью опции

Spline Опция Ltype gen (Типлин) управляет отрисовкой полилинии в случае, когда тип линии выбран отличным от сплошной (в AutoCAD этот тип линии называется CONTINUOUS). Опция выдает следующий запрос:
Enter polyline linetype generation option [ON/OFF] : (Генерация типа линии по всей полилинии [Вкл/Откл] 🙂
В этот момент можно включить режим генерации типа линии по всей полилинии (по умолчанию он выключен, что ускоряет расчет). На рис. 3.47 приведен пример полилинии с типом линии DASHED (штриховая) при Ltype gen=OFF (Типлин=Откл), а на рис. 3.48 — при Ltype gen=ON (Типлин=Вкл).
На рис. 3.48 Ltype gen=OFF (Типлин=Откл) и тип линии, состоящий из штрихов и пропусков заданных размеров, применен к каждому сегменту отдельно. Поэтому при недостаточной длине (не хватает длины, чтобы начать второй штрих после пропуска) на сегменте вообще не образуются штрихи, как произошло со вторым, третьим и восьмым сегментами. При Ltype gen=ON (Типлин=Вкл), как на рис. 3.48, длины штрихов откладываются, начиная с самой первой вершины полилинии, по всей полилинии в целом, поэтому штрихи присутствуют на всех сегментах. Недостатком второго режима является то, что пропуск между штрихами может попасть на вершину.

Рис. 3.47. Полилиния при Ltype gen=OFF

Самая сложная опция — Edit vertex (Вершина), которая вызывает режим работы с вершинами полилинии, что дает возможность изменять положение вершин, удалять их, добавлять, а также менять ширину конкретного сегмента и разрывать полилинию на части. После выбора данной опции система AutoCAD выдает запрос:
Enter a vertex editing option [Next/Previous/Break/ lnsert/Move/Regen/Straighten/Tangent/Width/eXit] :
Задайте опцию редактирования вершины
След/Пред/РАзорвать/ВСтавитъ/ПЕренести/ РЕген/ВЫпрямитъ/Касателъная/ Шкрина/выХод] 🙂
При этом в первой вершине полилинии появляется знак х (рис. 3.49), что означает отметку текущей вершины, к которой будут относиться последующие операции редактирования. Порядок следования вершин идентичен той последовательности, с которой эти вершины создавались при построении полилинии.

Рис. 3.48. Полилиния при Ltype gen=ON

Рис. 3.49. Режим редактирования вершин полилинии

  • Next (След) — перейти на следующую вершину;
  • Previous (Пред) — перейти на предыдущую вершину;
  • Break (РАзорвать) — разорвать полилинию, начиная с текущей вершины;
  • Insert (ВСтавить) — вставить новую вершину после текущей;
  • Move (ПЕренести) — перенести текущую вершину на новое место;
  • Regen (РЕген) — регенерировать (перерисовать) полилинию с текущими установками;
  • Straighten (ВЫпрямить) — выпрямить полилинию на участке, начиная с текущей вершины (удаление соседних вершин);
  • Tangent (Касательная) — задать направление касательной к текущей вершине для будущей операции Fit (СГладить);
  • Width (Ширина) — задать ширину полилинии на участке, начинающемся в текущей вершине;
  • eXit (выХод) — выход из режима редактирования вершин и возврат к запросу: Enter an option [Close/Join/Width/Edil vertex/Fit/Spline/Decurve/Ltype gen/Undo]: (Задайте опцию [Замкнуть/Добавить/Ширина/Вершина/СГладить/СПлайн/ Убрать сглаживание/Типлин/Отменить]:).

Опции Next (След) и Previous (Пред) дают возможность перемещаться между вершинами полилинии, чтобы добраться до той вершины, которую надо редактировать.
Опция Break (РАзорвать) предназначена для разрыва полилинии. Начало разрыва — в текущей вершине, а окончание разрыва нужно указать в ответ на запрос:
Enter an option [Next/Previous/Go/eXit] : (Задайте опцию [След/Пред/Выполнить/выХод] 🙂
Если разрыв нужно выполнить в текущей вершине (после этого полилиния разделится на две полилинии, имеющие общую точку в месте разрыва), то следует воспользоваться опцией Go (Выполнить). При этом все сегменты исходной полилинии сохраняются, оказываясь в составе одной из двух новых полилиний.
Если разрыв нужно начать в текущей вершине, а закончить в другой, расположенной дальше или ближе текущей (и тем самым в результате разрыва удалить участки между текущей и другой вершиной), то необходимо в режиме Break (Разорвать) сначала с помощью опций Next (След) и Previous (Пред) перейти на ту вершину, в которой разрыв будет закончен, и затем только воспользоваться опцией Go (Выполнить). Если режим редактирования вершин больше не нужен, то выйти из него с помощью опции eXit (выХод).
На рис. 3.50 в левой части изображена полилиния до разрыва, а в правой части — после разрыва, с удалением одного сегмента.

Рис. 3.50. Разрыв полилинии

Для добавления в полилинию новой вершины нужно воспользоваться опцией Insert (ВСтавить). Перед тем как перейти к этой опции, нужно переместиться к вершине, после которой добавляется новая вершина. Затем с помощью клавиатуры ввести опцию Insert (ВСтавить). Система AutoCAD запрашивает:
Specify location for new vertex: (Положение новой вершины:)
Вы указываете положение новой вершины, вставляемой после текущей. На рис. 3.51 слева показан момент указания положения новой вершины, вставляемой между четвертой и пятой вершинами, а справа — результат операции вставки.
Нельзя с помощью этой опции вставить вершину перед первой вершиной полилинии.
Опция Move (ПЕренести) используется, когда текущую вершину нужно перенести на новое место. При использовании опции выдается запрос:
Specify new location for marked vertex: (Новое положение помеченной вершины:)
Вы указываете новое положение текущей вершины (рис. 3.52). Справа на рисунке показан результат переноса вершины на новое место.

Рис. 3.51. Добавление новой вершины в полилинию

Рис. 3.52. Перенос вершины полилинии

Опция Regen (РЕген) позволяет, не выходя из команды PEDIT (ПОЛРЕД), перечертить (регенерировать) полилинию с текущими изменениями.
Если надо удалить какие-то вершины из полилинии, то следует воспользоваться опцией Straighten (ВЫпрямить). Запрос, выдаваемый этой опцией, аналогичен запросу опции Break (РАзорвать): Enter an option [Next/Previous/Go/eXit] : (Задайте опцию [След/Пред/Выполнить/выХод] :). Опция выпрямляет полилинию на участке, начиная с текущей вершины и заканчивая вершиной, в которую можно перейти, перемещаясь по полилинии с помощью опции Next (След) и Previous (Пред). Опция Go (Выполнить) завершает операцию выпрямления. На рис. 3.53 в левой части изображена полилиния до выпрямления, а в правой части — после выпрямления, с удалением четырех вершин.

Рис. 3.53. Выпрямление полилинии

Опция Tangent (Касательная) дает возможность задать направление касательной на вершинах полилинии для будущей операции Fit (СГладить), что позволяет воздействовать на форму линии, получаемой после сглаживания. После выбора опции Tangent (Касательная) следует запрос:
Specify direction of vertex tangent: (Направление касательной в вершине:)
Направление задается углом в градусах или точкой. После задания на текущей вершине появляется стрелка с указанным направлением (см. вершину полилинии в левой части рис. 3.54). Направление будет использовано только тогда, когда вы в дальнейшем выполните операцию сглаживания полилинии с помощью опции Fit (СГладить). В правой нижней части рис. 3.54 показан результат сглаживания, выполненного с учетом направления касательной в указанной ранее вершине. Для сравнения в правой верхней части рисунка приведена аналогичная полилиния, которая была сглажена без задания направления касательной.

Рис. 3.54. Направление касательной в вершине полилинии

Опция Width (Ширина) управляет шириной полилинии на участке, начинающемся в текущей вершине. Первый запрос:
Specify starting width for next segment: (Начальная ширина следующего сегмента:)
Нужно задать начальную ширину (обычно вводом с клавиатуры). Если вы в этот момент мышью укажете точку, то AutoCAD запросит вторую точку, а расстояние между точками возьмет в качестве значения ширины (если указание мышью произошло по недоразумению, то это может привести к непредсказуемому изменению ширины полилинии). Далее:
Specify ending width for next segment : (Конечная ширина следующего сегмента 🙂
В угловых скобках по умолчанию предлагается значение, выбранное в качестве начальной ширины сегмента (в нашем примере — 0.0000). После ввода второй ширины регенерируется текущий сегмент полилинии с новой шириной.
Опция eXit (выХод) завершает режим редактирования вершин и возвращает запрос Enter an option [Next/’Previous/’Go/’eXitJ : (Задайте опцию [СледУ Пред/’Выполнить/’выХод] :).
Опция Multiple (Несколько), которая появилась еще в системе AutoCAD 20001, доступна пользователю в самом первом запросе о выборе редактируемой полилинии и дает возможность выбрать сразу несколько полилиний для того, чтобы над ними выполнить однотипные операции (например, замкнуть или изменить глобальную ширину). Следует иметь в виду, что при таком выборе полилиний недоступна опция Edit vertex (Вершина).

Fore kc .ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий

Как добавить точку в полилинию в автокаде

Работа с полилиниями

В данном разделе меню находятся модули для различных манипуляций с полилиниями.

Под реверсированием понимается изменение порядка вершин полилинии на обратный. Это может быть применено для «переворачивания» линейных условных знаков (полилиний):

Модуль сделан для старых версий AutoCAD и ZWCAD. В новых версиях этих САПР данную операцию можно осуществить штатными средствами.

Позволяет добавлять к полилиниям вершины. В начале работы модуль просит выбрать одну или несколько полилиний, далее просит указать одну или несколько точек. Если в начале выбрано несколько полилиний, вершина добавляется к ближайшей полилинии из ранее выбранных.(Модуль сделан для старых версий AutoCAD и ZWCAD. В новых версиях этих САПР данную операцию можно осуществить штатными средствами.)

Удаляет вершины у полилиний. В начале работы модуль просит выбрать одну или несколько полилиний, далее просит указать одну или несколько точек. Удаляется ближайшая вершина ближайшей полилинии из ранее выбранных.(Модуль сделан для старых версий AutoCAD и ZWCAD. В новых версиях этих САПР данную операцию можно осуществить штатными средствами.)

Данный модуль удаляет у полилиний продублированные вершины, т.е. две и более последовательно идущие вершины, координаты которых совпадают по координатам с указанным допуском.(Модуль сделан для старых версий AutoCAD и ZWCAD. В новых версиях этих САПР данную операцию можно осуществить штатными средствами.)

Данный модуль сделан для пользователей ZWCAD и старых версий AutoCAD, в которых отсутствуют удобные инструменты для преобразования сегмента полилинии в дугу.

Данный модуль сделан для пользователей ZWCAD и старых версий AutoCAD, в которых отсутствуют удобные инструменты для преобразования дугового сегмента полилинии в прямую. Алгоритм работы модуля аналогичен вышеописанному, см. изображения выше.

Данный модуль экспортирует в CSV файл координаты вершин выбранной полилинии.

Данный модуль экспортирует в CSV файл координаты вершин НЕСКОЛЬКИХ выбранных полилиний:

В сочетании с модулем Построить несколько полилиний из CSV-файла данный модуль может быть использован для пересчета координат в сторонних программах.

Признаком окончания одной полилинии и начала следующей является пустая строка в CSV файле(пустые ячейки в Excel).

Данный модуль строит полилинию по координатам из CSV файла. Формат CSV файла: 2 столбца, координата X и координата Y, разделитель точка-запятой. Построение вершин идет в том порядке, в котором идут их координаты в CSV файле. Полилиния строится на текущем слое, текущим цветом и текущим типом линии.

Данный модуль строит полилинии по координатам из CSV файла:

В сочетании с модулем Экспорт координат вершин нескольких полилиний в CSV-файл данный модуль может быть использован для пересчета координат в сторонних программах.

Признаком окончания одной полилинии и началом следующей является пустая строка в CSV файле(пустые ячейки в Excel).

Данный модуль позволяет повернуть текст в соответствии с направлением полилинии в точке, являющейся ближайшей к тексту. Выбор текста происходит рамкой с экрана.
Пример. До обработки:

После обработки:

Черная полилиния — та, по которой выравнивался текст. Пунктирной линией (показана для наглядности) показан допуск, в примере равный 100. В качестве начала полилинии была указана точка рядом с левым концом полилинии. Если бы была указана точка рядом с правым концом полилинии, данный пример выглядел бы так:

Данный модуль позволяет повернуть блоки в соответствии с направлением полилинии в точке, являющейся ближайшей к блоку. Выбор блоков осуществляется по образцу, а именно программа просит указать Пользователя блок-образец и в обработку попадают блоки с таким же именем что и образец и лежащие на том же слое.
Пример. До обработки:

После обработки:

Черная полилиния — та, по которой выравнивались блоки. Пунктирной линией (показана для наглядности) показан допуск, в примере равный 100. В качестве начала полилинии была указана точка рядом с левым концом полилинии.

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

В связи с тем что модуль не запрашивает у пользователя направление начала для каждой полилинии, артибуты некоторых блоков могут оказаться плохочитаемыми на чертеже. Поправить такую ситуацию поможет модуль Повернуть атрибуты в соответствии с правилами чтения чертежа.

Модуль поворачивает текстовые объекты внутри выбранных полилиний по наиболее вытянутой стороне. Текст снаружи полилиний игнорируется.

Примечание. Угол текста расчитывается от оси X против часовой стрелки в мировой системе координат.

Данный модуль позволяет выбрать аналогичные указанному образцу объекты, находящиеся рядом с полилинией в пределах указанного допуска.

На примере выше показано, что в результате работы модуля были выбраны блоки, находящиеся рядом с полилинией в пределах допуска, равном в данном примере 100 (пунктирная линия, показанная для наглядности).

Данный модуль позволяет выделить объекты, выбранные по образцу, лежащие частично или полностью внутри указанной полилинии. Программа спрашивает способ выбора: многоугольник — быдут выбраны объекты, лежащие полностью внутри выбранной полилинии, или секущий многоугольник — будут выбраны объекты, лежащие частично внути полилинии. Выбранная полилиния не должна иметь повторяющихся по координатам вершин и не должна пересекать сама себя.
Внимание! Самопересечение полилинии Программой не отслеживается.
Пример:

Модуль позволяет выделить аналогичные объекты, находящиеся снаружи указанной полилинии:

Данный модуль позволяет перенести объекты, выбранные по образцу на указанную полилинию в соответствии с кратчайшим расстоянием до нее и указанной зоной захвата (пунктирная линия, показанная для наглядности).
Пример. До обработки:

После обработки:

Модуль позволяет ‘взорвать'(расчленить) полилинии и линии с заданным сложным типом линии таким образом, что описанные в типе линии тексты и шейпы окажутся извлеченными:

Примечание к примеру. Полинии до обработки и объекты, полученные в результате работы модуля показаны выделенными намеренно.

Этот модуль будет полезен при экспорте DWG-файла в другие программы, которые не поддерживают сложные типы линий.

Важное замечание. В случае если модуль не сможет получить доступ к файлу SHX, на шейпах которого сформирован тип линии, шейпы извлечены не будут.

Позволяет заменить типы линий у объектов чертежа на основе CSV-файла в виде двух столбцов. 1-й столбец — заменяемый тип линии, 2-й столбец — тип линии, на который нужно заменить. Тип линии, указанный во 2-м столбце должен обязательно присутствовать в чертеже. По окончании работы выводится подробная информация о выполненных заменах.

Позволяет назначить тип линии объектам чертежа (только линии, полилинии, 3д-полилинии) в зависимости от слоя. Зависимость типа лини от слоя описывается в CSV файле, который пользователь составляет самостоятельно и указывает в данном модуле. Первой колонкой в CSV-файле должны перечисляться имена слоев, во втором — назначаемые типы линий. Разделитель данных — точка-запятой.

Важное замечание! Все типы линий, указанные в CSV-файле, должны присутствовать в чертеже. Если какой-либо тип линии не найден в чертеже, в текстовом окне автокада выводится соответствующее сообщение об ошибке.

Содержимое CSV файла:

Результат работы программы:

Пояснение к примеру. Полилинии в левой части изображения находятся на слоях(сверху вниз): 0, слой_1, слой_2, слой_3, слой_4, слой_5. Верхняя полилиния не подверглась изменению, т.к. слой с именем ‘0’ не описывается в исходном CSV-файле. Остальные типы линий подверглись изменению, им был назначен тип линии в соответствии с CSV-файлом.

Позволяет нанести на полилинии (а так же над полилинией или под полилинией) текст с указанным шагом и указанного размера.

Если способ вставки текста указан на полилинии, то к тексту применяется скрытие заднего фона.

Позволяет нанести на середины сегменты выбранных полилиний заданный текст заданного размера.

Модуль позволяет объединить несколько рядом расположенных полилиний(и/или линий) в одну полилинию.

Модуль написан для пользователей ранних версий AutoCAD и ZWCAD, в которых не было средства объединения полилиний с допуском.

Если у Вас современная САПР платформа, рекомендуется пользоваться штатными средствами(т.к. этот модуль не отличается высоким быстродействием): Команда _PEDIT — ‘Несколько’ — выбрать полилинии — ‘Добавить’ — укажите значение допуска — нажмите ENTER.

Модуль позволяет удалить лишние вершины у полилиний по одному из двух условий(см.описание ниже), упростив их таким образом и снизив объем DWG файла. В отличие от стандартной команды _OVERKILL этот модуль предлагает более аккуратные способы удаления лишних вершин.

По окончании работы программа выводит краткую информацию о удаленных вершинах и о разнице в длине (Программа не пытается подогнать длину отредактированной полилинии к длине исходной):

Пояснение параметра Угол. Если задать угол равным 5 градусов, вершина, отмеченная красной стрелкой на примере ниже, будет удалена:

Пояснение параметра Длина перпендикуляра. Если задать этот параметр равным 0.1, вершина, отмеченная красной стрелкой на примере ниже, будет удалена:

Так же в модуле присутствует параметр Не упрощать, если новый сегмент больше. . Если при удалении вершины новый сегмент полилинии получается больше заданного значения, то такая вершина не удаляется, даже если соблюдаются заданные условия.

Модуль ‘округляет’ площадь полилинии посредством перемещения указанной вершины до такого положения, при котором площадь полилинии становится равной требуемой величине. Округление производится по правилу ‘1.4 → 1, 1.5 → 2’.

Модуль позволяет построить 3D полилинию по объектам(блоки, точки, шейпы, окружности или тексты), находящимися в указанном допуске от заданной полилинии. Z исходных объектов наследуется.

Модуль позволяет подрезать полилинии внутри контуров(других полилиний). Подрезаемые полилинии и полилинии-контура должны находиться на разных слоях. Модуль может быть применен для подрезки горизонталей.

Модуль позволяет корректно замкнуть полилинии, т.е. выставить свойство ‘Замкнуто’, даже в том случае, когда первая и последняя вершина не совпадают по координатам, а находятся на некотором удалении друг от друга. Величина допуска задается пользователем.

Модуль позволяет выделить с экрана полилинии с двумя вершинами. Может быть применен при выделении штрихов откосов.

Модуль позволяет построить усредненную полилинию по двум выбранным:

Примечание. Дуговые сегменты наследуются только по первой полилинии.

Модуль позволяет найти точки пересечения полилиний. Может быть полезен для контроля корректности построения горизонталей(полилинии).

Модуль позволяет найти точки пересечения сплайнов. Может быть полезен для контроля корректности построения горизонталей(сплайны).

Как добавить вершину в полилинию нажатием одной кнопки? (Страница 1 из 4)

Форумы CADUser → Программирование → LISP → Как добавить вершину в полилинию нажатием одной кнопки?

Страницы 1 2 3 4 Далее

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения с 1 по 25 из 86

#1 Тема от Azor 30 августа 2005г. 09:05:09

Тема: Как добавить вершину в полилинию нажатием одной кнопки?

Возможно ли добавлять вершину в полилинию путем нажатия одной кнопки, подобно Break at Point, только не разрывая линию? Путем редактирования полилинии (PEDIT-Edit Vertex-Insert) получается слишком муторно.

#2 Ответ от Владимир Громов 30 августа 2005г. 09:29:21

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Вот такая конструкция:

(vl-cmdf "_PEDIT" pause "_E" "_I" pause "_X" "")

плохо работает. Мешает необходимость последовательного выбора вершины, после которой надо добавить новую вершину.

#3 Ответ от Azor 30 августа 2005г. 09:46:09

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Так вот в этом и проблема.. а если вершин много? 20-30 например. Конкретная задача — трассировка нагорной канавы. Допустим мне нужно приблизить дно канавы к определенному уклону, для этого требуется изогнуть канаву в определенном месте рельефа. Добавляю вершину. Я нажимаю Break at Point, рву полилинию в нужном месте, потом склеиваю. Так быстрее получается, нежели до этой вершины скакать, а потом втыкать ее.

#4 Ответ от kpblc 30 августа 2005г. 10:53:43

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Можно попробовать лиспом:

;|============================================================================= * Функция разрыва полилинии и одновременной передвижки новой вершины. * Полилиния не меняет следующих свойств: цвет, слой, тип. * Ограничения: * 1. Не производится отлов ошибок ввода (никто не запрещает работать с арками и * окружностями) * 2. Не производится отлов нажатия Esc - не выполняется восстановление * системных переменных. Обработчик ошибок писать просто некогда. * 3. Не производится проверка usc, в которой работает пользователь. * 4. Неправильное указание точки (не принадлежащей объекту) может свалить * функцию в ноль. * 5. Не отслеживается "заморозка" слоя. * 6. Не отслеживается вариант, когда указывается пересечение двух объектов - * в таком случае работа непредсказуема. * Функция тестировалась на ADT 2005, usc = world. * * Функцию желательно сохранить в файл kpblc-stretch-pline.lsp. Файл должен * быть сохранен в путях поддержки AutoCAD. * Возможный макрос для вызова: ^C^C(if (not "c:kpblc-stretch-pline") (load "kpblc-stretch-pline.lsp"));c:kpblc-stretch-pline; =============================================================================|; (defun c:kpblc-stretch-pline ( / break_point _osmode_ selset_oper) (setq _osmode_ (getvar "osmode")) ;_ end of setq (setvar "osmode" 512) (setq break_point (getpoint "\nУкажите точку разрыва : ") selset_oper (ssget break_point) ) ;_ end of setq (command "_.break" selset_oper break_point break_point) (command "_.pedit" "_M" "_C" break_point break_point "" "_join" 0 "") (command "_.stretch" "_C" break_point break_point "") (setvar "osmode" 1) (while (/= (getvar "cmdactive") 0) (command pause) ) ;_ end of while (setvar "osmode" _osmode_) (princ) ) ;_ end of defun ;;; Конец файла kpblc-stretch-pline.lsp

Как вариант, не более. Для нормальной работы можно еще массу всего понаворотить.

#5 Ответ от Олег(jr.) 30 августа 2005г. 13:07:10

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> Azor
Попробуй такую фичу, указывать полилинию нужно
на том участке, где будет добавлена вершина
~’J’~

;; Вспомогательные функции ;; Группировка списка по числу элементов субсписка (defun group-by-num (lst num / ls ret) (if (= (rem (length lst) num ) 0) (progn (setq ls nil) (repeat (/ (length lst) num) (repeat num (setq ls (cons (car lst) ls) lst (cdr lst))) (setq ret (append ret (list (reverse ls))) ls nil))) ) ret ) ;; Голова списка по номеру: (defun head (lst num ) (if ( < 0 (1- num)) (cons (car lst) (head (cdr lst) (1- num))))) ;; Хвост списка по номеру: (defun tail (lst num / ) (if (>(length lst) (1- num )) (append (tail (reverse (cdr (reverse lst))) num) (list (last lst))))) ;; Добавление элемента в список по номеру позиции (defun add-elt (lst num elt) (if elt (append (head lst num) (cons elt (tail lst num))))) ;; Создание и заполнение безопасного массива точек (defun safe-points (lst / pt_list points) (setq pt_list (apply 'append lst)) (setq points (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length pt_list))) ) pt_list ) ) ) ;; Обработсик ошибок с пошаговым возвратом (defun div-error (msg) (if (vl-position msg '("console break" "Function cancelled" "quit / exit abort" ) ) (princ "Error!") (princ msg) ) (while (> (getvar "cmdactive") 0) (command)) (command "._undo" "_end") (command "._u") (setq *error* olderror) (princ) ) (vl-load-com) (prompt "\n *** Type ADV to execute *** \n") ;; ОСНОВНАЯ ПРОГРАММА ;; (defun C:adv (/ *error* acsp adoc appd coord div-error new_pl olderror pl pn pt pt_list seg_num util ) (or adoc (setq adoc (vla-get-activedocument (vlax-get-acad-object) ) ) ) (or appd (setq appd (vla-get-application adoc))) (or acsp (setq acsp (vla-get-block (vla-get-activelayout adoc) ) ) ) (or util (setq util (vla-get-utility adoc))) (command "._undo" "_end") (command "._undo" "_mark") (setq olderror *error*) (setq *error* div-error) (vla-getentity util 'pl 'pt "\nSelect polyline to add vertex: >>> \n" ) (if pl (progn (setq pn (trans (getpoint "\nSpecify new vertex location: >>> \n") 1 0)) (setq coord (vlax-get pl 'Coordinates) coord (cond ((eq (rem (length coord) 2) 0) (group-by-num coord 2) ) ((eq (rem (length coord) 3) 0) (group-by-num coord 3) ) (T nil) ) coord (mapcar (function (lambda (x) (trans x 1 0))) coord) ) (setq seg_num (+ (fix (vlax-curve-getparamatpoint pl (osnap (vlax-safearray->list pt) "_nea") ) ) 2 ) ) (setq coord (add-elt coord seg_num pn)) (setq pt_list (safe-points coord)) (setq new_pl (vla-addpolyline acsp pt_list)) (vla-delete pl) (mapcar (function (lambda (x) (if (not (vlax-object-released-p x)) (vlax-release-object x) ) ) ) (list pl new_pl) ) ) (princ "\nNothing selected try again\n") ) (vla-zoomextents appd) (vla-regen adoc acactiveviewport) (setq *error* olderror div-error nil ) (command "._undo" "_end") (princ) ) (C:adv) (princ)

#6 Ответ от Владимир Громов 30 августа 2005г. 13:41:08

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> Олег(jr.)
Интересная программа.
Вершины вставляются там, где надо, только замкнутая полилиния размыкается со стиранием замыкающего сегмента, а дуговые сегменты заменяются линейными.

#7 Ответ от Владимир Громов 30 августа 2005г. 13:46:39

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> kpblc
Непонятно, что делать после указания точки разрыва?

#8 Ответ от kpblc 30 августа 2005г. 14:38:35

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> Владимир Громов
Тащить новую вершину на нужное место. На ней (на вершине) просто надо дополнительно щелкнуть — не удалось мне слету указать ее для stretch’a.

#9 Ответ от kpblc 30 августа 2005г. 14:41:20

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Упустил из виду: если таскать сразу не требуется, надо будет закомментировать строки

(command "_.stretch" "_C" break_point break_point "") (setvar "osmode" 1) (while (/= (getvar "cmdactive") 0) (command pause) ) ;_ end of while

Т.е. перед ними поставить ;;

#10 Ответ от shishoq 30 августа 2005г. 17:27:59

Re: Как добавить вершину в полилинию нажатием одной кнопки?

В Toolpac-е есть такая функция:
указываешь курсором место новой вершины, потом — сегмент, который разрывается и дотягивается до неё. Там же есть и опция удаления ненужной вершины. Toolpac > Polyline > Vertex > . Только после этих операций ассоциативность этой плинии теряется, так что контуры штриховок я меняю по старинке, pedit-ом.

#11 Ответ от kpblc 30 августа 2005г. 17:35:10

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> shishoq
Ну на этот предмет не тестировал. Но и у меня тоже ассоциативность рушится. Надо по новой штриховать. За компанию: если полилиния служила обрамлением wipeout, его понадобится перестраивать.

#12 Ответ от shishoq 30 августа 2005г. 17:41:27

Re: Как добавить вершину в полилинию нажатием одной кнопки?

а нельзя ли написать фичу на основе PEDIT ,чтобы не портила ассоциативность?

#13 Ответ от kpblc 30 августа 2005г. 17:47:12

Re: Как добавить вершину в полилинию нажатием одной кнопки?

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

;|============================================================================= * Функция разрыва полилинии и одновременной передвижки новой вершины. * Полилиния не меняет следующих свойств: цвет, слой, тип. * Ограничения: * 1. Не производится отлов ошибок ввода (никто не запрещает работать с арками и * окружностями) * 2. Не производится отлов нажатия Esc - не выполняется восстановление * системных переменных. Обработчик ошибок писать просто некогда. * 3. Не производится проверка usc, в которой работает пользователь. * 4. Неправильное указание точки (не принадлежащей объекту) может свалить * функцию в ноль. * 5. Не отслеживается "заморозка" слоя. * 6. Не отслеживается вариант, когда указывается пересечение двух объектов - * в таком случае работа непредсказуема. * Функция тестировалась на ADT 2005, usc = world. * * Функцию желательно сохранить в файл kpblc-stretch-pline.lsp. Файл должен * быть сохранен в путях поддержки AutoCAD. * Возможный макрос для вызова: ^C^C(if (not "c:pline-str") (load "kpblc-stretch-pline.lsp"));c:pline-str; =============================================================================|; (defun kpblc-stretch-pline (/ break_point _osmode_ selset_oper) (setq _osmode_ (getvar "osmode")) ;_ end of setq (setvar "osmode" 512) (setq break_point (getpoint "\nУкажите новую вершину : ") selset_oper (ssget break_point) ) ;_ end of setq (command "_.break" selset_oper break_point break_point) (command "_.pedit" "_M" "_C" break_point break_point "" "_join" 0 "") (command "_.stretch" "_C" break_point break_point "" break_point) ;;(command (list break_point) pause) ;|(while (/= (getvar "cmdactive") 0) (command pause) ) ;_ end of while |; (setvar "osmode" _osmode_)|; (princ) ) ;_ end of defun (defun c:pline-str() (kpblc-stretch-pline) ) ;_ end of defun ;;; Конец файла kpblc-stretch-pline.lsp

> shishoq : у меня не получилось. Может, у Олега (jr) выйдет?

#14 Ответ от kpblc 30 августа 2005г. 17:49:19

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Тьфу ты, там в коде надо снести закомментрованные строки (command (list. )) и (while. );_end of while.
Хотя с другой стороны они не мешают.

#15 Ответ от kpblc 30 августа 2005г. 17:52:36

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Так, все. 2 предыдущих поста можно сносить. Здес окончательный вариант:

;|=================================================================== * Функция разрыва полилинии и одновременной передвижки новой вершины. * Полилиния не меняет следующих свойств: цвет, слой, тип. * Ограничения: * 1. Не производится отлов ошибок ввода (никто не запрещает работать с арками и * окружностями) * 2. Не производится отлов нажатия Esc - не выполняется восстановление * системных переменных. Обработчик ошибок писать просто некогда. * 3. Не производится проверка usc, в которой работает пользователь. * 4. Неправильное указание точки (не принадлежащей объекту) может свалить * функцию в ноль. * 5. Не отслеживается "заморозка" слоя. * 6. Не отслеживается вариант, когда указывается пересечение двух объектов - * в таком случае работа непредсказуема. * Функция тестировалась на ADT 2005, usc = world. * * Функцию желательно сохранить в файл kpblc-stretch-pline.lsp. Файл должен * быть сохранен в путях поддержки AutoCAD. * Возможный макрос для вызова: ^C^C(if (not "c:pline-str") (load "kpblc-stretch-pline.lsp"));c:pline-str; ===================================================================|; (defun kpblc-stretch-pline (/ break_point _osmode_ selset_oper) (setq _osmode_ (getvar "osmode")) ;_ end of setq (setvar "osmode" 512) (setq break_point (getpoint "\nУкажите новую вершину : ") selset_oper (ssget break_point) ) ;_ end of setq (command "_.break" selset_oper break_point break_point) (command "_.pedit" "_M" "_C" break_point break_point "" "_join" 0 "") (command "_.stretch" "_C" break_point break_point "" break_point) (setvar "osmode" _osmode_) (princ) ) ;_ end of defun (defun c:pline-str() (kpblc-stretch-pline) )

Вроде сейчас все нормально.

#16 Ответ от Владимир Громов 30 августа 2005г. 20:57:43

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> kpblc
Вроде все нормально, только если в ответ на запрос:

Вторая точка перемещения или :

нажать правую кнопку мыши, то получается какая-то ерунда, IMHO.

#17 Ответ от kpblc 31 августа 2005г. 08:34:06

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> Владимир Громов
Я тоже на это внимание обратил, но как побороть, даже не представляю. Что самое интересное, если дать просто _.stretch (с ком.строки), то все работает предсказуемо.
С другой стороны, а смысл сделать просто дополнительную вершину полилинии? Ее же, по условиям > Azor (2005-08-30 09:46:09), надо сразу двигать (имхо). Можно, конечно, сделать дополнительный запрос на «двигать вершину или плюнуть?» перед _.stretch, но лишние телодвижения. Если надо, сделать не проблема — только сообщите 😉

#18 Ответ от Azor 2 сентября 2005г. 03:05:25

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Всем спасибо, благодарствую 🙂

#19 Ответ от Azor 2 сентября 2005г. 05:38:59

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> kpblc
весьма полезная программка, и именно со стретчем. не нарадуюсь 🙂

> Олег(jr.)
когда втыкаю одну вершину — все ок, а при попытке поставить вторую — получается абракадабра.

#20 Ответ от Владимир Громов 8 сентября 2005г. 09:26:33

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> kpblc
Товарищ kpblc. А что, если ты эту программу отправишь в раздел «Готовые программы»? Мне нравится, несмотря на бяку с нажатием правой кнопки мыши, моим коллегам-архитекторам тоже придется по душе. Им часто приходится менять планировку помещений, а площадь они определяют по моей программе (площадь замкнутого контура). Частенько приходится контур рисовать заново, потому что надо добавить углы помещения, а, следовательно, и вершины в контуре.

#21 Ответ от kpblc 8 сентября 2005г. 09:40:09

Re: Как добавить вершину в полилинию нажатием одной кнопки?

imho перед «готовностью программы» надо дополнительно, во-первых, сделать вариант на правую кнопку мыши (см. > kpblc (2005-08-31 08:34:06)), провести проверку на досрочный выход, обработку ошибок, провести обработку нештатной ситуации — попытка обработки отрезка, 3д-полилинии, окружности эллипса, полилинии в блоке / xref-e — тут же до дури всего можно придумать. Сейчас просто времени, к сожалению, нет — может, к вечеру поближе что-то и получится.
По поводу площади: можно сюда же засунуть дополнительно проверку на замкнутость полученной полилинии (dxf = 70), преобразовать ее в vlax-object и оттуда вытащить площадь, запросить точку вставки (кстати, тоже надо проверять ввод) и на этой точке сделать либо текст через entmake, либо вставить блок с текстовым атрибутом. Т.е. варианты есть — их только прорабатывать надо.

#22 Ответ от Владимир Громов 8 сентября 2005г. 10:03:36

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> kpblc
Ну, я вижу, ты точно хочешь придерживаться буквы закона: «Готовая программа» — значит готовая программа. Может, все-таки, с мнимальными доработками, а? И не сей секунд, конечно. Ведь хорошая программа, даже в таком виде. Потом, позже, программу можно усовершенствовать. А то эта тема (ведь чисто Лисп’овская) находится в таком разделе, который пополняется со страшнлй силой, и скоро она ушла бы уже во вторую сотню, если бы я ее не поднял.

#23 Ответ от kpblc 8 сентября 2005г. 10:52:07

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Ок, тогда надо определить объем этих минимальных доработок. Чего там сделать-то надобно?
Мои предложения:
1. дополнительные вершины можно вставлять либо для lwpolyline, либо для отрезков (кстати, вопрос — был отрезок, стал полилинией, обратно в отрезки делать или нет? Или запрос?) — для остального (circle, ellipse, spline, 3d-polyline, block, xref. ) вываливается (alert).
2. Досрочный выход не обрабатывается.
3. Площадь не выводится — тут помимо замкнутости надо еще дополнительно по идее обрабатывать варианты совпадения начальной и конечной вершин, а также вариант с самопересечением — _boundary лично мне что-то не очень — если lwpolyline нормальная, то команда создает дубль объекта, который для качественной функции надо сносить — лишние телодвижения.
4. Правая кнопка — что с ней делать? Т.е. для варианта отмены _.stretch чего творим?

#24 Ответ от Владимир Громов 8 сентября 2005г. 11:27:39

Re: Как добавить вершину в полилинию нажатием одной кнопки?

> kpblc
Я пока и сам не знаю. Знаю только, что я ее и в таком виде буду использовать. Не хотелось мне, чтобы тема утонула. Я бы ограничился просто таким названием: «Добавление вершины в полилинию» без площадей, отрезков и т.п. Эта программа может работать сама по себе, а на ее основе можно потом что-то дальше развивать. Универсальность мне не всегда нравится, начальная идея может раствориться в самой универсальности, IMHO.

#25 Ответ от kpblc 8 сентября 2005г. 12:35:30

Re: Как добавить вершину в полилинию нажатием одной кнопки?

Ну ладно. В общем, тут несколько моментов сделано:

;|============================================================================= * Функция разрыва полилинии и одновременной передвижки новой вершины. * Полилиния не меняет следующих свойств: цвет, слой, тип. * Ограничения: * 1. Не производится отлов ошибок ввода (никто не запрещает работать с арками и * окружностями) * 2. Не производится отлов нажатия Esc - не выполняется восстановление * системных переменных. Обработчик ошибок писать просто некогда. * 3. Не производится проверка usc, в которой работает пользователь. * 4. Неправильное указание точки (не принадлежащей объекту) может свалить * функцию в ноль. * 5. Не отслеживается "заморозка" слоя. * 6. Не отслеживается вариант, когда указывается пересечение двух объектов - * в таком случае работа непредсказуема. * Функция тестировалась на ADT 2005, usc = world. * * Функцию желательно сохранить в файл kpblc-stretch-pline.lsp. Файл должен * быть сохранен в путях поддержки AutoCAD. * Возможный макрос для вызова: ^C^C(if (not "c:pline-str") (load "kpblc-stretch-pline.lsp"));c:pline-str; =============================================================================|; (defun kpblc-stretch-pline (/ break_point _osmode_ selset_oper break_ent break_ent_type) ;; Определения локальных функций ;; Собственно разрыв и дополнительный одновременный _.stretch. ;; Параметры: ;; ent_pline - ссылка на разрываемый объект, аналог (entsel) ;; ent_type - тип объекта: nil -> lwpolyline; t -> line ;; объект обратно в LINE не разбивается (defun _kpblc-break-pline (ent-pline ent-type break-point) (command "_.break" ent_pline break-point break-point) (command "_.pedit" "_M" "_C" break-point break-point "") ;; Здесь определяем по ent_type - чего делать дальше (if ent-type (command "_yes") ) ;_ end of if (command "_join" 0 "") ;; вот этот кусок у меня что-то не получился по-человечески. ;; по идее тут надо делать попытку на получение точки, но у меня не вышло. ;; в результате надо два раза кликать мышой для задания второго положения ;; новой вершины. (if (vl-catch-all-error-p (command "_.stretch" "_C" break-point break-point "" break-point pause)) (command "_.stretch" "_C" break-point break-point "" break-point break-point) (command "_.stretch" "_C" break-point break-point "" break-point pause) ) ;| В принципе, его можно закомментировать, оставив только строку (command "_.stretch" "_C" break-point break-point "" break-point pause) - тогда получим старое поведение функции. |; ) ;_ end of defun ;; Конец определения локальных функций (vl-load-com) (if (not *kpblc-activedoc*) (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object))) ) (vla-endundomark *kpblc-activedoc*) (vla-startundomark *kpblc-activedoc*) (setq _osmode_ (getvar "osmode") ) ;_ end of setq (setvar "osmode" 512) (setq break_point (getpoint "\nУкажите точку разрыва : ") selset_oper (ssget break_point) ) ;_ end of setq ;; Теперь проверка на вшивость - в смысле, на правильность выбора ;; Вынесено специально в отдельный setq, а также введена дополнительная ;; локальная переменная определения типа разрываемого объекта (setq break_ent (ssname selset_oper 0) break_ent_type (cdr (assoc 0 (entget break_ent))) ) ;_ end of setq (cond ((= break_ent_type "LWPOLYLINE") (progn (_kpblc-break-pline break_ent nil break_point) ) ;_ end of progn ) ((= break_ent_type "LINE") (_kpblc-break-pline break_ent t break_point) ) (t (alert "Добавить вершину к выбранному примитиву невозможно!")) ) ;_ end of cond (setvar "osmode" _osmode_) (vla-endundomark *kpblc-activedoc*) (princ) ) ;_ end of defun (defun c:pline-str () (kpblc-stretch-pline) ) ;_ end of defun ;;; Конец файла kpblc-stretch-pline.lsp

Обратите внимание, что сейчас если не указывать вторую точку новой вершины, то все нормально. А вот если указывать, то надо два раза щелкать мышой. Сделал на всякий случай и так, как получилось. Если у кого-то выйдет лучше, будет совсем замечательно.

Сообщения с 1 по 25 из 86

Тему читают: 1 гость

Страницы 1 2 3 4 Далее

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Форумы CADUser → Программирование → LISP → Как добавить вершину в полилинию нажатием одной кнопки?

Форум работает на PunBB , при поддержке Informer Technologies, Inc

Подскажите как добавить точьку/вершину к полилинии

Подскажите как добавить точьку/вершину к полилинии.Между двух точек нужно еще 2. Возможно ли это сделать чтобы не чертитьее заново?

Просмотров: 43407
Регистрация: 11.05.2005
Сообщений: 6,983
1. Команда _PEDIT
2. Новые команды для работы с полилинией
__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 13.08.2009
Сообщений: 46

Если я правельно понял, что это заработало надо какойто плагин скачать? а просто в самой программе это сделать не возможно? таким оброзом как в архикаде просто добавить точку кликнув где надо

Регистрация: 11.05.2005
Сообщений: 6,983
Serjik7,

а просто в самой программе это сделать не возможно?

__________________
Как использовать код на Лиспе читаем здесь
Регистрация: 13.08.2009
Сообщений: 5

[b]Serjik7 — набираеш PEDIT;[/b]
[b]-выделяеш поли линию, ;[/b]
[b]-работаеш с командной строки;[/b]
[b]-жмеш E (Еdit vertex);[/b]
[b]-пользуясь N (next) P (Pervios) добираешся до нужного сегмента;[/b]
[b]-I (insert) встовляеш точку;[/b]

Последний раз редактировалось Кулик Алексей aka kpblc, 13.08.2009 в 21:31 .
Регистрация: 13.08.2009
Сообщений: 46
Спасибо большое все получилос!
Регистрация: 05.10.2006
Сообщений: 122
Давно пользуюсь набором PLTOOLS (мое душевное — VVA). Попробуй!
Регистрация: 16.05.2007
Сообщений: 79

Апну тему. в новых версиях автокада если навести курсор на ручку полилинии появляется менюха где есть пункт добавить вершину. Вершина добавляется в конец полилинии, или между точками. Вопрос — никто не знает параметр чтоб вершина добавлялась от ручки на которой «стоишь» — чтоб акад не «смотрел» начало это или конец.

__________________
Нащяльника,мая AutoCAD паставиль,инсталя сделаль,сапускаю, а она ажамбех пашамбе эшельбе шайтанама!

Регистрация: 17.08.2010
Сообщений: 688
Сообщение от Conan_w

Апну тему. в новых версиях автокада если навести курсор на ручку полилинии появляется менюха где есть пункт добавить вершину. Вершина добавляется в конец полилинии, или между точками. Вопрос — никто не знает параметр чтоб вершина добавлялась от ручки на которой «стоишь» — чтоб акад не «смотрел» начало это или конец.

Может включить объектную привязку «ближайшая», или не то?
__________________
Лучше не обещать, чем обещать и не исполнять.
Регистрация: 16.05.2007
Сообщений: 79
Сообщение от LynxM
Может включить объектную привязку «ближайшая», или не то?
Не, не то. Там привязка не влияет на продолжение полилиний.

__________________
Нащяльника,мая AutoCAD паставиль,инсталя сделаль,сапускаю, а она ажамбех пашамбе эшельбе шайтанама!

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

Апну. Подскажите, плиз, куда копать. Полилиния. Всё было хорошо, наводишь курсор на вершину — появляется меню: добавить, растянуть. Но в один миг пропало всё. При наведении вылазиет только «0». Пробовал всё (привязки, объектные отслеживания..) включать/отключать (если отключить «динамический ввод» — даже нолик не отображается).
Попробую _PEDIT , но вершин у меня много.
А ещё появилась вершина, которая при выделении становится не квадратом, а прямоугольником, а если навести на неё, то появляется куча всего, цифры, линии.. (три нуля в ряд и на выноске точками число какое-то (2.7983))
Автокад 2011

Регистрация: 29.10.2004
Сообщений: 16,310
Asaneck, переменную GRIPMULTIFUNCTIONAL в значение 2 или 3
Регистрация: 30.08.2012
Сообщений: 9
Сообщение от Хмурый
Asaneck, переменную GRIPMULTIFUNCTIONAL в значение 2 или 3

Была 3, сделал 2 — осталось тоже самое, вернул на 2.
Что-то с линией не то. На некоторых вершинах появляется меню «добавить,растянуть..». Ещё при наведении на любое место линии рядом с курсором появляются два прямоугольничка сине-голубых, расположенных встык по диагонали, правый верхний залит цветом.
Создал рядом полилинию — навёл на неё — не появляются. И вершины все норм. работают.

Регистрация: 29.10.2004
Сообщений: 16,310
Asaneck, вершины и сегменты полилинии совпадают. циклический выбор в помощь. GRIPMULTIFUNCTIONAL в 3
Регистрация: 23.05.2012
Сообщений: 1,374
Asaneck, http://forum.dwg.ru/showthread.php?t=75907
__________________
Как-то так.

Конструктор по сути (машиностроитель)

Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391
Немного разжую, автор мог не понять
Сообщение от Asaneck
Ещё при наведении на любое место линии рядом с курсором появляются два прямоугольничка сине-голубых,

Это циклический выбор. Его можно отключить (снизу строка, где всякие кнопки вкл/откл по орто, сетке, шагу и пр.)

__________________
Век живи, век учись — .
Регистрация: 30.08.2012
Сообщений: 9

2 sertor
Ссылку посмотрел.
Сделал вывод, что картинку надо прикрутить
прямоугольнички при наведении на мою полилинию.
https://yadi.sk/i/T41tkDpycEDZn
неквадратный узел полилинии (один такой)
https://yadi.sk/i/yiLyhinmcEEEW
при наведении на этот узел курсора
https://yadi.sk/i/3mTlLtWwcEEQ6

Последний раз редактировалось Asaneck, 23.10.2014 в 13:28 . Причина: картинка
Регистрация: 13.12.2007
Россошь, Воронежская обл.
Сообщений: 307

Asaneck, это параметрическая зависимость.

По добавленному, скорее всего у вас в месте высокого прямоугольника две и более совпадающих вершин. Зажмите Ctrl, после этого кликните правее или левее прямоугольника по полилинии — выберется сегмент. После этого подводите курсор к вершине.

Последний раз редактировалось Spiteful Berkut, 23.10.2014 в 13:34 .

Spiteful Berkut
Посмотреть профиль
Найти ещё сообщения от Spiteful Berkut

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

2 Spiteful Berkut
Спасибо огромное! Всемогучий ctrl спас меня.
5 вершин сидело в той точке.
Исчезли злые прямоугольнички.

Регистрация: 13.12.2007
Россошь, Воронежская обл.
Сообщений: 307
Сообщение от Asaneck
неквадратный узел полилинии

Это фишка 2011 AutoCAD’а так совпадающие вершины обозначать или просто глюк? Знает кто-нибудь, а то я в 2011 версии сижу и мучаюсь, временами, а прямоугольников таких не видел.

Spiteful Berkut
Посмотреть профиль
Найти ещё сообщения от Spiteful Berkut

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *