Установить порядок (начало) узлов в замкнутой форме/пути?

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

Похоже, что разрезание пути в точке переместит начало в эту позицию, но его повторное объединение переместит его в другое место.

Как задать начальную точку кривой?

Ответы (2)

Кривая не может иметь начальную точку посередине. Это должен быть тот или иной конечный узел. В Inskcape вы можете изменить направление пути, используя Path > Reverse . Направление пути влияет на весь путь. У вас не может быть участков составного пути, идущего в разных направлениях. Только открытые пути имеют начальный и конечный узлы (см. примечание ниже).

Если вы хотите, вы можете изменить настройки, чтобы показать направление пути. Нажмите «Правка» > «Установки» > «Узел» . Выберите параметр, который говорит «показать направление пути на контурах».

Когда вы показываете направление пути, щелкая по пути с помощью инструмента «Узлы», на пути отображаются маленькие стрелки, как в этом примере:

введите описание изображения здесь

Примечание. Замкнутый путь не имеет начального узла как такового, а только направление. Невозможно указать начальный узел в середине замкнутого пути или иметь участки пути, идущего в разных направлениях. Направление пути влияет на весь путь. Хотя может быть способ редактирования SVG XML, чтобы конкретный узел стоял первым в данных пути, но вам нужно будет сделать это вручную. Насколько мне известно, нет способа выбрать узел на закрытом пути и изменить его на первый, применив какую-либо настройку в Inkscape. Возможно, где-то есть расширение (или кто-то мог бы его написать), которое могло бы это сделать, но я его не нашел.

Я имею в виду в первую очередь для закрытых путей. Поскольку это редактор SVG, а у редактора есть первый узел, я надеялся, что будет способ его выбрать (поскольку у Illustrator есть способ сделать это при редактировании). Кроме того, если у меня есть несколько открытых кривых, я бы хотел выбрать, в каком порядке они появляются.
Хм. Не уверен, что вы подразумеваете под «похоже, что у Illustrator есть способ сделать это при редактировании». Такого функционала я еще не видел. Если вы имеете в виду при рисовании пути, то да, возможно. Первый созданный вами узел будет первым в данных пути. Но изменение того, какой узел является первым в данных пути, — это совсем другое. Можно перерисовать кривую, начиная с нужного узла. Что касается порядка путей, то, возможно, да, если вы имеете в виду стек, используя Object > поднять, опустить, поднять вверх, опустить вниз
Я нашел несколько ссылок на Illustrator при поиске Inkscape... но, возможно, все они были скриптами, которые это делают. Что касается нескольких кривых, я имею в виду один путь с несколькими сегментами (несколько команд SVG Close/Move в данных одного пути).
Я нажимаю на опцию «показать направление пути на контурах», но стрелки направления не отображаются для меня.
@Ooker Вам нужно выбрать путь с помощью инструмента «Редактировать по узлам» (N). См. пример .
ах, вы также должны нажать «Всегда показывать контур»

Я опаздываю, но вот решение, которое я нашел:

Я создаю «разделитель форм» для веб-страницы. Я создал кривые вручную, кодируя SVG вручную, но я использую InkScape для вычисления пересечения фигур, и я явно хочу, чтобы левый нижний угол был начальной вершиной.

основная работа

Решение:

  • На закрытом пути выберите узел, который вы хотите сделать «первым». В этом примере я использовал

настраивать

  • Щелкните инструмент «разорвать путь».

открытый инструмент

  • Переместите последний узел, чтобы вы могли видеть, что происходит дальше

перемещенная вершина

  • Удали это. Теперь у вас есть путь, который, если бы он был закрыт, был бы тем, что вам нужно.

удаленная вершина

  • Установите направление пути по своему желанию (как сказал Билли Керр).
  • А теперь сохраните в «простом SVG».

Найдите форму в исходнике. Мне нравится разбивать его новыми строками, чтобы я мог ясно видеть команды пути SVG, все они выровнены в столбце:

<path id="overlap" d="
    M 0,100
    C 4.5535681,77.232159 8.6760028,58.507302 12.802734,44.185547
    C 19.217072,33.746375 24.557462,27.608473 28.488281,25.675781
    C 38.980486,35.823941 52.270327,58.246413 65,56
    C 68.894757,55.480699 72.585852,53.805739 76.058594,51.011719
    C 77.212366,52.282377 78.224994,53.335709 79,54
    C 87 60 96 54 100 52
    V 100
" />
  • Добавьте Z за последним узлом, чтобы указать, что SVG закроет фигуру. В моем примере см. ZЯ добавил после V 100:
<path id="overlap" d="
    M 0,100
    C 4.5535681,77.232159 8.6760028,58.507302 12.802734,44.185547
    C 19.217072,33.746375 24.557462,27.608473 28.488281,25.675781
    C 38.980486,35.823941 52.270327,58.246413 65,56
    C 68.894757,55.480699 72.585852,53.805739 76.058594,51.011719
    C 77.212366,52.282377 78.224994,53.335709 79,54
    C 87 60 96 54 100 52
    V 100
    Z
" />

Затем я снова скопировал путь в свой исходный SVG.

Без Zкоманды:

без Z

С Zкомандой:

введите описание изображения здесь

И вот мой конечный результат

Z мне действительно не понадобился, так как я использую его без границ в последнем месте. Так что, наконец, с Z или без него будет выглядеть одинаково. В финальном SVG все слои прозрачны, за исключением «формы, отредактированной inkscape», которая имеет белый цвет без прозрачности. Но я гарантирую, что у меня есть все «отправные точки» под моим контролем в известной позиции, предназначенной для анимации и других трюков:

разделитель окончательной формы

Использование этого метода перед выполнением Сохранить как тип...Оптимизированный SVG позволил мне определить начальную точку как ближайшую к моему источнику, что уменьшило количество символов в моем оптимизированном SVG и дополнительно уменьшило количество значащих цифр, необходимых для координаты. В целом это позволило мне создать оптимизированный вручную SVG значительно меньшего размера!