Разбить пунктир на отдельные отрезки в Illustrator

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
замкнутым отрезком из двух
Ключевое "замкнутым отрезком".
А такое бывает? '8()'

Да, вспомнил, бывает. Но только в Corel. ))
2018-09-30_21-51-25.png
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 294
Реакции
10 865
Везде бывает, и в кореле и в лидере отрасли. Замкнутый отрезок из одного узла - что вас смущает?
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
Везде бывает, и в кореле и в лидере отрасли.
Не будьте пустословным, по крайней мере, по отношению к "лидеру области".
Думаю, интересно будет увидеть не только мне. Давайте завтра, да?
Ведь этот диалог (уже) публичный, Михаил.
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
12 072
Реакции
3 503
О, прошу вас, продолжайте.
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
В компьютерной графике элементарным объектом и базовым, к тому же, является линия, которая
Подобная фраза, учитывая ваше заявление о двойном высшем образовании, расценивается мной, скорее, как шутка, ибо я все еще не до конца утратил веру в нынешнее высшее образование этой страны.'fp'

А то я уж испугался было. ))

"Как в растровой графике основным элементом изображения является точка,
так в векторной графике основным элементом изображения является линия
(при этом не важно, прямая это линия или кривая)." - стр.60

"8.1. Математические основы векторной графики
В основе векторной графики лежат математические представления о
свойствах геометрических фигур. Как мы сказали выше, простейшим
объектом векторной графики является линия. Поэтому в основе векторной
графики лежит, прежде всего, математическое представление линии." - стр.62

Источник:
В. Е. Васильев, А. В. Морозов
"Компьютерная графика"
Санкт-Петербург, 2005
http://www.ict.edu.ru/ft/005415/nwpi237.pdf
Не думаю, что есть учебники, где утверждается что-то иное.
 
Последнее редактирование:

Йожег

без телевизора
12 лет на форуме
Сообщения
8 844
Реакции
4 275

Не по теме:
Ой да я тоже могу трясти корочками '))' но в отличие от наш добрый бырбырдировщик все-таки действующий программер.
 
  • Спасибо
Реакции: _MBK_

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
Прежде чем утверждать, что одна из линий пропадет при применении (а хотя бы и в Corel) Unclosed? можно было бы и проверить - займет всего несколько секунд. ))
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
все-таки действующий программер.
Это внушает уважение, которым я действительно проникся с самого начала, только почему же тогда он не написал учебник, в котором говорилось бы, что в векторной графике базовым элементом является не линия? Может термины изменились? Или вообще подход к графике стал другой?
Уважение должно вызывать не желание подколоть или поучить, а желание подсказать, поделиться и поправить, а особенно, когда человек иногда перепроверяет свои утверждения или доказывает правоту, если в них кто-то сомневается. Много знаний предполагают терпимость. В конкретном случае возмутили утверждения без подтверждений. С этим объектом, который получается при Expand тонкой линии в Illustrator не все так просто. Пусть покажет то, что утверждает, хотя бы в Corel. Это же с его стороны был употреблен термин применительно к Illustrator - "атрибут Closed" (Unclosed). Или может укажет, что я показал в Corel не в том ключе, в котором он это описывает словесно. Если у него получится это сделать без всяких оговорок - я публично принесу извинения.
Откровенно говоря, от программиста странно слышать выражение о "замкнутом отрезке с одной опорной точкой". Для дизайнера или сказанное так для дизайнера, да, такое допускаю, так как визуально программисты сделали так для нас и мы видим именно так, но с точки зрения программера при условии, что базовым элементом является линия? Или мы говорим о неевклидовой геометрии?

Для сведения погуглите:
Постулаты Евклида:
Определение 1. Точка есть то, что не имеет частей.
Определение 2. Линия есть длины без ширины
Определение 3. Границы линии суть точки.
...
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
...и еще о "замкнутом отрезке с одной опорной точкой" - я бы очень хотел посмотреть на такое в Illustrator, так как _MBK_ сделал утверждение, что и для этого редактора это нормально.
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
Он и тебя посчитал
Это было случайно.
Я вот все тот вопрос для Pattern Brush не могу решить, не получается что-то разницу увидеть:
чем отличаются Stretch Fit (Растягивать до заполнения) от Approximate Path (Усреднять путь).
(прим. Add space to fit - Добавлять интервалы до заполнения - здесь все понятно). Можете подсказать?
 
Последнее редактирование:

carry

