Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Mimic — Изменение параметров в редакторе
- В этой теме 42 ответа, 3 участника, последнее обновление 2 месяца, 3 недели назад сделано
manjey73.
-
АвторСообщения
-
27.02.2026 в 09:48 #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пути и значения по умолчанию нет.Ну собственно простой вопрос — возможно менять цвета элементов в РЕДАКТОРЕ, используя привязанные свойства и далее на мнемосхеме изменять эти цвета уже от привязанных каналов. И как?
Интересует возможность изменения Экземпляров фейсплейтов, а не всем подряд.
Одному я должен поменять цвет заливки на желтый, другому на красный и т.д.не интересует цвета фона, границы контейнера, а именно в самом компоненте…
-
Тема изменена 3 недели, 3 дня назад пользователем
Mikhail.
27.02.2026 в 13:05 #42158
MikhailМодераторЧерез редактор меняется свойство фейслейта, которое было создано как Экспортируемое свойство. Затем через скрипт меняется атрибут в SVG. Примером является SunComponent.fp, который выкладывался ранее.
27.02.2026 в 13:10 #42160
manjey73УчастникМне нужно от фейсплейта
1. возможность изменить свойство атрибута SVG ДО вообще попадания на мнемосхему в рантайме, то есть возможность изменить ту же заливку svg с зеленой, например на прозрачную для одного экземпляра на схеме и с зеленой на желтую для другого экземпляра на схеме. И чтобы это было видно в редакторе
2. Привязать к этим свойствам каналы, или не привязывать по ситуации, в зависимости для чего это делается.+ масштабирование экземпляра фейсплейта на мнемосхеме — кстати на этот вопрос вы толком не ответили, сказали только, что вроде это возможно. И тут хотелось бы знать, это возможно и потом вы сделаете, или нет, сожалеете и так сделать нельзя. Если 2-ое, я дальше даже изучать фейсплейт не буду 🙂
27.02.2026 в 22:49 #42167
manjey73УчастникЗапуск представления и скрипта
непосредственно в SVG заливка красная.
В настройках экземпляра faceplate указан цвет желтый (где-то на скрине выше)
При загрузке страницы (3-4 секунда видео) мы видим сперва красный фон, потом срабатывает скрипт и фон становится желтым.Вопросы:
1. как избежать этого артефакта?
2. Как из канала передавать цвет, если потребуется? red, blue, #f0f и т.д. ?28.02.2026 в 11:54 #42169
MikhailМодератор1. До получения данных цвет должен быть означать отсутствие данных. Например, бледно-серый.
2. Я не пробовал, но должна работать передача цвета числом. Попробовать в 16-ричном виде. Если не получится, то скриптом преобразовать. Здесь требуются эксперименты в процессе разработки скрипта.> масштабирование экземпляра фейсплейта на мнемосхеме
Дайте, пожалуйста, ссылку на вопрос и ответ.28.02.2026 в 14:19 #42171
manjey73Участникне реализовано, но без этого, крах босякам, faceplate практически бесполезен 🙂
и такой же функционал в принципе нужен и для Панели. с зажатием или клавиши или установке какой-нибудь галочки при редактировании
28.02.2026 в 22:29 #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 и мы ставим несколько его экземпляров, это должны быть полностью разные компоненты. А тут что-то не так, и они все один компонент.
28.02.2026 в 22:30 #42176
manjey73УчастникЕсть подозрение, что тут примерно та же фигня, что и со стилями — все в общей куче.
01.03.2026 в 12:00 #4217701.03.2026 в 12:03 #42179
manjey73УчастникСкрипт выполняется только для первого элемента, остальные просто подгружены, но при этом отображаются как первые, то есть скрипт меняет первый, а RT Mimic просто его же загружает на место остальных
01.03.2026 в 14:02 #42182
manjey73УчастникЕще некоторые моменты по отношению к фейсплейту.
1. я создал тестовый фейсплейт с 2-мя экспортируемыми свойствами — при установке его на мнемосхему привязок нет, их надо создать. Планируется что в фейсплейтах будет от 40 до 100 экспортируемых свойств = застрелиться 🙂
2. Есть понятие значение по умолчанию для экспортируемого свойства, но сам элемент внутри может быть нарисован с другими параметрами (например для светлой схемы, а я делаю для темной). Еще на этапе редактора должны применяться свойства из экспортируемого, взамен значения по умолчанию.
3. Если у нас не привязан канал, произошла потеря связи и в том же духе, плагин должен подставлять указанные параметры из экспортируемого свойства. а не лепить там 0 или еще что-то. это было бы правильнее.
01.03.2026 в 14:06 #42183
manjey73Участник4. все экспортируемые свойства попадают в РАЗНОЕ?, тут тоже должен быть механизм для группирования по своему усмотрению.
Потому что одни свойства для данных, другие для настройки под цветовую схему, третья для выбора компонента.Пример как в свойствах картинок по условию, но сразу с выбором. Например в одном фейсплейте я создам похожие емкости, или даже не похожие. выбор 1,2,3,4,5
Соответственно поставил фейсплейт на схему, указал 3 и в редакторе сразу идет отображение 3-ей емкости. И при загрузке на мнемосхеме будет сразу 3-яя, и уже на мнемосхеме вставлена сразу 3-яя без применения дополнительных скриптов.-
Ответ изменён 3 месяца назад пользователем
manjey73.
02.03.2026 в 12:33 #42191
MikhailМодераторСмогу ответить на кратко и конкретно сформулированные вопросы по существующему функционалу.
Если есть какие-то ошибки в движке выполнения скриптов на схеме, заведите, пожалуйста, отдельную тему по конкретной ошибке.
По поводу масштабирования фейсплейтов ответ актуален. Если решение требуется срочно, то нужно переходить от обсуждения пожеланий к ТЗ и договорным обязательством.
02.03.2026 в 12:57 #42193
manjey73УчастникЯ вам на ошибки привел пример. Один фейсплейт — Один код — Не работает при установке нескольких экземпляров.
По поводу масштабирования — интересует:
1 — Это возможно? Да/Нет
2. Когда-то будет сделано? Да/Нет🙂 Просто если любой из вопросов Нет, я как бы не буду заморачиваться с дальнейшим изучением этого механизма.
С другой стороны, если ошибки самого Плагина Mimic неизлечимы по каким-то причинам (я про то, что он путает или не работает с экземплярами) то получается и разрабатывать что-то свое бессмысленно. Я же не могу победить механизмы самого плагина.
03.03.2026 в 09:04 #42200
manjey73УчастникНастройки каналов управления, первая пара у меня 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.
дальше я не понимаю, да и не особо хочу, так как это явно где-то вглубине происходящего.— Вы, чего, и конфеты за меня есть будете? (с) 🙂
-
Тема изменена 3 недели, 3 дня назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.