Jump to content

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


aerohost
 Share

Recommended Posts

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

22c371b461a1caa958026140df044a9d.png
 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Edited by A.Kudrjashov
  • Like 1
Link to comment
Share on other sites

  • aerohost locked and unlocked this topic
5 часов назад, aerohost сказал:

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

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

Link to comment
Share on other sites

44 минуты назад, Ivanco сказал:

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

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

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

Link to comment
Share on other sites

1 час назад, Ivanco сказал:

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

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

Link to comment
Share on other sites

1 час назад, aerohost сказал:

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

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

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

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

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

 

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

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

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

Link to comment
Share on other sites

3 часа назад, Ivanco сказал:

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

 Клац, 1-ый

 

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

 

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

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

 

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

 

 

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

0cfe8f22fed7.png

Edited by aerohost
Link to comment
Share on other sites

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

 

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

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

 

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

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

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

Link to comment
Share on other sites

В ‎29‎.‎02‎.‎2020 в 09:31, aerohost сказал:

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

 

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

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

 

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

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

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

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

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

 

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...