15 лет на форуме
Сообщения
2 647
Реакции
1 015
В Кореле задачка решаема, хотя и заднеприводным способом. Получается кучка отрезков, считающаяся одной фигурой.
В Иллюстраторе мне пока не хватает парочки шагов до автоматизации. Т.е. на кусочки-то они режутся, но потом ненужное оттеда выковыривать - занятие слабо интересное.
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
чем отличаются Stretch Fit (Растягивать до заполнения) от Approximate Path
Ну да, мануал читать никогда не лишне. Эти настройки в полной мере будут работать при использовании для кисти образца, который представляет собой узор или паттерн, которым будет замощен контур объекта или линия.
Stretch Fit - удлиняет или укорачивает элементы узора для подгонки к объекту. Использование этого значения может привести к неравномерному распределению элементов узора, т.е. образец может масштабироваться;
Add space to fit - изменяет размеры интервала для наиболее равномерного распределения паттерна, т.е. образец остается неизменного размера;
Approximate Path - образец сдвигается внутрь или наружу относительно оси контура для достижения равномерного распределения элементов по длине этого контура, образец остается неизменного размера.
Поэтому для "нашего" пунктира первая и третья настройки различий иметь не будут, так как образец является линией, а не фигурой или узором.
парочки шагов до автоматизации. Т.е. на кусочки-то они режутся
Здесь _MBK_ упоминал о возможных алгоритмах, если Вы о скриптах:
Скриптом гораздо проще закодить преобразование экспандированной кривой в линию
А вообще, раз уж мы заговорили о скрипте, то проще всего разбить линию на участки заданной длины и убрать промежутки между ними.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 294
Реакции
10 865
А то я уж испугался было. ))

"Как в растровой графике основным элементом изображения является точка,
так в векторной графике основным элементом изображения является линия
(при этом не важно, прямая это линия или кривая)." - стр.60

"8.1. Математические основы векторной графики
В основе векторной графики лежат математические представления о
свойствах геометрических фигур. Как мы сказали выше, простейшим
объектом векторной графики является линия. Поэтому в основе векторной
графики лежит, прежде всего, математическое представление линии." - стр.62

Источник:
В. Е. Васильев, А. В. Морозов
"Компьютерная графика"
Санкт-Петербург, 2005
http://www.ict.edu.ru/ft/005415/nwpi237.pdf
Не думаю, что есть учебники, где утверждается что-то иное.
Теория суха, но зеленеет жизни древо. Внимательно прочитайте процитированной мною свою фразу и найдите различие.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 294
Реакции
10 865
Ну да, мануал читать никогда не лишне. Эти настройки в полной мере будут работать при использовании для кисти образца, который представляет собой узор или паттерн, которым будет замощен контур объекта или линия.
Stretch Fit - удлиняет или укорачивает элементы узора для подгонки к объекту. Использование этого значения может привести к неравномерному распределению элементов узора, т.е. образец может масштабироваться;
Add space to fit - изменяет размеры интервала для наиболее равномерного распределения паттерна, т.е. образец остается неизменного размера;
Approximate Path - образец сдвигается внутрь или наружу относительно оси контура для достижения равномерного распределения элементов по длине этого контура, образец остается неизменного размера.
Поэтому для "нашего" пунктира первая и третья настройки различий иметь не будут, так как образец является линией, а не фигурой или узором.

Здесь _MBK_ упоминал о возможных алгоритмах, если Вы о скриптах:
Про самый простой способ автоматизации как разбиение линии на части - беру слова обратно. Для Корела, да, это делается в несколько строк, а у лидера отрасли снова внезапная проблема - индусы почему то сочли излишним добавление в модель метода вставки нового узла по относительным координатам, в итоге теперь, чтоб разбить отрезок пополам требуется весьма нехилая математика. 'fp' Самый же простой способ я продемонстрирую сегодня, как только доберусь до иллюстратора, надеюсь это, заодно, даст страждущему @drawline требуемые примеры.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 294
Реакции
10 865
Этот вариант уже рассматривали.
Вот обещанный способ - даже обводку возвращает на место:
Код:
var oldwidth,oldcolor;
if (documents.length > 0) {
 if (activeDocument.selection.length>0)
 {
   for (var i=0;i<activeDocument.selection.length;i++)
     if (activeDocument.selection[i].typename == "PathItem")
     {
         oldwidth=activeDocument.selection[i].strokeWidth;
         oldcolor=activeDocument.selection[i].strokeColor;
         activeDocument.selection[i].strokeWidth=0.000001;
       
     }
   app.executeMenuCommand("OffsetPath v22");
   app.executeMenuCommand("ungroup");
   app.executeMenuCommand("noCompoundPath");
   for (var i=0;i<activeDocument.selection.length;i++)
     if (activeDocument.selection[i].typename == "PathItem")
     {
         activeDocument.selection[i].filled=false;
         activeDocument.selection[i].closed=false;
         activeDocument.selection[i].stroked=true;
         activeDocument.selection[i].strokeWidth=oldwidth;
         activeDocument.selection[i].strokeColor=oldcolor;
     }
 } else
 {
    alert("No selection");
 }
} else
{
 alert("No opened document");
}
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 294
Реакции
10 865
Причем, для надежности, фильтр на возможные коллизии поставить надо, ибо индусы лажают безбожно
Код:
var oldwidth,oldcolor;

