Перейти к содержанию
aerohost

Изменение нумерации вершин полилинии

Рекомендуемые сообщения

Как перенумировать вершины полилинии, допустим хочу что бы нумерация была не с конца, а с начало ( что ты точка А стала вершиной 1 и дальше по порядку). Полилиниии бывают очень сложной формы. 

22c371b461a1caa958026140df044a9d.png
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо попробовать адаптировать к 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 -Изменить ширину сегмента полилинии

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 вернет именно координаты вершины), и от них начинаем заново переписывать координаты из временного массива.

Как то так.
 

Спойлер

image.png.3960feb2fb4b4873ec91a853a757132c.png

 

Спойлер

image.png.4d46601518f40c78d911811140043787.png

 

Спойлер

image.png.b1f1a20040782dec12c13370e570c6b3.png

 

Спойлер

image.png.e71f83578fdab7ee49e0727a1e3221b1.png

 

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел как это сделать через костыли.

Клац Клац

Изменено пользователем aerohost

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, aerohost сказал:

Нашел как это сделать через костыли.

нумерация вершин в скрипте есть. нужно именно чтобы это были блоки с атрибутом? есть еще пожелания по использованию плагина?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
44 минуты назад, Ivanco сказал:

нумерация вершин в скрипте есть. нужно именно чтобы это были блоки с атрибутом? есть еще пожелания по использованию плагина?

Выводить позиции  X Y Дин блока в таблице 

Screenshot_2020-03-01-17-07-05-204_com.android.chrome.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Ivanco сказал:

нумерация вершин в скрипте есть. нужно именно чтобы это были блоки с атрибутом? есть еще пожелания по использованию плагина?

В отдельный лисп можно это выкинуть ?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, aerohost сказал:

Выводить позиции  X Y Дин блока в таблице

а можете всю цепочку действий озвучить? и в чем смысл "нумерации" именно блоками с атрибутом, а не просто текстом?

еще. по видео не совсем понятно. используется какой то скрипт который в каждую вершину вставляет блок с атрибутом (номер вершины)? что за скрипт?

м.б. эту функциональность добавить в приложение?

запилить вывод координат базовой точки блоков в принципе не сложно.

 

46 минут назад, aerohost сказал:

В отдельный лисп можно это выкинуть ?)

нумерацию? приложение на C#, отдельно что выносить не вижу смысла, но можно сделать отдельную консольную команду для вызова "нумерации" без менюшки с формой, если в этом есть какая то необходимость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, Ivanco сказал:

нумерацию? приложение на C#, отдельно что выносить не вижу смысла, но можно сделать отдельную консольную команду для вызова "нумерации" без менюшки с формой, если в этом есть какая то необходимость.

 Клац, 1-ый

 

При согласовании трассы где необходимы координаты,доходил до абсурда. Кто то хочешь в "Ключевых"(вершинах полилинии) точках видеть кружочек, кто  то круг(не заштрихованная окружность), кто то треугольник. Кто то хочешь видеть вместо 1,2,3 т.1,т.2,т.3, кто то А,В,С.

 

Блоками всегда это все легче исправить ) 

Блок можно перемещать и в онлайн режиме в таблице  будет меняться положение Х У тоже.  

 

Кст. ваша разработка конфликтует с  плагином Клац

 

 

в итоге получается такой баян 

0cfe8f22fed7.png

Изменено пользователем aerohost

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19 часов назад, aerohost сказал:

 

При согласовании трассы где необходимы координаты,доходил до абсурда. Кто то хочешь в "Ключевых"(вершинах полилинии) точках видеть кружочек, кто  то круг(не заштрихованная окружность), кто то треугольник. Кто то хочешь видеть вместо 1,2,3 т.1,т.2,т.3, кто то А,В,С.

расстановка блоков по вершинам есть, нумерация в атрибут - такого нет. таблицу с координатами блоков , проще думаю сделать штатно отчетами.

 

19 часов назад, aerohost сказал:

Кст. ваша разработка конфликтует с  плагином Клац

в чем именно заключается конфликт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В ‎29‎.‎02‎.‎2020 в 09:31, aerohost сказал:

Как перенумировать вершины полилинии, допустим хочу что бы нумерация была не с конца, а с начало ( что ты точка А стала вершиной 1 и дальше по порядку).

 

Строго говоря, в представленном примере вам нужно не просто перенумеровать в обратном порядке, а начать нумерацию с произвольной вершины, да еще в неизвестном направлении. Из рисунка ясно, что полилиния: а)замкнута (а значит неизвестно направление обхода вершин) и б) вершина А явно находится где-то в середине списка.

Если вы хотите начать с вершины А, то в требуемой утилите должен быть механизм указания именно какой-то n-вершины в качестве начальной, ну и направление обхода.

 

Налицо явное усложнение вроде бы простой изначально задачи.

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

Если с направлением более-менее просто - достаточно указать "по/против часовой стрелки", то с начальной вершиной уже сложнее.

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

При чем, в этом случае уже вопрос направления неактуален - в обеих полилиниях первая вершина будет однозначно первой.

 

В общем, сначала необходимо определиться с желаниями)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...