1616
1717
1818EXTRA_CLASS = "unilabos_resource_class"
19+ FRONTEND_POSE_EXTRA = "unilabos_frontend_pose_extra"
1920EXTRA_SAMPLE_UUID = "sample_uuid"
2021EXTRA_UNILABOS_SAMPLE_UUID = "unilabos_sample_uuid"
2122
@@ -74,6 +75,14 @@ class ResourceDictPositionObject(BaseModel):
7475 z : float = Field (description = "Z coordinate" , default = 0.0 )
7576
7677
78+ class ResourceDictPoseExtraObjectType (BaseModel ):
79+ z_index : int
80+
81+
82+ class ResourceDictPoseExtraObject (BaseModel ):
83+ z_index : Optional [int ] = Field (alias = "zIndex" , default = None )
84+
85+
7786class ResourceDictPositionType (TypedDict ):
7887 size : ResourceDictPositionSizeType
7988 scale : ResourceDictPositionScaleType
@@ -100,6 +109,7 @@ class ResourceDictPosition(BaseModel):
100109 cross_section_type : Literal ["rectangle" , "circle" , "rounded_rectangle" ] = Field (
101110 description = "Cross section type" , default = "rectangle"
102111 )
112+ extra : Optional [ResourceDictPoseExtraObject ] = Field (description = "Extra data" , default = None )
103113
104114
105115class ResourceDictType (TypedDict ):
@@ -463,6 +473,7 @@ def resource_plr_inner(
463473 "position3d" : raw_pos ,
464474 "rotation" : d ["rotation" ],
465475 "cross_section_type" : d .get ("cross_section_type" , "rectangle" ),
476+ "extra" : extra .get (FRONTEND_POSE_EXTRA )
466477 }
467478
468479 # 先构建当前节点的字典(不包含children)
@@ -548,6 +559,7 @@ def collect_node_data(node: ResourceDictInstance, name_to_uuid: dict, all_states
548559 name_to_uuid [node .res_content .name ] = node .res_content .uuid
549560 all_states [node .res_content .name ] = node .res_content .data
550561 name_to_extra [node .res_content .name ] = node .res_content .extra
562+ name_to_extra [node .res_content .name ][FRONTEND_POSE_EXTRA ] = node .res_content .pose .extra
551563 name_to_extra [node .res_content .name ][EXTRA_CLASS ] = node .res_content .klass
552564 for child in node .children :
553565 collect_node_data (child , name_to_uuid , all_states , name_to_extra )
0 commit comments