if (documents.length > 0) {
 if (activeDocument.selection.length>0)
 {
   for (var i=0;i<activeDocument.selection.length;i++)
     if (activeDocument.selection[i].typename == "PathItem")
     {
         oldwidth=activeDocument.selection[i].strokeWidth;
         oldcolor=activeDocument.selection[i].strokeColor;
         activeDocument.selection[i].strokeWidth=0.0001;
        
     }
   app.executeMenuCommand("OffsetPath v22");
   app.executeMenuCommand("ungroup");
   app.executeMenuCommand("noCompoundPath");
  
   for (var i=0;i<activeDocument.selection.length;i++)
     if (activeDocument.selection[i].typename == "PathItem")
     {
         for (j=0;j<activeDocument.selection[i].pathPoints.length-1;j++)
         {
             var pp=activeDocument.selection[i].pathPoints[j];
             for (k=j+1;k<activeDocument.selection[i].pathPoints.length;k++)
            {
                var pp1=activeDocument.selection[i].pathPoints[k];
                if ((Math.abs(pp1.anchor[0]-pp.anchor[0])<0.001) && (Math.abs(pp1.anchor[1]-pp.anchor[1])<0.001))
                {
                 pp1.remove();
                }
            }
         }
         activeDocument.selection[i].filled=false;
         activeDocument.selection[i].closed=false;
         activeDocument.selection[i].stroked=true;
         activeDocument.selection[i].strokeWidth=oldwidth;
         activeDocument.selection[i].strokeColor=oldcolor;
     }
 } else
 {
    alert("No selection");
 }
} else
{
 alert("No opened document");
}
 
  • Спасибо
Реакции: ITIT и drawline

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
и найдите различие
Ну не нашел различий, может у меня кровь сильно к мозгу прилила и я уже за пеленой ничего не вижу? '))' (пытаюсь иронизировать над собой)


А теперь о вашем примере (видео) - просто хочу напомнить, о чем вообще такой баттл разгорелся.
В общем, самое дельное решение оттуда - назначить толщину 0.0001 pt и сделать Expand
Не разумею, чем вам все таки не угодил данный способ?
----
  1. Set thickness of line to 0.0001 pt
  2. Menu Object > Expand (if greyed out, choose Object Expand Appearance first, as the object has appearance attributes applied to it)
  3. Set thickness back to original value
----
Проверил у себя - прекрасно разбивает на отрезки. Единственно что - потом надо полученную группу раскомбинировать и отрезки разомкнуть
У меня в CS6 прекрасно выставляется 0.0001 pt ЧЯДНТ?
Как Вы проверяете, что это отрезки, а не объекты? У меня так:

2018-09-30_16-33-21-png.110744

Это если после Expand инструментом "поиграться" Anchor Poin Tool
Ну вроде как, по условию было преобразовать именно в двухточечные отрезки, про аттрибут замкнутости требования не было? Или плоттер этот аттрибут воспринимает как приказ вернуться в исходную? Ну тогда разомкнуть их все скопом - или для лидера отрасли это тоже нетривиальное действие?
Ну в кореле это делается легким нажатием волшебной кнопки...

...Два сплайна, опирающиеся на две точки при разьединении в одной из них легко превращаются в один.
проверил в Corel-е

Так вот, давайте я все-таки сформулирую, каких подтверждений прошу:
1) После Expand тонкой пунктирной линии с толщиной 0,0001 pt останутся объекты с двумя точками, но с двойными линиями.
_МВК_ утверждает, что после снятия атрибута Closed (который в явном виде есть только в Corel) должна остаться только одна линия.
Я прошу привести такой пример хотя бы в Corel.
Если будет и в Illustrator, будет здорово.
Принципиально, потому что речь идет о корректности применения такого способа.

2)
Везде бывает, и в кореле и в лидере отрасли. Замкнутый отрезок из одного узла - что вас смущает?
Было бы здорово, если бы _МВК_ показал на примере именно в Illustrator-е такую линию.
Просто, как дополнение - вопрос не принципиальный для данного топика, да и для меня.

PS. Что касается Pattern Brush, то как раз, показанное видео можно взять в качестве корректного примера для решения задачи, указанной в теме топика.
 

drawline

10 лет с rudtp
Топикстартер
10 лет на форуме
Сообщения
99
Реакции
2
даже обводку возвращает на место
Кстати, тоже очень нужный инструмент был бы в свое время.
Частенько приходили чертежи, которые кочевали из одного редактора в другой, в результате чего вместо пунктиров в файле - множество штриховых линий из объектов (прямоугольников). Приходилось все пунктирные линии перерисовывать заново.

Если допишете, думаю, кому-то пригодится обязательно!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 294
Реакции
10 865
Ну не нашел различий, может у меня кровь сильно к мозгу прилила и я уже за пеленой ничего не вижу?
В компьютерной графике элементарным объектом и базовым, к тому же, является линия, которая имеет две координаты
1) После Expand тонкой пунктирной линии с толщиной 0,0001 pt останутся объекты с двумя точками, но с двойными линиями.
_МВК_ утверждает, что после снятия атрибута Closed (который в явном виде есть только в Corel) должна остаться только одна линия.
Все ваши беды - от неправильной формулировки. Я давно вам тонко намекал, что у иллюстратора нет понятия "линия"
Есть контур (PathItem) который состоит из точек (PathPoint)
Что есть отрезок? - незамкнутый незалитый контур, имеющий начало и конец. Вы согласны с таким определением?
Пример перед вами - то, во что превращается пунктирный контур после отработки скрипта
Если допишете, думаю, кому-то пригодится обязательно!
Дык вроде дописал