Files
Uni-Lab-OS/test/experiments/HT_hiwo.json
Junhan Chang a62a695812 Ready for open source (#47)
* Create app/main API

* create example device

* create ROS backend and example device SDK Wrapper

* Add ROS host and host starting from app.py

* Add gripper device and mock implementation

* add "status_types" & "action_types" to ROS device decorator

* add ActionServer debug example

* [bugfix] complete mock gripper example

* ROS Backend Host for Device action calling and Resource management

* add conda/mamba ENV file

* add host_node communication with app/main.py

* add action message value mappings and converters

* Update ilabos.yaml

* Update issue templates

* example devices.json and resources.json

* Fix Device wrapper to use async property and actions (#7)

* Fix Device wrapper to use async property and actions

* Resolve #1 : support async get methods and actions. Give new examples.

* add both sync/async GRBL controller SDK

* 2 call device actions from appmainpy api to ros hostpy (#8)

* feature: add job

* fix:node start

* feature:add get job status

* fix:get device

* clean

* Resolve #5 device connection diagram and workflow compilation support (#9)

* add syringe pump device and its compilation using device connection diagram

* add RunzeSyringePump real device with ROS2 example

* Prototype machine with 1 pump and 1 CNC

* add ROS2ProtocolNode and related functions

* add ilabos_msgs (to use PumpTransfer action)

* add example device connection graph

* refactor protocol_node code into separate file

* add ROS2SerialNode

* add SerialCommand srv in ilabos_msgs

* add pump_protocol example, and fix bugs

* [fix] serial service: avoid async service deadlock by directly call serial `send_command`

* use SendCmd instead of SingleJointPosition for valve control

* initialize device connection graph when server starts

* Fix #5: async workflow execution (#16)

* add rclpyx and protocol example for async-native workflow

* use async in ROS2ProtocolNode, and host initialization

* add examples of "ros-async" protocol implementation, and `run_in_event_loop` for using native async functions

* use "ros-async" in protocols and device nodes

* fix pump_protocol: push to 0.0 μL

* Envs, docs, and conda recipes (#19)

* update ENV: use python 3.11 and deprecate ros-humble-gazebo-ros

* add ilabos-msgs conda recipe

* Update ilabos.yaml

* fix recipe and env yaml

* Add sphinx docs

* add aichemeco

* add bioyong

* add bioyong

* Support XDL devices & protocols (#20)

* [Feature] support multiple protocols in a single ProtocolNode

* add Junjie's code

* Support "Clean" protocol

* Update Grignard_flow_batchreact_single_pumpvalve.json

* test_grignard_add

* add stir device node and example

* Update device_node.py

add print_publish flag to control the node's log output

* NH4Cl_add

* add "HeaterStirrer" device and "HeatChill" action

* add wait time after each pump action for equilibration

* fix stir

* add Separate protocol

* Refactor Separator device and Stir action

* add rotavap_node

* fix stir

* add chiller node

* Move rinsings into PumpTransfer

* Fix SeparateProtocol under refactored Separator device and Stir action

* Supports automatically add new protocol action_types

* fix PumpTransfer protocol because of rinsing

* Add Rotavap and Chiller devices

* fix SeparateProtocol

* add EvaporateProtocol

* add rotavap devices config

* fix HeaterStirrer and SeparatorController IO

* Fix automatically add new protocol action_types

* Add HeaterStirrer and SeparatorController device config

* fix pump protocols

* Fix Evaporate action

* Update evaporate_protocol.py

* add temp_sensor node and add function remap

* update docs

---------

Co-authored-by: 王俊杰 <1800011822@pku.edu.cn>
Co-authored-by: q434343 <554662886@qq.com>

* fix aichemeco

* [Bugfix] fix Windows conda packaging

* add file upload api

* update dependencies: force to use 3.11 and remove conflict in WIN64 and OSX64

* update dependencies: force to use 3.11 and remove conflict in WIN64 and OSX64

* Create aichemeco_simple.py

* fix

* update

* add aichemeco file

* MQTT [1/2]: action start (#25)

* add mq

* fix

* clean

* add class

* fix excel

* update bioyong

* add api

* fix

---------

Co-authored-by: caok@dp.tech <xiaoyeqiannian@163.com>

* motor & grasp

* Add Grasp motor support and enhance EleGripper class

- Introduced a new motor configuration for Grasp in sjtu.json.
- Updated EleGripper class to inherit from UniversalDriver and added status property.
- Implemented move_and_rotate method for coordinated movement.
- Adjusted threading logic in EleGripper initialization.
- Registered Grasp motor in ROS2 device node configuration.

This commit enhances the motor control capabilities by integrating the Grasp motor and improving the existing EleGripper functionality.

* fix read data lenth

* Update Grasp.py

* MQTT (2/2): publish Device Status, Action Feedback & Results (#27)

* Add bridges in HostNode for device_status publishing

* Add "bridges" selection (fastapi & mqtt) when app start

* add MQ feedback & result publisher, and fix message converter

* fix UUID converting between ROS and MQ

* lint api model.py

* Continuous controllers: PID, MPC, custom controllers etc. (#23)

* add controller config & wrapper

* add controller setup at app.main

* control loop example

* fix com port

* add agv , ur_arm and raman

* MQTT (3/4): Unified Resources and Sync when starting the server (#28)

* update http upload api

* generate uuid when init device

* example resource json

* fix

* add new example full-content json (device, resource, graph)

* fix full-content json and related reading code

* fix

* add json_schema when initialize resources

* fix

* update schema

* refactor heaterstirrer.dalong

* fix

* fix refactor heaterstirrer.dalong

* refactor syringepump.runze: use ml instead of μL

* Update ilabos/ros/host.py

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: 王俊杰 <1800011822@pku.edu.cn>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>

* Distributed initialization with self-organizing network (#29)

* add distributed launching option "--without_host"

* fix

---------

Co-authored-by: 王俊杰 <1800011822@pku.edu.cn>

* Refactor Workstation: Add resource service and tracking (#30)

* move ilabos/ros/rpc to ilabos/device_comms/rpc, and merge bioyond/aichemeco files under /devices

* add Resource srv and message_converter

* move graphio to ilabos/resources

* refactor resources type conversion

* add resource clients in device_node

* add mock resources service

* pass Gripper1 resource test

* update http resource services

* add AGV compile function

* add AGV transfer protocol

* update full mock_gripper edit_id example

* update full mock_gripper edit_id example

* get and update resource also in protocol_node

* mock resource update in AichemecoHiwo

* Create HT_hiwo.json

* add children in resources

* bugfixes

* fix rpc

* add Revvity winprep

---------

Co-authored-by: wjjxxx <43375851+wjjxxx@users.noreply.github.com>
Co-authored-by: 3218923350 <105201755+3218923350@users.noreply.github.com>

* Distributed launch (2/2): distributed resource create (#32)

* add resource_add request to host for slave mode

* add AGV

* fix protocol resources

* optimize host callbacks

* bugfixes

* add revvity registry

---------

Co-authored-by: 王俊杰 <1800011822@pku.edu.cn>
Co-authored-by: wjjxxx <43375851+wjjxxx@users.noreply.github.com>

* Refactor Driver Files Structure (#33)

* Integration with pywinauto & recorder
Added execute run and initialize procdure

* 酶标仪状态检测、使用示例,整体流程待测试

* nivo ready version

* Add HPLC driver and example script

- Introduced HPLCDriver class for managing HPLC device status and operations.
- Implemented device status monitoring and command execution via ROS2 actions.
- Added example script (hplc.py) demonstrating how to run commands on the HPLC device.
- Created PlayerUtil and UniversalDriver classes for shared functionality across devices.
- Refactored NivoDriver to utilize the new UniversalDriver structure.
- Enhanced error handling and process management in the NivoDriver.

* 修复start的错误定位

* hplc tested ok

* relative path to build msgs

* template_driver & jiageng devices

* fetch correct status type and action type

* fix mtype fetch

* gpc bus integration

* ilab build

* remove chs

* recipe rename

* modbus update 1

* json available

* hplc & modbus rewrite

* Update AgilentHPLC.py

hplc datafile reader

* move ilabos/ros/rpc to ilabos/device_comms/rpc, and merge bioyond/aichemeco files under /devices

* modbus分设备

* gpc

* gpc 2

* fix address

* default register node

* fix MainScreenGPC

* add Resource srv and message_converter

* move graphio to ilabos/resources

* refactor resources type conversion

* add resource clients in device_node

* add mock resources service

* pass Gripper1 resource test

* update http resource services

* add AGV compile function

* add AGV transfer protocol

* update recipe.yaml

* update full mock_gripper edit_id example

* update full mock_gripper edit_id example

* get and update resource also in protocol_node

* mock resource update in AichemecoHiwo

* feat: add other jiageng PLC device code

* ilabos compile

* correct format

* correct recipe format

* correct setup.py format

* remove unnecessary files

* remove unnecessary files

* Create HT_hiwo.json

* add children in resources

* hplc support sample_id

* correct hplc sample_id

* correct hplc sample_id

* hplc upload

* fix type hint

* oss upload tested ver

* recipe yaml fix for linux

* update installation yaml

* refactor: moved all driver files according to its feat

* merge main to dev

---------

Co-authored-by: 王俊杰 <2201110460@stu.pku.edu.cn>
Co-authored-by: Junhan Chang <changjh@pku.edu.cn>
Co-authored-by: jiawei <miaojiawei@dp.tech>

* add: NMR LH and RU device control (#34)

* Add Registry for device drivers and Support GraphML (#35)

* read chemputer graphml

* read graphml in app/main

* add devices in ros/devices

* add schema for devices

* read registry directory and initialize when entry from main

* Delete devices.py

* Update add_protocol.md

* delete unecessary files

* feat: 2278 devices registry yaml (#36)

* read chemputer graphml

* read graphml in app/main

* add devices in ros/devices

* add schema for devices

* read registry directory and initialize when entry from main

* Delete devices.py

* add: NMR LH and RU device control

* fix: modify jiageng devices registry

---------

Co-authored-by: Junhan Chang <changjh@pku.edu.cn>

* Device/Resource Registry and GraphML support (#37)

* add resource type conversion to PLR

* add resource registry and test

* add docs

* fix registry

* add solenoid_valve_mock, its registry and test

* fix registry for directly using examples

* add EvacuateAndRefillProtocol and testcases

* allow function sequence call in ACTION

* add read & write & extra_info for hardware_interface

* Update device_node.py

* add solenoid valve

* add doc developer guide yaml

* fixes for starting IK station

* add graphml grouping parser

* fix graphml grouping parser

* add communication edge parser

* fix io solenoid valve

* Update .gitignore

* Update plates.yaml

---------

Co-authored-by: ColumbiaCC <2100011801@stu.pku.edu.cn>

* Uni-Lab Doc v0.2 (#39)

* add Uni-Lab docs

* change doc name

* Dev (#41)

* Integration with pywinauto & recorder
Added execute run and initialize procdure

* 酶标仪状态检测、使用示例,整体流程待测试

* nivo ready version

* Add HPLC driver and example script

- Introduced HPLCDriver class for managing HPLC device status and operations.
- Implemented device status monitoring and command execution via ROS2 actions.
- Added example script (hplc.py) demonstrating how to run commands on the HPLC device.
- Created PlayerUtil and UniversalDriver classes for shared functionality across devices.
- Refactored NivoDriver to utilize the new UniversalDriver structure.
- Enhanced error handling and process management in the NivoDriver.

* 修复start的错误定位

* hplc tested ok

* relative path to build msgs

* template_driver & jiageng devices

* fetch correct status type and action type

* fix mtype fetch

* gpc bus integration

* ilab build

* remove chs

* recipe rename

* modbus update 1

* json available

* hplc & modbus rewrite

* Update AgilentHPLC.py

hplc datafile reader

* move ilabos/ros/rpc to ilabos/device_comms/rpc, and merge bioyond/aichemeco files under /devices

* modbus分设备

* gpc

* gpc 2

* fix address

* default register node

* fix MainScreenGPC

* add Resource srv and message_converter

* move graphio to ilabos/resources

* refactor resources type conversion

* add resource clients in device_node

* add mock resources service

* pass Gripper1 resource test

* update http resource services

* add AGV compile function

* add AGV transfer protocol

* update recipe.yaml

* update full mock_gripper edit_id example

* update full mock_gripper edit_id example

* get and update resource also in protocol_node

* mock resource update in AichemecoHiwo

* feat: add other jiageng PLC device code

* ilabos compile

* correct format

* correct recipe format

* correct setup.py format

* remove unnecessary files

* remove unnecessary files

* Create HT_hiwo.json

* add children in resources

* hplc support sample_id

* correct hplc sample_id

* correct hplc sample_id

* hplc upload

* fix type hint

* oss upload tested ver

* recipe yaml fix for linux

* update installation yaml

* refactor: moved all driver files according to its feat

* merge main to dev

* add HPLC registry and json

* 升级 ros2-distro-mutex 依赖版本至 0.6

* 修改 ros2-distro-mutex 依赖版本为通配符匹配

* 更新 ros-humble-ilabos-msgs 依赖为 robostack-humble 命名空间

* add resource type conversion to PLR

* add resource registry and test

* feat: 更新oss上传

* fix device id

* add docs

* fix registry

* add solenoid_valve_mock, its registry and test

* fix registry for directly using examples

* add EvacuateAndRefillProtocol and testcases

* allow function sequence call in ACTION

* add read & write & extra_info for hardware_interface

* Update device_node.py

* add solenoid valve

* add doc developer guide yaml

* use robostack-staging

* rclpy version test

* lower rclpy

* ensure 0.6* env

* fixes for starting IK station

* add graphml grouping parser

* fix graphml grouping parser

* add communication edge parser

* fix io solenoid valve

* Update .gitignore

* Update plates.yaml

* Feature/device node later init (#40)

* 修改config路径,方便后续打包
增加device_node打印

* 支持plr序列化/init创建

* 统一命名

* import mgr
logger optimize
banner print

* 日志OK

* fix unicorn frame

* banner print

* correct import format

* file path changes

* 取消后补全,在加载设备的时候直接替换

* converter update

* web page update

* 在线device更新,node继承替换

* 修复动作、状态的类型缺失 和 命令提示

* web功能实现结束

* host节点更改完成
新增status时间戳管理
新增每10s动态发现其他node

* ros2类型的节点也应该被包一次

* 修复类型提示

* websocket 动态显示状态

* add workflow & book theme for docs

* add workflow & book theme for docs

* fix workflow build

* fix workflow build

* 理清启动关系

* stm32 example

* mac . name

* device_instance device_cls

* 新增config添加方式
更新mqtt提示

* plr test

* 移动is_host_mode
新增slave_no_host

* 确保config优先修改生效

* fix graph io

* 支持带参数传入

* 支持物料解析

* 支持物料解析

* device为空的时候不进行绑定或初始化

* protocol node new

* protocol node runnable

* protocol node runnable

---------

Co-authored-by: 王俊杰 <2201110460@stu.pku.edu.cn>
Co-authored-by: Junhan Chang <changjh@pku.edu.cn>
Co-authored-by: jiawei <miaojiawei@dp.tech>
Co-authored-by: ColumbiaCC <2100011801@stu.pku.edu.cn>

* Dev (#45)

* Integration with pywinauto & recorder
Added execute run and initialize procdure

* 酶标仪状态检测、使用示例,整体流程待测试

* nivo ready version

* Add HPLC driver and example script

- Introduced HPLCDriver class for managing HPLC device status and operations.
- Implemented device status monitoring and command execution via ROS2 actions.
- Added example script (hplc.py) demonstrating how to run commands on the HPLC device.
- Created PlayerUtil and UniversalDriver classes for shared functionality across devices.
- Refactored NivoDriver to utilize the new UniversalDriver structure.
- Enhanced error handling and process management in the NivoDriver.

* 修复start的错误定位

* hplc tested ok

* relative path to build msgs

* template_driver & jiageng devices

* fetch correct status type and action type

* fix mtype fetch

* gpc bus integration

* ilab build

* remove chs

* recipe rename

* modbus update 1

* json available

* hplc & modbus rewrite

* Update AgilentHPLC.py

hplc datafile reader

* move ilabos/ros/rpc to ilabos/device_comms/rpc, and merge bioyond/aichemeco files under /devices

* modbus分设备

* gpc

* gpc 2

* fix address

* default register node

* fix MainScreenGPC

* add Resource srv and message_converter

* move graphio to ilabos/resources

* refactor resources type conversion

* add resource clients in device_node

* add mock resources service

* pass Gripper1 resource test

* update http resource services

* add AGV compile function

* add AGV transfer protocol

* update recipe.yaml

* update full mock_gripper edit_id example

* update full mock_gripper edit_id example

* get and update resource also in protocol_node

* mock resource update in AichemecoHiwo

* feat: add other jiageng PLC device code

* ilabos compile

* correct format

* correct recipe format

* correct setup.py format

* remove unnecessary files

* remove unnecessary files

* Create HT_hiwo.json

* add children in resources

* hplc support sample_id

* correct hplc sample_id

* correct hplc sample_id

* hplc upload

* fix type hint

* oss upload tested ver

* recipe yaml fix for linux

* update installation yaml

* refactor: moved all driver files according to its feat

* merge main to dev

* add HPLC registry and json

* 升级 ros2-distro-mutex 依赖版本至 0.6

* 修改 ros2-distro-mutex 依赖版本为通配符匹配

* 更新 ros-humble-ilabos-msgs 依赖为 robostack-humble 命名空间

* add resource type conversion to PLR

* add resource registry and test

* feat: 更新oss上传

* fix device id

* add docs

* fix registry

* add solenoid_valve_mock, its registry and test

* fix registry for directly using examples

* add EvacuateAndRefillProtocol and testcases

* allow function sequence call in ACTION

* add read & write & extra_info for hardware_interface

* Update device_node.py

* add solenoid valve

* add doc developer guide yaml

* use robostack-staging

* rclpy version test

* lower rclpy

* ensure 0.6* env

* fixes for starting IK station

* add graphml grouping parser

* fix graphml grouping parser

* add communication edge parser

* fix io solenoid valve

* Update .gitignore

* Update plates.yaml

* Feature/device node later init (#40)

* 修改config路径,方便后续打包
增加device_node打印

* 支持plr序列化/init创建

* 统一命名

* import mgr
logger optimize
banner print

* 日志OK

* fix unicorn frame

* banner print

* correct import format

* file path changes

* 取消后补全,在加载设备的时候直接替换

* converter update

* web page update

* 在线device更新,node继承替换

* 修复动作、状态的类型缺失 和 命令提示

* web功能实现结束

* host节点更改完成
新增status时间戳管理
新增每10s动态发现其他node

* ros2类型的节点也应该被包一次

* 修复类型提示

* websocket 动态显示状态

* add workflow & book theme for docs

* add workflow & book theme for docs

* fix workflow build

* fix workflow build

* 理清启动关系

* stm32 example

* mac . name

* device_instance device_cls

* 新增config添加方式
更新mqtt提示

* plr test

* 移动is_host_mode
新增slave_no_host

* 确保config优先修改生效

* fix graph io

* 支持带参数传入

* 支持物料解析

* 支持物料解析

* device为空的时候不进行绑定或初始化

* protocol node new

* protocol node runnable

* protocol node runnable

* Feature/device node later init (#42)

* 修改config路径,方便后续打包
增加device_node打印

* 支持plr序列化/init创建

* 统一命名

* import mgr
logger optimize
banner print

* 日志OK

* fix unicorn frame

* banner print

* correct import format

* file path changes

* 取消后补全,在加载设备的时候直接替换

* converter update

* web page update

* 在线device更新,node继承替换

* 修复动作、状态的类型缺失 和 命令提示

* web功能实现结束

* host节点更改完成
新增status时间戳管理
新增每10s动态发现其他node

* ros2类型的节点也应该被包一次

* 修复类型提示

* websocket 动态显示状态

* add workflow & book theme for docs

* add workflow & book theme for docs

* fix workflow build

* fix workflow build

* 理清启动关系

* stm32 example

* mac . name

* device_instance device_cls

* 新增config添加方式
更新mqtt提示

* plr test

* 移动is_host_mode
新增slave_no_host

* 确保config优先修改生效

* fix graph io

* 支持带参数传入

* 支持物料解析

* 支持物料解析

* device为空的时候不进行绑定或初始化

* protocol node new

* protocol node runnable

* protocol node runnable

* action

* plr suc

* plr suc!!

* plr suc!!

* plr suc!!

* plr msgs

* Feature/device node later init (#43)

* 修改config路径,方便后续打包
增加device_node打印

* 支持plr序列化/init创建

* 统一命名

* import mgr
logger optimize
banner print

* 日志OK

* fix unicorn frame

* banner print

* correct import format

* file path changes

* 取消后补全,在加载设备的时候直接替换

* converter update

* web page update

* 在线device更新,node继承替换

* 修复动作、状态的类型缺失 和 命令提示

* web功能实现结束

* host节点更改完成
新增status时间戳管理
新增每10s动态发现其他node

* ros2类型的节点也应该被包一次

* 修复类型提示

* websocket 动态显示状态

* add workflow & book theme for docs

* add workflow & book theme for docs

* fix workflow build

* fix workflow build

* 理清启动关系

* stm32 example

* mac . name

* device_instance device_cls

* 新增config添加方式
更新mqtt提示

* plr test

* 移动is_host_mode
新增slave_no_host

* 确保config优先修改生效

* fix graph io

* 支持带参数传入

* 支持物料解析

* 支持物料解析

* device为空的时候不进行绑定或初始化

* protocol node new

* protocol node runnable

* protocol node runnable

* action

* plr suc

* plr suc!!

* plr suc!!

* plr suc!!

* plr msgs

* plr

* action

* plr reg fix

* Feature/device node later init (#44)

* 修改config路径,方便后续打包
增加device_node打印

* 支持plr序列化/init创建

* 统一命名

* import mgr
logger optimize
banner print

* 日志OK

* fix unicorn frame

* banner print

* correct import format

* file path changes

* 取消后补全,在加载设备的时候直接替换

* converter update

* web page update

* 在线device更新,node继承替换

* 修复动作、状态的类型缺失 和 命令提示

* web功能实现结束

* host节点更改完成
新增status时间戳管理
新增每10s动态发现其他node

* ros2类型的节点也应该被包一次

* 修复类型提示

* websocket 动态显示状态

* add workflow & book theme for docs

* add workflow & book theme for docs

* fix workflow build

* fix workflow build

* 理清启动关系

* stm32 example

* mac . name

* device_instance device_cls

* 新增config添加方式
更新mqtt提示

* plr test

* 移动is_host_mode
新增slave_no_host

* 确保config优先修改生效

* fix graph io

* 支持带参数传入

* 支持物料解析

* 支持物料解析

* device为空的时候不进行绑定或初始化

* protocol node new

* protocol node runnable

* protocol node runnable

* action

* plr suc

* plr suc!!

* plr suc!!

* plr suc!!

* plr msgs

* plr

* fix convert error
fix async logic error
added async error print

* new device test

* test resource add

* test resource add

* test resource add

* test resource add

* local env setup

* node type fix
temp fix root_node error
fix convert res from type error

* resource tracker

* fix bug from qhh

* fix bug from qhh

* fix bug from qhh

* fix bug from qhh

* refactor MQTT client logging and connection handling; update group ID in config

* driver_params allow empty

* allow other init param

* fix driver param and enhance type hint

* refactor MQConfig to use double quotes for string literals

* fix wrong function calling

* fix wrong function calling

* fix log for mac

* fix networkx compatibility

* add mqtt loggers

* add action to jsonschema converter

* random client id

* type converter & registry

* correct conversion

* fix action publish only from discovered devices

* add "Bio" tag for action doc generation

* 改进module提示

* Fix doc

* mqtt不连接也可用
性价样例提示

* add docs

* 更新plr test案例

* Update intro.md

* 更新有机案例

* skip

---------

Co-authored-by: Harvey Que <Q-Query@outlook.com>
Co-authored-by: Junhan Chang <1700011741@pku.edu.cn>

---------

Co-authored-by: 王俊杰 <2201110460@stu.pku.edu.cn>
Co-authored-by: Junhan Chang <changjh@pku.edu.cn>
Co-authored-by: jiawei <miaojiawei@dp.tech>
Co-authored-by: ColumbiaCC <2100011801@stu.pku.edu.cn>
Co-authored-by: Harvey Que <Q-Query@outlook.com>
Co-authored-by: Junhan Chang <1700011741@pku.edu.cn>

* Canonicalize before Open Source (#46)

* big big refactor try01

* refactor 02

---------

Co-authored-by: ck <xiaoyeqiannian@163.com>
Co-authored-by: 王俊杰 <1800011822@pku.edu.cn>
Co-authored-by: q434343 <554662886@qq.com>
Co-authored-by: Xuwznln <xuwznln@gmail.com>
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: wjjxxx <43375851+wjjxxx@users.noreply.github.com>
Co-authored-by: 3218923350 <105201755+3218923350@users.noreply.github.com>
Co-authored-by: Xuwznln <1023025701@qq.com>
Co-authored-by: 王俊杰 <2201110460@stu.pku.edu.cn>
Co-authored-by: jiawei <miaojiawei@dp.tech>
Co-authored-by: Jiawei <91898272+jiawei723@users.noreply.github.com>
Co-authored-by: ColumbiaCC <2100011801@stu.pku.edu.cn>
Co-authored-by: Harvey Que <Q-Query@outlook.com>
2025-04-17 15:09:58 +08:00

4806 lines
121 KiB
JSON

{
"nodes": [
{
"id": "AiChemEcoHiWo",
"name": "标智移液工作站",
"parent": null,
"type": "device",
"class": "work_station.aichemeco_hiwo",
"position": {
"x": 620.6111111111111,
"y": 171,
"z": 0
},
"config": {},
"data": {},
"schema": {
"type": "object",
"properties": {}
},
"children": [
"test-ZZ-B02",
"test-FY96-B01",
"test-GL96-2A01"
]
},
{
"id": "test-ZZ-B02",
"name": "96孔中转板",
"type": "plate",
"data": {
"layout": {
"gridCount": 96,
"gridColumnNumber": 12
}
},
"parent": "AiChemEcoHiWo",
"children": [
"test-ZZ-B02-01",
"test-ZZ-B02-02",
"test-ZZ-B02-03",
"test-ZZ-B02-04",
"test-ZZ-B02-05",
"test-ZZ-B02-06",
"test-ZZ-B02-07",
"test-ZZ-B02-08",
"test-ZZ-B02-09",
"test-ZZ-B02-10",
"test-ZZ-B02-11",
"test-ZZ-B02-12",
"test-ZZ-B02-13",
"test-ZZ-B02-14",
"test-ZZ-B02-15",
"test-ZZ-B02-16",
"test-ZZ-B02-17",
"test-ZZ-B02-18",
"test-ZZ-B02-19",
"test-ZZ-B02-20",
"test-ZZ-B02-21",
"test-ZZ-B02-22",
"test-ZZ-B02-23",
"test-ZZ-B02-24",
"test-ZZ-B02-25",
"test-ZZ-B02-26",
"test-ZZ-B02-27",
"test-ZZ-B02-28",
"test-ZZ-B02-29",
"test-ZZ-B02-30",
"test-ZZ-B02-31",
"test-ZZ-B02-32",
"test-ZZ-B02-33",
"test-ZZ-B02-34",
"test-ZZ-B02-35",
"test-ZZ-B02-36",
"test-ZZ-B02-37",
"test-ZZ-B02-38",
"test-ZZ-B02-39",
"test-ZZ-B02-40",
"test-ZZ-B02-41",
"test-ZZ-B02-42",
"test-ZZ-B02-43",
"test-ZZ-B02-44",
"test-ZZ-B02-45",
"test-ZZ-B02-46",
"test-ZZ-B02-47",
"test-ZZ-B02-48",
"test-ZZ-B02-49",
"test-ZZ-B02-50",
"test-ZZ-B02-51",
"test-ZZ-B02-52",
"test-ZZ-B02-53",
"test-ZZ-B02-54",
"test-ZZ-B02-55",
"test-ZZ-B02-56",
"test-ZZ-B02-57",
"test-ZZ-B02-58",
"test-ZZ-B02-59",
"test-ZZ-B02-60",
"test-ZZ-B02-61",
"test-ZZ-B02-62",
"test-ZZ-B02-63",
"test-ZZ-B02-64",
"test-ZZ-B02-65",
"test-ZZ-B02-66",
"test-ZZ-B02-67",
"test-ZZ-B02-68",
"test-ZZ-B02-69",
"test-ZZ-B02-70",
"test-ZZ-B02-71",
"test-ZZ-B02-72",
"test-ZZ-B02-73",
"test-ZZ-B02-74",
"test-ZZ-B02-75",
"test-ZZ-B02-76",
"test-ZZ-B02-77",
"test-ZZ-B02-78",
"test-ZZ-B02-79",
"test-ZZ-B02-80",
"test-ZZ-B02-81",
"test-ZZ-B02-82",
"test-ZZ-B02-83",
"test-ZZ-B02-84",
"test-ZZ-B02-85",
"test-ZZ-B02-86",
"test-ZZ-B02-87",
"test-ZZ-B02-88",
"test-ZZ-B02-89",
"test-ZZ-B02-90",
"test-ZZ-B02-91",
"test-ZZ-B02-92",
"test-ZZ-B02-93",
"test-ZZ-B02-94",
"test-ZZ-B02-95",
"test-ZZ-B02-96"
]
},
{
"id": "test-ZZ-B02-01",
"name": "test-ZZ-B02-01",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CuBr2",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-02",
"name": "test-ZZ-B02-02",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CuBr-SMe2",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-03",
"name": "test-ZZ-B02-03",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "IPrCuCl",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-04",
"name": "test-ZZ-B02-04",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "Cu(MeCN)4PF6",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-05",
"name": "test-ZZ-B02-05",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "[CuI2NBu4]2",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-06",
"name": "test-ZZ-B02-06",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CuCl2",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-07",
"name": "test-ZZ-B02-07",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CuCl2",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-08",
"name": "test-ZZ-B02-08",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 0,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "[CuI2NBu4]2",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-09",
"name": "test-ZZ-B02-09",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC#N",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-10",
"name": "test-ZZ-B02-10",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC1=CC=CC=C1",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-11",
"name": "test-ZZ-B02-11",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC#N",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-12",
"name": "test-ZZ-B02-12",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC#N",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-13",
"name": "test-ZZ-B02-13",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "O=C(C)OCC",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-14",
"name": "test-ZZ-B02-14",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC#N",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-15",
"name": "test-ZZ-B02-15",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC#N",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-16",
"name": "test-ZZ-B02-16",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 1,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC#N",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-17",
"name": "test-ZZ-B02-17",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC(C)([O-])C",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-18",
"name": "test-ZZ-B02-18",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CCN",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-19",
"name": "test-ZZ-B02-19",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "C1COCCN1",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-20",
"name": "test-ZZ-B02-20",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "C1CCN2CCCN=C2CC1",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-21",
"name": "test-ZZ-B02-21",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CC(C)([O-])C",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-22",
"name": "test-ZZ-B02-22",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "C1COCCN1",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-23",
"name": "test-ZZ-B02-23",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "C1CCCCN1",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-24",
"name": "test-ZZ-B02-24",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 2,
"z": 0
},
"data": {
"liquid": [
{
"liquid_type": "CN(C)C1=CC=NC=C1",
"liquid_volume": "100"
}
]
},
"children": []
},
{
"id": "test-ZZ-B02-25",
"name": "test-ZZ-B02-25",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-26",
"name": "test-ZZ-B02-26",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-27",
"name": "test-ZZ-B02-27",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-28",
"name": "test-ZZ-B02-28",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-29",
"name": "test-ZZ-B02-29",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-30",
"name": "test-ZZ-B02-30",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-31",
"name": "test-ZZ-B02-31",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-32",
"name": "test-ZZ-B02-32",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-33",
"name": "test-ZZ-B02-33",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-34",
"name": "test-ZZ-B02-34",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-35",
"name": "test-ZZ-B02-35",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-36",
"name": "test-ZZ-B02-36",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-37",
"name": "test-ZZ-B02-37",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-38",
"name": "test-ZZ-B02-38",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-39",
"name": "test-ZZ-B02-39",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-40",
"name": "test-ZZ-B02-40",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-41",
"name": "test-ZZ-B02-41",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-42",
"name": "test-ZZ-B02-42",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-43",
"name": "test-ZZ-B02-43",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-44",
"name": "test-ZZ-B02-44",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-45",
"name": "test-ZZ-B02-45",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-46",
"name": "test-ZZ-B02-46",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-47",
"name": "test-ZZ-B02-47",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-48",
"name": "test-ZZ-B02-48",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-49",
"name": "test-ZZ-B02-49",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-50",
"name": "test-ZZ-B02-50",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-51",
"name": "test-ZZ-B02-51",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-52",
"name": "test-ZZ-B02-52",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-53",
"name": "test-ZZ-B02-53",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-54",
"name": "test-ZZ-B02-54",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-55",
"name": "test-ZZ-B02-55",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-56",
"name": "test-ZZ-B02-56",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-57",
"name": "test-ZZ-B02-57",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-58",
"name": "test-ZZ-B02-58",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-59",
"name": "test-ZZ-B02-59",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-60",
"name": "test-ZZ-B02-60",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-61",
"name": "test-ZZ-B02-61",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-62",
"name": "test-ZZ-B02-62",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-63",
"name": "test-ZZ-B02-63",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-64",
"name": "test-ZZ-B02-64",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-65",
"name": "test-ZZ-B02-65",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-66",
"name": "test-ZZ-B02-66",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-67",
"name": "test-ZZ-B02-67",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-68",
"name": "test-ZZ-B02-68",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-69",
"name": "test-ZZ-B02-69",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-70",
"name": "test-ZZ-B02-70",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-71",
"name": "test-ZZ-B02-71",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-72",
"name": "test-ZZ-B02-72",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-73",
"name": "test-ZZ-B02-73",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-74",
"name": "test-ZZ-B02-74",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-75",
"name": "test-ZZ-B02-75",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-76",
"name": "test-ZZ-B02-76",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-77",
"name": "test-ZZ-B02-77",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-78",
"name": "test-ZZ-B02-78",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-79",
"name": "test-ZZ-B02-79",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-80",
"name": "test-ZZ-B02-80",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-81",
"name": "test-ZZ-B02-81",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-82",
"name": "test-ZZ-B02-82",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-83",
"name": "test-ZZ-B02-83",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-84",
"name": "test-ZZ-B02-84",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-85",
"name": "test-ZZ-B02-85",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-86",
"name": "test-ZZ-B02-86",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-87",
"name": "test-ZZ-B02-87",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-88",
"name": "test-ZZ-B02-88",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-89",
"name": "test-ZZ-B02-89",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 0,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-90",
"name": "test-ZZ-B02-90",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 1,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-91",
"name": "test-ZZ-B02-91",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 2,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-92",
"name": "test-ZZ-B02-92",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 3,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-93",
"name": "test-ZZ-B02-93",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 4,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-94",
"name": "test-ZZ-B02-94",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 5,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-95",
"name": "test-ZZ-B02-95",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 6,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-ZZ-B02-96",
"name": "test-ZZ-B02-96",
"type": "container",
"parent": "test-ZZ-B02",
"position": {
"x": 7,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01",
"name": "96孔反应板",
"type": "plate",
"parent": "AiChemEcoHiWo",
"data": {
"layout": {
"gridCount": 96,
"gridColumnNumber": 12
}
},
"children": [
"test-FY96-B01-01",
"test-FY96-B01-02",
"test-FY96-B01-03",
"test-FY96-B01-04",
"test-FY96-B01-05",
"test-FY96-B01-06",
"test-FY96-B01-07",
"test-FY96-B01-08",
"test-FY96-B01-09",
"test-FY96-B01-10",
"test-FY96-B01-11",
"test-FY96-B01-12",
"test-FY96-B01-13",
"test-FY96-B01-14",
"test-FY96-B01-15",
"test-FY96-B01-16",
"test-FY96-B01-17",
"test-FY96-B01-18",
"test-FY96-B01-19",
"test-FY96-B01-20",
"test-FY96-B01-21",
"test-FY96-B01-22",
"test-FY96-B01-23",
"test-FY96-B01-24",
"test-FY96-B01-25",
"test-FY96-B01-26",
"test-FY96-B01-27",
"test-FY96-B01-28",
"test-FY96-B01-29",
"test-FY96-B01-30",
"test-FY96-B01-31",
"test-FY96-B01-32",
"test-FY96-B01-33",
"test-FY96-B01-34",
"test-FY96-B01-35",
"test-FY96-B01-36",
"test-FY96-B01-37",
"test-FY96-B01-38",
"test-FY96-B01-39",
"test-FY96-B01-40",
"test-FY96-B01-41",
"test-FY96-B01-42",
"test-FY96-B01-43",
"test-FY96-B01-44",
"test-FY96-B01-45",
"test-FY96-B01-46",
"test-FY96-B01-47",
"test-FY96-B01-48",
"test-FY96-B01-49",
"test-FY96-B01-50",
"test-FY96-B01-51",
"test-FY96-B01-52",
"test-FY96-B01-53",
"test-FY96-B01-54",
"test-FY96-B01-55",
"test-FY96-B01-56",
"test-FY96-B01-57",
"test-FY96-B01-58",
"test-FY96-B01-59",
"test-FY96-B01-60",
"test-FY96-B01-61",
"test-FY96-B01-62",
"test-FY96-B01-63",
"test-FY96-B01-64",
"test-FY96-B01-65",
"test-FY96-B01-66",
"test-FY96-B01-67",
"test-FY96-B01-68",
"test-FY96-B01-69",
"test-FY96-B01-70",
"test-FY96-B01-71",
"test-FY96-B01-72",
"test-FY96-B01-73",
"test-FY96-B01-74",
"test-FY96-B01-75",
"test-FY96-B01-76",
"test-FY96-B01-77",
"test-FY96-B01-78",
"test-FY96-B01-79",
"test-FY96-B01-80",
"test-FY96-B01-81",
"test-FY96-B01-82",
"test-FY96-B01-83",
"test-FY96-B01-84",
"test-FY96-B01-85",
"test-FY96-B01-86",
"test-FY96-B01-87",
"test-FY96-B01-88",
"test-FY96-B01-89",
"test-FY96-B01-90",
"test-FY96-B01-91",
"test-FY96-B01-92",
"test-FY96-B01-93",
"test-FY96-B01-94",
"test-FY96-B01-95",
"test-FY96-B01-96"
]
},
{
"id": "test-FY96-B01-01",
"name": "test-FY96-B01-01",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-01",
"children": []
},
{
"id": "test-FY96-B01-02",
"name": "test-FY96-B01-02",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-02",
"children": []
},
{
"id": "test-FY96-B01-03",
"name": "test-FY96-B01-03",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-03",
"children": []
},
{
"id": "test-FY96-B01-04",
"name": "test-FY96-B01-04",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-04",
"children": []
},
{
"id": "test-FY96-B01-05",
"name": "test-FY96-B01-05",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-05",
"children": []
},
{
"id": "test-FY96-B01-06",
"name": "test-FY96-B01-06",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-06",
"children": []
},
{
"id": "test-FY96-B01-07",
"name": "test-FY96-B01-07",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-07",
"children": []
},
{
"id": "test-FY96-B01-08",
"name": "test-FY96-B01-08",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"sample_id": "20250123-rxn-08",
"children": []
},
{
"id": "test-FY96-B01-09",
"name": "test-FY96-B01-09",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-10",
"name": "test-FY96-B01-10",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-11",
"name": "test-FY96-B01-11",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-12",
"name": "test-FY96-B01-12",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-13",
"name": "test-FY96-B01-13",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-14",
"name": "test-FY96-B01-14",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-15",
"name": "test-FY96-B01-15",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-16",
"name": "test-FY96-B01-16",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-17",
"name": "test-FY96-B01-17",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-18",
"name": "test-FY96-B01-18",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-19",
"name": "test-FY96-B01-19",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-20",
"name": "test-FY96-B01-20",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-21",
"name": "test-FY96-B01-21",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-22",
"name": "test-FY96-B01-22",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-23",
"name": "test-FY96-B01-23",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-24",
"name": "test-FY96-B01-24",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-25",
"name": "test-FY96-B01-25",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-26",
"name": "test-FY96-B01-26",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-27",
"name": "test-FY96-B01-27",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-28",
"name": "test-FY96-B01-28",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-29",
"name": "test-FY96-B01-29",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-30",
"name": "test-FY96-B01-30",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-31",
"name": "test-FY96-B01-31",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-32",
"name": "test-FY96-B01-32",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-33",
"name": "test-FY96-B01-33",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-34",
"name": "test-FY96-B01-34",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-35",
"name": "test-FY96-B01-35",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-36",
"name": "test-FY96-B01-36",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-37",
"name": "test-FY96-B01-37",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-38",
"name": "test-FY96-B01-38",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-39",
"name": "test-FY96-B01-39",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-40",
"name": "test-FY96-B01-40",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-41",
"name": "test-FY96-B01-41",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-42",
"name": "test-FY96-B01-42",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-43",
"name": "test-FY96-B01-43",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-44",
"name": "test-FY96-B01-44",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-45",
"name": "test-FY96-B01-45",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-46",
"name": "test-FY96-B01-46",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-47",
"name": "test-FY96-B01-47",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-48",
"name": "test-FY96-B01-48",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-49",
"name": "test-FY96-B01-49",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-50",
"name": "test-FY96-B01-50",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-51",
"name": "test-FY96-B01-51",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-52",
"name": "test-FY96-B01-52",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-53",
"name": "test-FY96-B01-53",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-54",
"name": "test-FY96-B01-54",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-55",
"name": "test-FY96-B01-55",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-56",
"name": "test-FY96-B01-56",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-57",
"name": "test-FY96-B01-57",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-58",
"name": "test-FY96-B01-58",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-59",
"name": "test-FY96-B01-59",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-60",
"name": "test-FY96-B01-60",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-61",
"name": "test-FY96-B01-61",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-62",
"name": "test-FY96-B01-62",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-63",
"name": "test-FY96-B01-63",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-64",
"name": "test-FY96-B01-64",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-65",
"name": "test-FY96-B01-65",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-66",
"name": "test-FY96-B01-66",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-67",
"name": "test-FY96-B01-67",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-68",
"name": "test-FY96-B01-68",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-69",
"name": "test-FY96-B01-69",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-70",
"name": "test-FY96-B01-70",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-71",
"name": "test-FY96-B01-71",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-72",
"name": "test-FY96-B01-72",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-73",
"name": "test-FY96-B01-73",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-74",
"name": "test-FY96-B01-74",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-75",
"name": "test-FY96-B01-75",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-76",
"name": "test-FY96-B01-76",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-77",
"name": "test-FY96-B01-77",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-78",
"name": "test-FY96-B01-78",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-79",
"name": "test-FY96-B01-79",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-80",
"name": "test-FY96-B01-80",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-81",
"name": "test-FY96-B01-81",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-82",
"name": "test-FY96-B01-82",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-83",
"name": "test-FY96-B01-83",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-84",
"name": "test-FY96-B01-84",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-85",
"name": "test-FY96-B01-85",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-86",
"name": "test-FY96-B01-86",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-87",
"name": "test-FY96-B01-87",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-88",
"name": "test-FY96-B01-88",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-89",
"name": "test-FY96-B01-89",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 0,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-90",
"name": "test-FY96-B01-90",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 1,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-91",
"name": "test-FY96-B01-91",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 2,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-92",
"name": "test-FY96-B01-92",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 3,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-93",
"name": "test-FY96-B01-93",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 4,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-94",
"name": "test-FY96-B01-94",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 5,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-95",
"name": "test-FY96-B01-95",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 6,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-FY96-B01-96",
"name": "test-FY96-B01-96",
"type": "container",
"parent": "test-FY96-B01",
"position": {
"x": 7,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01",
"name": "96孔过滤板",
"type": "plate",
"parent": "AiChemEcoHiWo",
"data": {
"layout": {
"gridCount": 96,
"gridColumnNumber": 12
}
},
"children": [
"test-GL96-2A01-01",
"test-GL96-2A01-02",
"test-GL96-2A01-03",
"test-GL96-2A01-04",
"test-GL96-2A01-05",
"test-GL96-2A01-06",
"test-GL96-2A01-07",
"test-GL96-2A01-08",
"test-GL96-2A01-09",
"test-GL96-2A01-10",
"test-GL96-2A01-11",
"test-GL96-2A01-12",
"test-GL96-2A01-13",
"test-GL96-2A01-14",
"test-GL96-2A01-15",
"test-GL96-2A01-16",
"test-GL96-2A01-17",
"test-GL96-2A01-18",
"test-GL96-2A01-19",
"test-GL96-2A01-20",
"test-GL96-2A01-21",
"test-GL96-2A01-22",
"test-GL96-2A01-23",
"test-GL96-2A01-24",
"test-GL96-2A01-25",
"test-GL96-2A01-26",
"test-GL96-2A01-27",
"test-GL96-2A01-28",
"test-GL96-2A01-29",
"test-GL96-2A01-30",
"test-GL96-2A01-31",
"test-GL96-2A01-32",
"test-GL96-2A01-33",
"test-GL96-2A01-34",
"test-GL96-2A01-35",
"test-GL96-2A01-36",
"test-GL96-2A01-37",
"test-GL96-2A01-38",
"test-GL96-2A01-39",
"test-GL96-2A01-40",
"test-GL96-2A01-41",
"test-GL96-2A01-42",
"test-GL96-2A01-43",
"test-GL96-2A01-44",
"test-GL96-2A01-45",
"test-GL96-2A01-46",
"test-GL96-2A01-47",
"test-GL96-2A01-48",
"test-GL96-2A01-49",
"test-GL96-2A01-50",
"test-GL96-2A01-51",
"test-GL96-2A01-52",
"test-GL96-2A01-53",
"test-GL96-2A01-54",
"test-GL96-2A01-55",
"test-GL96-2A01-56",
"test-GL96-2A01-57",
"test-GL96-2A01-58",
"test-GL96-2A01-59",
"test-GL96-2A01-60",
"test-GL96-2A01-61",
"test-GL96-2A01-62",
"test-GL96-2A01-63",
"test-GL96-2A01-64",
"test-GL96-2A01-65",
"test-GL96-2A01-66",
"test-GL96-2A01-67",
"test-GL96-2A01-68",
"test-GL96-2A01-69",
"test-GL96-2A01-70",
"test-GL96-2A01-71",
"test-GL96-2A01-72",
"test-GL96-2A01-73",
"test-GL96-2A01-74",
"test-GL96-2A01-75",
"test-GL96-2A01-76",
"test-GL96-2A01-77",
"test-GL96-2A01-78",
"test-GL96-2A01-79",
"test-GL96-2A01-80",
"test-GL96-2A01-81",
"test-GL96-2A01-82",
"test-GL96-2A01-83",
"test-GL96-2A01-84",
"test-GL96-2A01-85",
"test-GL96-2A01-86",
"test-GL96-2A01-87",
"test-GL96-2A01-88",
"test-GL96-2A01-89",
"test-GL96-2A01-90",
"test-GL96-2A01-91",
"test-GL96-2A01-92",
"test-GL96-2A01-93",
"test-GL96-2A01-94",
"test-GL96-2A01-95",
"test-GL96-2A01-96"
]
},
{
"id": "test-GL96-2A01-01",
"name": "test-GL96-2A01-01",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-02",
"name": "test-GL96-2A01-02",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-03",
"name": "test-GL96-2A01-03",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-04",
"name": "test-GL96-2A01-04",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-05",
"name": "test-GL96-2A01-05",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-06",
"name": "test-GL96-2A01-06",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-07",
"name": "test-GL96-2A01-07",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-08",
"name": "test-GL96-2A01-08",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 0,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-09",
"name": "test-GL96-2A01-09",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-10",
"name": "test-GL96-2A01-10",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-11",
"name": "test-GL96-2A01-11",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-12",
"name": "test-GL96-2A01-12",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-13",
"name": "test-GL96-2A01-13",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-14",
"name": "test-GL96-2A01-14",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-15",
"name": "test-GL96-2A01-15",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-16",
"name": "test-GL96-2A01-16",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 1,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-17",
"name": "test-GL96-2A01-17",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-18",
"name": "test-GL96-2A01-18",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-19",
"name": "test-GL96-2A01-19",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-20",
"name": "test-GL96-2A01-20",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-21",
"name": "test-GL96-2A01-21",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-22",
"name": "test-GL96-2A01-22",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-23",
"name": "test-GL96-2A01-23",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-24",
"name": "test-GL96-2A01-24",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 2,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-25",
"name": "test-GL96-2A01-25",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-26",
"name": "test-GL96-2A01-26",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-27",
"name": "test-GL96-2A01-27",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-28",
"name": "test-GL96-2A01-28",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-29",
"name": "test-GL96-2A01-29",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-30",
"name": "test-GL96-2A01-30",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-31",
"name": "test-GL96-2A01-31",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-32",
"name": "test-GL96-2A01-32",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 3,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-33",
"name": "test-GL96-2A01-33",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-34",
"name": "test-GL96-2A01-34",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-35",
"name": "test-GL96-2A01-35",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-36",
"name": "test-GL96-2A01-36",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-37",
"name": "test-GL96-2A01-37",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-38",
"name": "test-GL96-2A01-38",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-39",
"name": "test-GL96-2A01-39",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-40",
"name": "test-GL96-2A01-40",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 4,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-41",
"name": "test-GL96-2A01-41",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-42",
"name": "test-GL96-2A01-42",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-43",
"name": "test-GL96-2A01-43",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-44",
"name": "test-GL96-2A01-44",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-45",
"name": "test-GL96-2A01-45",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-46",
"name": "test-GL96-2A01-46",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-47",
"name": "test-GL96-2A01-47",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-48",
"name": "test-GL96-2A01-48",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 5,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-49",
"name": "test-GL96-2A01-49",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-50",
"name": "test-GL96-2A01-50",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-51",
"name": "test-GL96-2A01-51",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-52",
"name": "test-GL96-2A01-52",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-53",
"name": "test-GL96-2A01-53",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-54",
"name": "test-GL96-2A01-54",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-55",
"name": "test-GL96-2A01-55",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-56",
"name": "test-GL96-2A01-56",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 6,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-57",
"name": "test-GL96-2A01-57",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-58",
"name": "test-GL96-2A01-58",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-59",
"name": "test-GL96-2A01-59",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-60",
"name": "test-GL96-2A01-60",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-61",
"name": "test-GL96-2A01-61",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-62",
"name": "test-GL96-2A01-62",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-63",
"name": "test-GL96-2A01-63",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-64",
"name": "test-GL96-2A01-64",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 7,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-65",
"name": "test-GL96-2A01-65",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-66",
"name": "test-GL96-2A01-66",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-67",
"name": "test-GL96-2A01-67",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-68",
"name": "test-GL96-2A01-68",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-69",
"name": "test-GL96-2A01-69",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-70",
"name": "test-GL96-2A01-70",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-71",
"name": "test-GL96-2A01-71",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-72",
"name": "test-GL96-2A01-72",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 8,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-73",
"name": "test-GL96-2A01-73",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-74",
"name": "test-GL96-2A01-74",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-75",
"name": "test-GL96-2A01-75",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-76",
"name": "test-GL96-2A01-76",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-77",
"name": "test-GL96-2A01-77",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-78",
"name": "test-GL96-2A01-78",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-79",
"name": "test-GL96-2A01-79",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-80",
"name": "test-GL96-2A01-80",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 9,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-81",
"name": "test-GL96-2A01-81",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-82",
"name": "test-GL96-2A01-82",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-83",
"name": "test-GL96-2A01-83",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-84",
"name": "test-GL96-2A01-84",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-85",
"name": "test-GL96-2A01-85",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-86",
"name": "test-GL96-2A01-86",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-87",
"name": "test-GL96-2A01-87",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-88",
"name": "test-GL96-2A01-88",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 10,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-89",
"name": "test-GL96-2A01-89",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 0,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-90",
"name": "test-GL96-2A01-90",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 1,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-91",
"name": "test-GL96-2A01-91",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 2,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-92",
"name": "test-GL96-2A01-92",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 3,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-93",
"name": "test-GL96-2A01-93",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 4,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-94",
"name": "test-GL96-2A01-94",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 5,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-95",
"name": "test-GL96-2A01-95",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 6,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
},
{
"id": "test-GL96-2A01-96",
"name": "test-GL96-2A01-96",
"type": "container",
"parent": "test-GL96-2A01",
"position": {
"x": 7,
"y": 11,
"z": 0
},
"data": {
"liquid": []
},
"children": []
}
],
"links": []
}