Mimic — Изменение параметров в редакторе

Стартовая страница Форумы Понять, как работает ПО Мнемосхемы Mimic — Изменение параметров в редакторе

Просмотр 15 сообщений - с 1 по 15 (из 43 всего)
  • Автор
    Сообщения
  • #42153
    manjey73
    Участник

    Имеем ExtraMarcup вставленный в faceplate

    Содержимое разметки

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMinYMin" width="48" height="48">
      <desc>Выключатель мощности ВН</desc>
      <defs>
        <g id="vn" editable="true" edit_style="true">
          <rect id="bodyvn" x="10" y="10" width="28" height="28" style="stroke: #00ff00; stroke-width: 2; <strong>fill: #ff0000</strong>;" />
          <line x1="24" y1="10" x2="24" y2="0" style="stroke: #00ff00; stroke-width: 2;" />
          <line x1="24" y1="38" x2="24" y2="48" style="stroke: #00ff00; stroke-width: 2;" />
        </g>
      </defs>
      <!-- используем определенные ранее группы -->
      <use xlink:href="#vn" x="0" y="0" active="true" />
    </svg>

    Хочу в редакторе менять цвет заливки указанного rect, чтобы при загрузке мнемосхемы был цвет, который я указал в привязке. При этом, чтобы данным цветом можно было управлять, привязав к каналу.

    Скрипт faceplate

    class extends ComponentScript {
    
      domUpdated(args) { }
    
      dataUpdated(args) {
      
      const fon1 = args.component.properties.fon;
      
      args.component.dom.find("#bodyvn")
        .attr("fill", fon1);
        } 
     }

    Имя свойства привязки fon пути и значения по умолчанию нет.

    Скрин
    Тестовый FP

    Ну собственно простой вопрос — возможно менять цвета элементов в РЕДАКТОРЕ, используя привязанные свойства и далее на мнемосхеме изменять эти цвета уже от привязанных каналов. И как?

    Интересует возможность изменения Экземпляров фейсплейтов, а не всем подряд.
    Одному я должен поменять цвет заливки на желтый, другому на красный и т.д.

    не интересует цвета фона, границы контейнера, а именно в самом компоненте…

    • Тема изменена 3 недели, 3 дня назад пользователем Mikhail.
    #42158
    Mikhail
    Модератор

    Через редактор меняется свойство фейслейта, которое было создано как Экспортируемое свойство. Затем через скрипт меняется атрибут в SVG. Примером является SunComponent.fp, который выкладывался ранее.

    #42160
    manjey73
    Участник

    Мне нужно от фейсплейта
    1. возможность изменить свойство атрибута SVG ДО вообще попадания на мнемосхему в рантайме, то есть возможность изменить ту же заливку svg с зеленой, например на прозрачную для одного экземпляра на схеме и с зеленой на желтую для другого экземпляра на схеме. И чтобы это было видно в редакторе
    2. Привязать к этим свойствам каналы, или не привязывать по ситуации, в зависимости для чего это делается.

    + масштабирование экземпляра фейсплейта на мнемосхеме — кстати на этот вопрос вы толком не ответили, сказали только, что вроде это возможно. И тут хотелось бы знать, это возможно и потом вы сделаете, или нет, сожалеете и так сделать нельзя. Если 2-ое, я дальше даже изучать фейсплейт не буду 🙂

    #42167
    manjey73
    Участник

    Запуск представления и скрипта

    непосредственно в SVG заливка красная.
    В настройках экземпляра faceplate указан цвет желтый (где-то на скрине выше)
    При загрузке страницы (3-4 секунда видео) мы видим сперва красный фон, потом срабатывает скрипт и фон становится желтым.

    Вопросы:
    1. как избежать этого артефакта?
    2. Как из канала передавать цвет, если потребуется? red, blue, #f0f и т.д. ?

    #42169
    Mikhail
    Модератор

    1. До получения данных цвет должен быть означать отсутствие данных. Например, бледно-серый.
    2. Я не пробовал, но должна работать передача цвета числом. Попробовать в 16-ричном виде. Если не получится, то скриптом преобразовать. Здесь требуются эксперименты в процессе разработки скрипта.

    > масштабирование экземпляра фейсплейта на мнемосхеме
    Дайте, пожалуйста, ссылку на вопрос и ответ.

    #42171
    manjey73
    Участник

    Масштабирование Faceplate

    не реализовано, но без этого, крах босякам, faceplate практически бесполезен 🙂

    и такой же функционал в принципе нужен и для Панели. с зажатием или клавиши или установке какой-нибудь галочки при редактировании

    • Ответ изменён 3 месяца назад пользователем manjey73.
    • Ответ изменён 3 месяца назад пользователем manjey73.
    #42175
    manjey73
    Участник

    http://176.109.111.174:10008/View/17

    ggg
    321

    Если что, то все 4-ре квадратика это один faceplate но 4-е его экземпляра на главной схеме, при этом с разными настройками.

    2 и 4 вообще без привязок к каналам, 1 и 4 привязаны каждый к своим Fill и Contur Color

    Но воздействие происходит только от первой пары и полностью на все 4-ре….
    SVG вставлен в ExtraMarkup.

    По моей логике, если у нас faceplate и мы ставим несколько его экземпляров, это должны быть полностью разные компоненты. А тут что-то не так, и они все один компонент.

    #42176
    manjey73
    Участник

    Есть подозрение, что тут примерно та же фигня, что и со стилями — все в общей куче.

    #42177
    manjey73
    Участник

    comp 1

    comp 2

    • Ответ изменён 3 месяца назад пользователем manjey73.
    #42179
    manjey73
    Участник

    Скрипт выполняется только для первого элемента, остальные просто подгружены, но при этом отображаются как первые, то есть скрипт меняет первый, а RT Mimic просто его же загружает на место остальных

    #42182
    manjey73
    Участник

    Еще некоторые моменты по отношению к фейсплейту.

    1. я создал тестовый фейсплейт с 2-мя экспортируемыми свойствами — при установке его на мнемосхему привязок нет, их надо создать. Планируется что в фейсплейтах будет от 40 до 100 экспортируемых свойств = застрелиться 🙂

    2. Есть понятие значение по умолчанию для экспортируемого свойства, но сам элемент внутри может быть нарисован с другими параметрами (например для светлой схемы, а я делаю для темной). Еще на этапе редактора должны применяться свойства из экспортируемого, взамен значения по умолчанию.

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

    #42183
    manjey73
    Участник

    4. все экспортируемые свойства попадают в РАЗНОЕ?, тут тоже должен быть механизм для группирования по своему усмотрению.
    Потому что одни свойства для данных, другие для настройки под цветовую схему, третья для выбора компонента.

    Пример как в свойствах картинок по условию, но сразу с выбором. Например в одном фейсплейте я создам похожие емкости, или даже не похожие. выбор 1,2,3,4,5
    Соответственно поставил фейсплейт на схему, указал 3 и в редакторе сразу идет отображение 3-ей емкости. И при загрузке на мнемосхеме будет сразу 3-яя, и уже на мнемосхеме вставлена сразу 3-яя без применения дополнительных скриптов.

    • Ответ изменён 3 месяца назад пользователем manjey73.
    #42191
    Mikhail
    Модератор

    Смогу ответить на кратко и конкретно сформулированные вопросы по существующему функционалу.

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

    По поводу масштабирования фейсплейтов ответ актуален. Если решение требуется срочно, то нужно переходить от обсуждения пожеланий к ТЗ и договорным обязательством.

    #42193
    manjey73
    Участник

    Я вам на ошибки привел пример. Один фейсплейт — Один код — Не работает при установке нескольких экземпляров.

    По поводу масштабирования — интересует:
    1 — Это возможно? Да/Нет
    2. Когда-то будет сделано? Да/Нет

    🙂 Просто если любой из вопросов Нет, я как бы не буду заморачиваться с дальнейшим изучением этого механизма.

    С другой стороны, если ошибки самого Плагина Mimic неизлечимы по каким-то причинам (я про то, что он путает или не работает с экземплярами) то получается и разрабатывать что-то свое бессмысленно. Я же не могу победить механизмы самого плагина.

    #42200
    manjey73
    Участник

    Test Mim

    Test FP

    Настройки каналов управления, первая пара у меня 1303 и 1304 (1-й экземпляр fp на светлом фоне)
    Вторая пара 1305 и 1306 (3-й экземпляр, левый на темном фоне)

    Тип данных каналов Ascii String, формат Строка

    Входная формула DecodeAscii(Val())
    выходная формула WriteStrAscii(CmdDataStr, 1)
    сама формула

    public double WriteStrAscii(string cmdString, int len)
    {
    double val = double.NaN;
    
    for(int a = 0; a < len; a++)
    {
    SetData(CnlNum+a, double.NaN, 0);
    }
    
    int ix = 0;
    for (int i = 0; i < cmdString.Length; i+=8)
    {
    val = EncodeAscii(Substring(cmdString, i, 8));
    SetData(CnlNum + ix, val, 1);
    ix++;
    }
    return 1;
    }
    

    В привязках Элемент данных = Отображаемое значение.

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

    — Вы, чего, и конфеты за меня есть будете? (с) 🙂

Просмотр 15 сообщений - с 1 по 15 (из 43 всего)
  • Для ответа в этой теме необходимо авторизоваться.