params
params - входные параметры запуска плагина (Map<String, Object>). В нём лежат значения, введённые пользователем в форме плагина, и служебные параметры, которые передаёт платформа. params доступен во всех типах плагинов, в том числе внутри form().
Значение поля формы приходит под ключом, равным имени поля (первый аргумент form.add..., см. form):
def form() {
form.addText("Мин. расстояние, мм")
form.addInput("minDistance", [value: "100"])
}
def start() {
def minDistance = (params.get("minDistance") ?: "100") as double
// то же самое: params.minDistance
}
Integer или Double, списки - ArrayList, объекты - Map. Приводите типы явно и задавайте значение по умолчанию на случай, если поле не заполнено.
Поля мультивыбора (модели, этажи, системы, материалы) приходят строкой вида ["АР","КР"], а не списком - декодируйте её через bim.parseOptionValueToList(...).List<String> modelNames = bim.parseOptionValueToList((params.get("models") ?: "") as String)
Служебные ключи
Их кладёт платформа, объявлять в форме не нужно:
| Ключ | Тип плагина | Что это |
|---|---|---|
parentElements, parentOption | Коллизии | цепочка проверок: элементы и режим отбора предыдущего правила (parentOption: 0 - все элементы, 1 - элементы выборки, 2 - прошедшие проверку, 3 - не прошедшие; "-1" - цепочки нет) |
excludedElements, isReportRecalc | Аналитический отчет, Коллизии | пересчёт после исключения элементов пользователем: список UUID-строк исключённых элементов и признак пересчёта |
elementa, elementb | Коллизии | UUID пары элементов для правил «сторона А / сторона Б» (см. bim.getGeometryElementA) |
widgetSettings | Виджеты | сохранённые значения полей окна виджета |
data | Сметы, Ворм | строки сметы (список Map) |
refresh, limitTime | все | признак пересборки плагина и ограничение времени выполнения (строка, секунды) |
parentOption приходит числом, если родительское правило задано, и строкой "-1", если нет. Читайте через строку: Integer.parseInt((params.get("parentOption") ?: "-1").toString()).Временное хранилище
params - обычная карта Groovy, поэтому её можно использовать как временное хранилище на время работы плагина: доступны params.put(key, value) и params.get(key) (или params.key). Данные с одинаковым ключом перезаписываются, после завершения запуска не сохраняются - для хранения между запусками используйте storage.
Пример использования:
def objectToSave = "Объект для сохранения"
params.put("idObjectToSave", objectToSave)
def savedObject = params.get("idObjectToSave")
console.info(savedObject) // => "INFO Объект для сохранения"

