aerohost Posted February 29, 2020 Report Share Posted February 29, 2020 Как перенумировать вершины полилинии, допустим хочу что бы нумерация была не с конца, а с начало ( что ты точка А стала вершиной 1 и дальше по порядку). Полилиниии бывают очень сложной формы. Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted February 29, 2020 Report Share Posted February 29, 2020 Надо попробовать адаптировать к nanoCAD вот это приложениеhttps://dwg.ru/dnl/607 Спойлер =========== Доступные команды PLTOOLS================= Редакция 04.09.2014 PL-JOIN -Объединение выбранных полилиний PL-VFI -вставка вершин в выбранной полилинии в местах пересечения с указанными полилиниями, линиями, дугами PL-JOIN3D -Объединение 3D полилиний PL-A2L -Замена линейного сегмента в полилинии дуговым сегментом. PL-L2A -Замена дугового сегмента в полилинии линейным сегментом. PL-DIV -Разбивает выбранный сегмент полилинии на указанное количество сегментов или через указанное расстояние PL-DIVAll -Разбивает все сегменты полилинии на указанное количество сегментов или через указанное расстояние PL-VxAdd -Добавляет новую вершину к полилинии ENTREVS -Реверс объекта ENTREV -Реверс объектов (множественный выбор) PL-CW -Реверс выбранных полилиний по часовой стрелке PL-CCW -Реверс выбранных полилиний против часовой стрелки PL-VxRdc -Удаление вершин полилиний, которые лежат на одной прямой PL-VxDel -Удаление выбранной вершины pl-VxOpt -Удаление совпадающих вершин из полилинии PL-NoArc -Аппроксимация дуговых сегментов полилинии PL-Clone -Построение полилинии путем копирования ее сегментов PL-VxMove -Перемещение вершин полилинии (командная строка) PL-Vx1 -Изменение начала полилинии (командная строка) ConvTo2d -Преобразование линейных объектов в 2D полилинии ConvTo3d -Преобразование линейных объектов в 3D полилинии MPL -Построение средней линии R3P -Прямоугольгик по 3-м точкам PL-P90 -Рисование перпендикулярных друг к другу сегментов полилинии PL-CSE -Объединение 2d полилиний по примитиву PL-SgWidth -Изменить ширину сегмента полилинии Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted February 29, 2020 Report Share Posted February 29, 2020 (edited) 9 часов назад, aerohost сказал: Как перенумеровать вершины полилинии, Можно попробовать обратиться из VBA. Sub Open_DWGWithPLine() ' Приложение nanoCAD Public ncadApp As nanoCAD.Application ' Документ nanoCAD Public ncadDoc As nanoCAD.Document ' Утилиты nanoCAD Public ncadUt As nanoCAD.Utility ' Проверяем существует ли открытый nanoCAD On Error Resume Next ' Эта строка откроет приложение nanoCAD, если оно еще не открыто ' Set ncadApp = GetObject("", "nanoCAD.Application") ' Эта строка не откроет приложение nanoCAD, если оно еще не открыто Set ncadApp = GetObject(, "nanoCAD.Application") On Error GoTo 0 ' Если nanoCAD не открыт, то прекращаем работу If ncadApp Is Nothing Then MsgBox ("Не обнаружен открытый nanoCAD !") Exit Sub End If Set ncadDoc = ncadApp.ActiveDocument Dim objPLine As Variant Dim varPnt As Variant ncadDoc.Utility.GetEntity objPLine, varPnt, "Choose PLine" ' ........... End Sub Далее в objPLine будут прописаны координаты (в два раза больше чем вершин), а в varPnt координаты выбранной точки. Записываем существующие координаты во временный массив. Ищем координаты ближайшие к выбранной точке (я не уверен, что GetEntity вернет именно координаты вершины), и от них начинаем заново переписывать координаты из временного массива. Как то так. Спойлер Спойлер Спойлер Спойлер Edited February 29, 2020 by A.Kudrjashov 1 Quote Link to comment Share on other sites More sharing options...
aerohost Posted March 1, 2020 Author Report Share Posted March 1, 2020 (edited) Нашел как это сделать через костыли. Клац Клац Edited March 1, 2020 by aerohost 2 Quote Link to comment Share on other sites More sharing options...
Ivanco Posted March 1, 2020 Report Share Posted March 1, 2020 5 часов назад, aerohost сказал: Нашел как это сделать через костыли. нумерация вершин в скрипте есть. нужно именно чтобы это были блоки с атрибутом? есть еще пожелания по использованию плагина? Quote Link to comment Share on other sites More sharing options...
aerohost Posted March 1, 2020 Author Report Share Posted March 1, 2020 44 минуты назад, Ivanco сказал: нумерация вершин в скрипте есть. нужно именно чтобы это были блоки с атрибутом? есть еще пожелания по использованию плагина? Выводить позиции X Y Дин блока в таблице Quote Link to comment Share on other sites More sharing options...
aerohost Posted March 1, 2020 Author Report Share Posted March 1, 2020 1 час назад, Ivanco сказал: нумерация вершин в скрипте есть. нужно именно чтобы это были блоки с атрибутом? есть еще пожелания по использованию плагина? В отдельный лисп можно это выкинуть ?) Quote Link to comment Share on other sites More sharing options...
Ivanco Posted March 1, 2020 Report Share Posted March 1, 2020 1 час назад, aerohost сказал: Выводить позиции X Y Дин блока в таблице а можете всю цепочку действий озвучить? и в чем смысл "нумерации" именно блоками с атрибутом, а не просто текстом? еще. по видео не совсем понятно. используется какой то скрипт который в каждую вершину вставляет блок с атрибутом (номер вершины)? что за скрипт? м.б. эту функциональность добавить в приложение? запилить вывод координат базовой точки блоков в принципе не сложно. 46 минут назад, aerohost сказал: В отдельный лисп можно это выкинуть ?) нумерацию? приложение на C#, отдельно что выносить не вижу смысла, но можно сделать отдельную консольную команду для вызова "нумерации" без менюшки с формой, если в этом есть какая то необходимость. Quote Link to comment Share on other sites More sharing options...
aerohost Posted March 1, 2020 Author Report Share Posted March 1, 2020 (edited) 3 часа назад, Ivanco сказал: нумерацию? приложение на C#, отдельно что выносить не вижу смысла, но можно сделать отдельную консольную команду для вызова "нумерации" без менюшки с формой, если в этом есть какая то необходимость. Клац, 1-ый При согласовании трассы где необходимы координаты,доходил до абсурда. Кто то хочешь в "Ключевых"(вершинах полилинии) точках видеть кружочек, кто то круг(не заштрихованная окружность), кто то треугольник. Кто то хочешь видеть вместо 1,2,3 т.1,т.2,т.3, кто то А,В,С. Блоками всегда это все легче исправить ) Блок можно перемещать и в онлайн режиме в таблице будет меняться положение Х У тоже. Кст. ваша разработка конфликтует с плагином Клац в итоге получается такой баян Edited March 1, 2020 by aerohost Quote Link to comment Share on other sites More sharing options...
Ivanco Posted March 2, 2020 Report Share Posted March 2, 2020 19 часов назад, aerohost сказал: При согласовании трассы где необходимы координаты,доходил до абсурда. Кто то хочешь в "Ключевых"(вершинах полилинии) точках видеть кружочек, кто то круг(не заштрихованная окружность), кто то треугольник. Кто то хочешь видеть вместо 1,2,3 т.1,т.2,т.3, кто то А,В,С. расстановка блоков по вершинам есть, нумерация в атрибут - такого нет. таблицу с координатами блоков , проще думаю сделать штатно отчетами. 19 часов назад, aerohost сказал: Кст. ваша разработка конфликтует с плагином Клац в чем именно заключается конфликт? Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted March 6, 2020 Report Share Posted March 6, 2020 В 29.02.2020 в 09:31, aerohost сказал: Как перенумировать вершины полилинии, допустим хочу что бы нумерация была не с конца, а с начало ( что ты точка А стала вершиной 1 и дальше по порядку). Строго говоря, в представленном примере вам нужно не просто перенумеровать в обратном порядке, а начать нумерацию с произвольной вершины, да еще в неизвестном направлении. Из рисунка ясно, что полилиния: а)замкнута (а значит неизвестно направление обхода вершин) и б) вершина А явно находится где-то в середине списка. Если вы хотите начать с вершины А, то в требуемой утилите должен быть механизм указания именно какой-то n-вершины в качестве начальной, ну и направление обхода. Налицо явное усложнение вроде бы простой изначально задачи. В принципе, написание плагина перенумеровки вершин несложная задача. Все упирается в запрос этих двух искомых переменных. Если с направлением более-менее просто - достаточно указать "по/против часовой стрелки", то с начальной вершиной уже сложнее. А если учесть, что полилиния может быть незамкнутой, то по смыслу задачи она вообще должна развалиться на две разных полилинии. При чем, в этом случае уже вопрос направления неактуален - в обеих полилиниях первая вершина будет однозначно первой. В общем, сначала необходимо определиться с желаниями) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.