From c68d5246d0a8677df4d31c39e8842726b5c7664d Mon Sep 17 00:00:00 2001 From: ZiWei <131428629+ZiWei09@users.noreply.github.com> Date: Wed, 19 Nov 2025 11:28:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(bioyond):=20=E6=B7=BB=E5=8A=A0=E6=B5=8B?= =?UTF-8?q?=E9=87=8F=E5=B0=8F=E7=93=B6=E4=BB=93=E5=BA=93=E5=92=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BB=93=E5=BA=93=E5=B7=A5=E5=8E=82=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- unilabos/resources/bioyond/decks.py | 12 +- unilabos/resources/bioyond/warehouses.py | 170 +++++++++++++---------- unilabos/resources/warehouse.py | 10 +- 3 files changed, 113 insertions(+), 79 deletions(-) diff --git a/unilabos/resources/bioyond/decks.py b/unilabos/resources/bioyond/decks.py index 17037e84..5572536b 100644 --- a/unilabos/resources/bioyond/decks.py +++ b/unilabos/resources/bioyond/decks.py @@ -15,8 +15,9 @@ from unilabos.resources.bioyond.warehouses import ( bioyond_warehouse_5x1x1, bioyond_warehouse_1x8x4, bioyond_warehouse_reagent_storage, - bioyond_warehouse_liquid_preparation, + # bioyond_warehouse_liquid_preparation, bioyond_warehouse_tipbox_storage, # 新增:Tip盒堆栈 + bioyond_warehouse_density_vial, ) @@ -43,17 +44,20 @@ class BIOYOND_PolymerReactionStation_Deck(Deck): "堆栈1左": bioyond_warehouse_1x4x4("堆栈1左"), # 左侧堆栈: A01~D04 "堆栈1右": bioyond_warehouse_1x4x4_right("堆栈1右"), # 右侧堆栈: A05~D08 "站内试剂存放堆栈": bioyond_warehouse_reagent_storage("站内试剂存放堆栈"), # A01~A02 - "移液站内10%分装液体准备仓库": bioyond_warehouse_liquid_preparation("移液站内10%分装液体准备仓库"), # A01~B04 - "站内Tip盒堆栈": bioyond_warehouse_tipbox_storage("站内Tip盒堆栈"), # A01~B03, 存放枪头盒 + # "移液站内10%分装液体准备仓库": bioyond_warehouse_liquid_preparation("移液站内10%分装液体准备仓库"), # A01~B04 + "站内Tip盒堆栈": bioyond_warehouse_tipbox_storage("站内Tip盒堆栈"), # A01~B03, 存放枪头盒. + "测量小瓶仓库(测密度)": bioyond_warehouse_density_vial("测量小瓶仓库(测密度)"), # A01~B03 } self.warehouse_locations = { "堆栈1左": Coordinate(0.0, 430.0, 0.0), # 左侧位置 "堆栈1右": Coordinate(2500.0, 430.0, 0.0), # 右侧位置 "站内试剂存放堆栈": Coordinate(640.0, 480.0, 0.0), - "移液站内10%分装液体准备仓库": Coordinate(1200.0, 600.0, 0.0), + # "移液站内10%分装液体准备仓库": Coordinate(1200.0, 600.0, 0.0), "站内Tip盒堆栈": Coordinate(300.0, 150.0, 0.0), + "测量小瓶仓库(测密度)": Coordinate(922.0, 552.0, 0.0), } self.warehouses["站内试剂存放堆栈"].rotation = Rotation(z=90) + self.warehouses["测量小瓶仓库(测密度)"].rotation = Rotation(z=270) for warehouse_name, warehouse in self.warehouses.items(): self.assign_child_resource(warehouse, location=self.warehouse_locations[warehouse_name]) diff --git a/unilabos/resources/bioyond/warehouses.py b/unilabos/resources/bioyond/warehouses.py index 31862512..ae9e473d 100644 --- a/unilabos/resources/bioyond/warehouses.py +++ b/unilabos/resources/bioyond/warehouses.py @@ -1,5 +1,6 @@ from unilabos.resources.warehouse import WareHouse, warehouse_factory +# ================ 反应站相关堆栈 ================ def bioyond_warehouse_1x4x4(name: str) -> WareHouse: """创建BioYond 4x4x1仓库 (左侧堆栈: A01~D04) @@ -26,7 +27,6 @@ def bioyond_warehouse_1x4x4(name: str) -> WareHouse: layout="row-major", # ⭐ 改为行优先排序 ) - def bioyond_warehouse_1x4x4_right(name: str) -> WareHouse: """创建BioYond 4x4x1仓库 (右侧堆栈: A05~D08)""" return warehouse_factory( @@ -45,15 +45,35 @@ def bioyond_warehouse_1x4x4_right(name: str) -> WareHouse: layout="row-major", # ⭐ 改为行优先排序 ) - - -def bioyond_warehouse_1x4x2(name: str) -> WareHouse: - """创建BioYond 4x1x2仓库""" +def bioyond_warehouse_density_vial(name: str) -> WareHouse: + """创建测量小瓶仓库(测密度) A01~B03""" return warehouse_factory( name=name, - num_items_x=1, - num_items_y=4, - num_items_z=2, + num_items_x=3, # 3列(01-03) + num_items_y=2, # 2行(A-B) + num_items_z=1, # 1层 + dx=10.0, + dy=10.0, + dz=10.0, + item_dx=40.0, + item_dy=40.0, + item_dz=50.0, + # 用更小的 resource_size 来表现 "小点的孔位" + resource_size_x=30.0, + resource_size_y=30.0, + resource_size_z=12.0, + category="warehouse", + col_offset=0, + layout="row-major", + ) + +def bioyond_warehouse_reagent_storage(name: str) -> WareHouse: + """创建BioYond站内试剂存放堆栈(A01~A02, 1行×2列)""" + return warehouse_factory( + name=name, + num_items_x=2, # 2列(01-02) + num_items_y=1, # 1行(A) + num_items_z=1, # 1层 dx=10.0, dy=10.0, dz=10.0, @@ -61,9 +81,46 @@ def bioyond_warehouse_1x4x2(name: str) -> WareHouse: item_dy=96.0, item_dz=120.0, category="warehouse", - removed_positions=None ) +def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse: + """创建BioYond站内Tip盒堆栈(A01~B03),用于存放枪头盒""" + return warehouse_factory( + name=name, + num_items_x=3, # 3列(01-03) + num_items_y=2, # 2行(A-B) + num_items_z=1, # 1层 + dx=10.0, + dy=10.0, + dz=10.0, + item_dx=137.0, + item_dy=96.0, + item_dz=120.0, + category="warehouse", + col_offset=0, + layout="row-major", + ) + +def bioyond_warehouse_liquid_preparation(name: str) -> WareHouse: + """已弃用,创建BioYond移液站内10%分装液体准备仓库(A01~B04)""" + return warehouse_factory( + name=name, + num_items_x=4, # 4列(01-04) + num_items_y=2, # 2行(A-B) + num_items_z=1, # 1层 + dx=10.0, + dy=10.0, + dz=10.0, + item_dx=137.0, + item_dy=96.0, + item_dz=120.0, + category="warehouse", + col_offset=0, + layout="row-major", + ) + +# ================ 配液站相关堆栈 ================ + def bioyond_warehouse_reagent_stack(name: str) -> WareHouse: """创建BioYond 试剂堆栈 2x4x1 (2行×4列: A01-A04, B01-B04) @@ -88,8 +145,28 @@ def bioyond_warehouse_reagent_stack(name: str) -> WareHouse: ) # 定义bioyond的堆栈 + +# =================== Other =================== + +def bioyond_warehouse_1x4x2(name: str) -> WareHouse: + """创建BioYond 4x2x1仓库""" + return warehouse_factory( + name=name, + num_items_x=1, + num_items_y=4, + num_items_z=2, + dx=10.0, + dy=10.0, + dz=10.0, + item_dx=137.0, + item_dy=96.0, + item_dz=120.0, + category="warehouse", + removed_positions=None + ) + def bioyond_warehouse_1x2x2(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """创建BioYond 1x2x2仓库""" return warehouse_factory( name=name, num_items_x=1, @@ -103,8 +180,9 @@ def bioyond_warehouse_1x2x2(name: str) -> WareHouse: item_dz=120.0, category="warehouse", ) + def bioyond_warehouse_10x1x1(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """创建BioYond 10x1x1仓库""" return warehouse_factory( name=name, num_items_x=10, @@ -118,8 +196,9 @@ def bioyond_warehouse_10x1x1(name: str) -> WareHouse: item_dz=120.0, category="warehouse", ) + def bioyond_warehouse_1x3x3(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """创建BioYond 1x3x3仓库""" return warehouse_factory( name=name, num_items_x=1, @@ -133,8 +212,9 @@ def bioyond_warehouse_1x3x3(name: str) -> WareHouse: item_dz=120.0, category="warehouse", ) + def bioyond_warehouse_2x1x3(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """创建BioYond 2x1x3仓库""" return warehouse_factory( name=name, num_items_x=2, @@ -150,7 +230,7 @@ def bioyond_warehouse_2x1x3(name: str) -> WareHouse: ) def bioyond_warehouse_3x3x1(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """创建BioYond 3x3x1仓库""" return warehouse_factory( name=name, num_items_x=3, @@ -164,8 +244,9 @@ def bioyond_warehouse_3x3x1(name: str) -> WareHouse: item_dz=120.0, category="warehouse", ) + def bioyond_warehouse_5x1x1(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """已弃用:创建BioYond 5x1x1仓库""" return warehouse_factory( name=name, num_items_x=5, @@ -179,8 +260,9 @@ def bioyond_warehouse_5x1x1(name: str) -> WareHouse: item_dz=120.0, category="warehouse", ) + def bioyond_warehouse_3x3x1_2(name: str) -> WareHouse: - """创建BioYond 4x1x4仓库""" + """已弃用:创建BioYond 3x3x1仓库""" return warehouse_factory( name=name, num_items_x=3, @@ -212,7 +294,6 @@ def bioyond_warehouse_liquid_and_lid_handling(name: str) -> WareHouse: removed_positions=None ) - def bioyond_warehouse_1x8x4(name: str) -> WareHouse: """创建BioYond 8x4x1反应站堆栈(A01~D08)""" return warehouse_factory( @@ -228,58 +309,3 @@ def bioyond_warehouse_1x8x4(name: str) -> WareHouse: item_dz=130.0, category="warehouse", ) - - -def bioyond_warehouse_reagent_storage(name: str) -> WareHouse: - """创建BioYond站内试剂存放堆栈(A01~A02, 1行×2列)""" - return warehouse_factory( - name=name, - num_items_x=2, # 2列(01-02) - num_items_y=1, # 1行(A) - num_items_z=1, # 1层 - dx=10.0, - dy=10.0, - dz=10.0, - item_dx=137.0, - item_dy=96.0, - item_dz=120.0, - category="warehouse", - ) - - -def bioyond_warehouse_liquid_preparation(name: str) -> WareHouse: - """创建BioYond移液站内10%分装液体准备仓库(A01~B04)""" - return warehouse_factory( - name=name, - num_items_x=4, # 4列(01-04) - num_items_y=2, # 2行(A-B) - num_items_z=1, # 1层 - dx=10.0, - dy=10.0, - dz=10.0, - item_dx=137.0, - item_dy=96.0, - item_dz=120.0, - category="warehouse", - col_offset=0, - layout="row-major", - ) - - -def bioyond_warehouse_tipbox_storage(name: str) -> WareHouse: - """创建BioYond站内Tip盒堆栈(A01~B03),用于存放枪头盒""" - return warehouse_factory( - name=name, - num_items_x=3, # 3列(01-03) - num_items_y=2, # 2行(A-B) - num_items_z=1, # 1层 - dx=10.0, - dy=10.0, - dz=10.0, - item_dx=137.0, - item_dy=96.0, - item_dz=120.0, - category="warehouse", - col_offset=0, - layout="row-major", - ) diff --git a/unilabos/resources/warehouse.py b/unilabos/resources/warehouse.py index 2d23d5fd..4dcda6d9 100644 --- a/unilabos/resources/warehouse.py +++ b/unilabos/resources/warehouse.py @@ -19,6 +19,9 @@ def warehouse_factory( item_dx: float = 10.0, item_dy: float = 10.0, item_dz: float = 10.0, + resource_size_x: float = 127.0, + resource_size_y: float = 86.0, + resource_size_z: float = 25.0, removed_positions: Optional[List[int]] = None, empty: bool = False, category: str = "warehouse", @@ -50,8 +53,9 @@ def warehouse_factory( _sites = create_homogeneous_resources( klass=ResourceHolder, locations=locations, - resource_size_x=127.0, - resource_size_y=86.0, + resource_size_x=resource_size_x, + resource_size_y=resource_size_y, + resource_size_z=resource_size_z, name_prefix=name, ) len_x, len_y = (num_items_x, num_items_y) if num_items_z == 1 else (num_items_y, num_items_z) if num_items_x == 1 else (num_items_x, num_items_z) @@ -142,4 +146,4 @@ class WareHouse(ItemizedCarrier): def get_rack_at_position(self, row: int, col: int, layer: int): site = self.get_site_by_layer_position(row, col, layer) - return site.resource \ No newline at end of file + return site.resource