Ничего, ничего, ничего, ничего, 1851876449
Хотя во всех программах Адоба скрипты работают примерно одинаково, каждая программа делает что-то по-своему.
В Индизайне, например, все константы хранятся в специальных объектах (перечислениях), но их значения — огромные числа! Почему? Да просто решили так.
Если у чего-то не указан параметр, то возвращается обычно
Но если попробовать взять размер шрифта, который не указан в стиле, то вернётся как раз
Поэтому я почти с самого первого дня программирования для Адоба использую только тройное сравнение
Хотя во всех программах Адоба скрипты работают примерно одинаково, каждая программа делает что-то по-своему.
В Индизайне, например, все константы хранятся в специальных объектах (перечислениях), но их значения — огромные числа! Почему? Да просто решили так.
Если у чего-то не указан параметр, то возвращается обычно
undefined. Например, если у стиля в Индизайне не указан шрифт, то будет как раз undefined.Но если попробовать взять размер шрифта, который не указан в стиле, то вернётся как раз
NothingEnum.NOTHING. И самое дурацкое, что при выводе в логах этого значения, будет указано значение этой константы, как на картинке.Поэтому я почти с самого первого дня программирования для Адоба использую только тройное сравнение
=== и проверяю typeof регулярно. И вам советую.👍4
Forwarded from Дизайн-код Екатеринбурга (Паша Омелёхин)
Генератор адресных табличек — на Продакт-ханте!
Поддержите проект и нас, заходите по ссылке и жмите Upvote 🤚
https://www.producthunt.com/posts/yekaterinburg-address-plate-generator
Поддержите проект и нас, заходите по ссылке и жмите Upvote 🤚
https://www.producthunt.com/posts/yekaterinburg-address-plate-generator
Product Hunt
Yekaterinburg address plate generator: Generate printable PDF files directly in the browser | Product Hunt
The generator allows the creation of PDF files according to the design guidelines for address plates. The generator instantly creates 1 and 2-pages files in CMYK for production or preview. All texts are converted to curves.
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Написал пост про создание генератора адресных табличек Екатеринбурга
Оценить работу, которую генератор моментально и без ошибок делает за дизайнера, можно по ссылке.
И важный момент: как поддерживать базу данных улиц? Ответ тоже есть в посте.
Оценить работу, которую генератор моментально и без ошибок делает за дизайнера, можно по ссылке.
И важный момент: как поддерживать базу данных улиц? Ответ тоже есть в посте.
🔥9⚡2
Сергей Турулин
Написал пост про создание генератора адресных табличек Екатеринбурга Оценить работу, которую генератор моментально и без ошибок делает за дизайнера, можно по ссылке. И важный момент: как поддерживать базу данных улиц? Ответ тоже есть в посте.
Картинки процесса, которые не прикрепились вместе с анимашкой :-(
🔥6⚡2
Элементы дизайна и барьеры
Проблема
Сейчас работаю над проектом, где надо генерить элементы по координатам. А ещё в этом проекте есть подписи списков, когда несколько элементов списка имеют один выносной заголовок. И в обоих этих случаях возможны наложения элементов друг на друга.
Пока эти случаи были единичными, я локально, то есть в самом месте рисования, смещал объекты на возможное расстояние. Но когда ситуация усложнилась (несколько «границ» в разных направлениях), появилось слишком много повторений кода, но с похожими действиями.
Поэтому сделал отдельный модуль «Элементы дизайна и барьеры». Уверен, что это не уникальная разработка, можно было бы нагуглить, но решил сделать свою, потому что в генерации дизайна она точно пригодится ещё не один раз.
Решение — новый модуль
Суть модуля простая: у документа, например pdf-файла, есть место, где возможно пересечение элементов. Я инициализирую модуль, передаю ему элементы дизайна (которые можно двигать), барьеры (которые нельзя двигать) и границы возможного смещения. Элементы дизайна, включая барьеры, не рисуются в этот момент, а как бы складываются в «память файла» — в кэш.
И когда все элементы дизайна созданы и переданы в модуль, выполняется главный метод — запустить смещения. Модуль перебирает все барьеры и элементы дизайна, определяет зоны пересечения. Согласно доступным границам и разрешённым направлениям смещения модуль сам решает, куда попытаться сместить элементы.
Если в результате смещения элементы дизайна всё равно не могут поместиться (например, находятся между двумя барьерами или близко от границы), то выполняется альтернативное (настраиваемое) решение. Зачастую это просто «Не рисовать объект», если разрешают правила дизайна. Но если надо обязательно отрисовать, то можно и сместить барьер, если у него выставлены свои границы смещения. Или «уместить» объект (такое можно делать с текстами — уменьшить размер шрифта).
И после этой всей логики мы рисуем объекты «из кэша». Готово.
Перспектива
Из интересных функций, которые удалось получить после создания модуля, стал механизм сортировки элементов дизайна по их пересечениям с барьерами. То есть чем больше пересекается элемент с барьером, тем раньше надо пытаться его смещать. И после удачного смещения превращать в барьер, чтобы уже следующие элементы не пересекали предыдущие.
В общем, очередная полезная функция, где сотня математических операций в циклах. Но главное — я сделал этот модуль универсальным. Можно запускать и в Адобе (Иллюстратор или Индизайн), и в браузерах. Потому что достаточно, чтобы у передаваемых элементов были свойства x, y, width, height и метод draw().
Проблема
Сейчас работаю над проектом, где надо генерить элементы по координатам. А ещё в этом проекте есть подписи списков, когда несколько элементов списка имеют один выносной заголовок. И в обоих этих случаях возможны наложения элементов друг на друга.
Пока эти случаи были единичными, я локально, то есть в самом месте рисования, смещал объекты на возможное расстояние. Но когда ситуация усложнилась (несколько «границ» в разных направлениях), появилось слишком много повторений кода, но с похожими действиями.
Поэтому сделал отдельный модуль «Элементы дизайна и барьеры». Уверен, что это не уникальная разработка, можно было бы нагуглить, но решил сделать свою, потому что в генерации дизайна она точно пригодится ещё не один раз.
Решение — новый модуль
Суть модуля простая: у документа, например pdf-файла, есть место, где возможно пересечение элементов. Я инициализирую модуль, передаю ему элементы дизайна (которые можно двигать), барьеры (которые нельзя двигать) и границы возможного смещения. Элементы дизайна, включая барьеры, не рисуются в этот момент, а как бы складываются в «память файла» — в кэш.
И когда все элементы дизайна созданы и переданы в модуль, выполняется главный метод — запустить смещения. Модуль перебирает все барьеры и элементы дизайна, определяет зоны пересечения. Согласно доступным границам и разрешённым направлениям смещения модуль сам решает, куда попытаться сместить элементы.
Если в результате смещения элементы дизайна всё равно не могут поместиться (например, находятся между двумя барьерами или близко от границы), то выполняется альтернативное (настраиваемое) решение. Зачастую это просто «Не рисовать объект», если разрешают правила дизайна. Но если надо обязательно отрисовать, то можно и сместить барьер, если у него выставлены свои границы смещения. Или «уместить» объект (такое можно делать с текстами — уменьшить размер шрифта).
И после этой всей логики мы рисуем объекты «из кэша». Готово.
Перспектива
Из интересных функций, которые удалось получить после создания модуля, стал механизм сортировки элементов дизайна по их пересечениям с барьерами. То есть чем больше пересекается элемент с барьером, тем раньше надо пытаться его смещать. И после удачного смещения превращать в барьер, чтобы уже следующие элементы не пересекали предыдущие.
В общем, очередная полезная функция, где сотня математических операций в циклах. Но главное — я сделал этот модуль универсальным. Можно запускать и в Адобе (Иллюстратор или Индизайн), и в браузерах. Потому что достаточно, чтобы у передаваемых элементов были свойства x, y, width, height и метод draw().
🔥4👏2👍1
Forwarded from Код Екатеринбурга (Паша Омелёхин)
💫 Запускаем карту Екатеринбурга!
Когда был построен ваш дом? Как много высоких зданий в центре? Сколько в городе объектов культурного наследия? Где чаще всего происходят ДТП? Чтобы ответить на эти и миллион других вопросов, мы разработали карту Екатеринбурга — сервис, где собраны и визуализированы все данные о городе.
У Екатеринбурга огромное количество интересных и открытых данных, о которых никто не знает. Раньше их было трудно найти, трудно пользоваться и трудно сделать из них выводы. А теперь они все в одном месте! Захо́дите на карту — и тут же попадаете в мир полезной и красивой картографии.
Какие фишки есть у сервиса:
— Скорость и производительность. Карта шустро работает с огромными объёмами данных и не падает.
— Легко добавить новые слои данных.
— Данные автоматически обновляются из источника.
— Красивая визуализация любых данных.
— Подробная карточка объекта.
— И всё это в 3D!
Какие планы
Сегодня мы запускаем бета-версию сервиса. В будущем мы планируем добавить новые слои данных, показывать сразу несколько слоёв, разработать API, визуализировать данные обо всех городах в мире и много чего ещё.
Самое важное
Проект является полностью открытым. Кто угодно может в него законтрибьютить или форкнуть. Заходите на гитхаб.
Итак, ссылка этого лета. Залипнуть на часок: 🗺️ map.ekaterinburg.city
Когда был построен ваш дом? Как много высоких зданий в центре? Сколько в городе объектов культурного наследия? Где чаще всего происходят ДТП? Чтобы ответить на эти и миллион других вопросов, мы разработали карту Екатеринбурга — сервис, где собраны и визуализированы все данные о городе.
У Екатеринбурга огромное количество интересных и открытых данных, о которых никто не знает. Раньше их было трудно найти, трудно пользоваться и трудно сделать из них выводы. А теперь они все в одном месте! Захо́дите на карту — и тут же попадаете в мир полезной и красивой картографии.
Какие фишки есть у сервиса:
— Скорость и производительность. Карта шустро работает с огромными объёмами данных и не падает.
— Легко добавить новые слои данных.
— Данные автоматически обновляются из источника.
— Красивая визуализация любых данных.
— Подробная карточка объекта.
— И всё это в 3D!
Какие планы
Сегодня мы запускаем бета-версию сервиса. В будущем мы планируем добавить новые слои данных, показывать сразу несколько слоёв, разработать API, визуализировать данные обо всех городах в мире и много чего ещё.
Самое важное
Проект является полностью открытым. Кто угодно может в него законтрибьютить или форкнуть. Заходите на гитхаб.
Итак, ссылка этого лета. Залипнуть на часок: 🗺️ map.ekaterinburg.city
🔥7👍1
Каждый квартал я генерю схему «Тысячи пассажиров метро». За 2 с лишним года процесс упростился от кропотливой ручной работы (иногда с калькулятором) до запуска 2 скриптов. Решил написать об эволюции процесса. Про изменения самой схемы (то есть дизайн) тут не будет.
2021 год. Первые появившиеся данные я скачивал в Экселе в виндовой кодировке, конвертировал кодировку с ручной правкой некоторых станций. Названия пишутся в «их» системе неграмотно: заглавные буквы не соблюдаются, буквы «ё» где-то есть, где-то нет. А у Савёловской вообще: на серой линии буква «ё», а на БКЛ — «е». Но это всё просто исправлялось единожды. Потом из Экселя выгружал нужный мне джейсон для Иллюстратора. Про весь этот процесс можно прочитать пост на сайте.
2022 год. Начал качать данные с сайта Москвы в джейсоне и промежуточным скриптом конвертировал «их» данные в свои. Ручные правки остались только в Иллюстраторе: двигал сгенерированные кружочки, потому что данные рисовались на точках станций, а не на некотором расстоянии друг от друга.
2023 год. Теперь я только запускаю 2 скрипта: скачать данные о пассажиропотоке и нарисовать в Иллюстраторе.
Первый скрипт — серверный, с доступом по апи к данным Москвы. Он скачивает нужный квартал в базу данных на сайте metrostat.ru. А мой сайт уже знает всё о станциях и линиях метро, и может посчитать тысячи пассажиров с учётом дат открытия и закрытия станций. Например, на сайте Москвы хранятся данные суммарно за весь квартал, а новые станции БКЛ работали только с открытия в марте. Поэтому надо делить не на 90 дней, а на нужное число дней. Тоже самое с открывающимися после ремонта станциями. Данные по кроссплатформенным станциям тоже учитываются. Клик — и квартальные количества по входу и выходу превращаются в готовый джейсон с суммарными тысячами для запуска в Иллюстраторе.
🔥13❤2👍1
Сергей Турулин
Каждый Новый год мы с друзьями ходим в баню Каждый квартал я генерю схему «Тысячи пассажиров метро». За 2 с лишним года процесс упростился от кропотливой ручной работы (иногда с калькулятором) до запуска 2 скриптов. Решил написать об эволюции процесса. Про…
Продолжение.
Второй скрипт — в Иллюстраторе рисует на местах предыдущих кружочков станций новые кружочки и цифры. Двигать кружочки теперь тоже не надо. Клик — и готово. Из ручных операций в Иллюстраторе остались только кроссплатформенные кружочки, которые я стал делить пополам.
Конечно, после каждой генерации надо руками подтюнить позиции окружностей. Без этого никуда.
Теперь самым долгим процессом стало сохранение схемы в 4 файла: растры разных размеров и пдф (после каждой найденной ошибки 😞). Решил в следующую итерацию сделать это тоже скриптом: экспортировать 4 файла и отправить их через апишку на сайт я могу с помощью экстеншена прямо из Иллюстратора. Апишка на сайте metrostat.ru уже есть. Так что буду ещё упрощать процесс.
И в планах — сделать свг на сайте и добавить на сайт другие города. Если есть какие предложения ещё, пишите. Подумаем.
ps: кстати, эту схему и сайт я делаю без финансирования (а то меня тут спросили про госденьги). Исключительно на энтузиазме. В подвале сайта metrostat.ru есть ссылочка, по которой можно задонатить.
Adobescript
Extension for Adobe Illustrator and/or InDesign | Sergei Turulin — Programmer for Designers
Extension for Adobe Illustrator and/or InDesign. Sergei Turulin — Programmer for Designers
🔥8👍3❤1