Редактирование размера аннотаций

Главная Форумы Задать вопрос Редактирование размера аннотаций

Помечено: ,

В этой теме 21 ответ, 5 участников, последнее обновление  Nickolay 5 мес., 2 нед. назад.

Просмотр 7 сообщений - с 16 по 22 (из 22 всего)
  • Автор
    Сообщения
  • #7964 Score: 0

    ИваСерж
    Модератор
    96 pts

    Николай, хорошо, что вы проработали свой вариант.Мне кажется, что этот вариант не самый эффективный. Ваша фраза о невозможности изменять семейства не совсем корректна.
    Я предложу свой вариант.
    Ранее вы писали:

    семейство марок невозможно изменять, задавая параметры.

    Мне не нравится слово “семейство”, потому, что мы меняем не семейство а “тип”. Действительно в семействах марок мы не можем создавать параметры экземпляра. Однако параметры типа работают как положено. Т.е. не надо марку одного типа заменить на другой. Например, марку типа “Длинна 20мм” заменить макру этого же семейства, но с типом “Длинна 30мм”. По-моему, гораздо проще изменить тип (мы же это обсуждали прямо в этой теме в Денвером-22). В ответе #7900 Денвер предложил адекватный алгоритм действий. Эффект будет похож на ручную замену типа одной марки на другой тип. Чем не устраивает подобный алгоритм? Зачем придумывать костыли?

    #7969 Score: 0

    Nickolay
    Участник

    ИваСерж, не могу создать такое количество типов, которые подойдут для любой ситуации, т.е. для любого количества символов внутри марки.
    Это значит, что размер должен просчитываться по алгоритму, исходя из размера строки

    #7970 Score: 0

    ИваСерж
    Модератор
    96 pts

    Это почему это? для практической работы достаточно 6-10 типов. Я пользуюсь типами 5,7,10,15,20,25,35 мм. Хватает на все. Делать округлением в 5 мм. Норм будет отрабатывать.

    #7974 Score: 0

    Nickolay
    Участник

    Да дело не только лишь в размерах. Важен так же шрифт внутри. Его размер тоже влияет на высоту, однако эти параметры легче изменять в Annotation Symbol, нежели во всем семействе марок. Они выведены и легкодоступны для редактирования.
    Плюс, я видел как сами люди из конторы пользуются подобными шаблонами. Я же по их заказу делаю

    #8018 Score: 0

    Nickolay
    Участник

    Реализовал. Происходит замена семейства на подгруженное, перенос данных (координаты выноски, самой марки и текст внутри), затем установка ширины.
    Следом появляется новая проблема: идущие подряд новые марки могут наслаиваться на друг друга из-за изменения ширины.
    Думаю, надо написать алгоритм, который будет смещать их по координатам левее/правее и выше/ниже относительно друг друга, дабы между ними было равное расстояние. Значит, нужно преобразование из ширины в футах в формат координат dpi и КАКИМ ТО ОБРАЗОМ определение наслаивания, ( т. е. программа должна работать не с одной маркой, а хотя бы с двумя, и по ширине/координатам вымерять необходимое смещение)
    Перевод, наверное, с помощью команды Unit.
    Думаю, цикл который будет работать с двумя маркам: A и B, B и C, C и D и т.д. Этакий перебор всех.
    Если есть мысли на этот счет, буду рад

     

    #8019 Score: 0

    ИваСерж
    Модератор
    96 pts

    Предлагаю искать пересечения через Баундинг-бокс и фильтры.
    http://thebuildingcoder.typepad.com/blog/2010/12/find-intersecting-elements.html

    Единственный недостаток – баундинг бокс ортогонален. Если сильно захочется вращать примечания под углом – будут сложности. Но для ортогонально располагаемых примечаний – быстро и эффективно.

    #8022 Score: 0

    Nickolay
    Участник

    Bounding box пролетает, потому как он включает в себя семейство целиком, начиная от точки выноски, заканчивая самим коробом марки:

    А нужны координаты именно коробки.
    Я думаю, есть смысл использовать location – координату центра короба марки, от него отсчитать по ширине влево или вправо — это и будет искомые начало и конец.
    Использовать перебор по два элемента, сравнивать и при наслоении двигать их на заданную длину друг от друга

Просмотр 7 сообщений - с 16 по 22 (из 22 всего)

Для ответа в этой теме необходимо авторизоваться.