@@ -185,6 +185,26 @@ function buildTools(handlers: ReturnType<typeof createToolHandlers>): ToolDefini
185185 )
186186 } ) ,
187187 execute : async ( _id , params ) => wrap ( await handlers . exportGroups ( params ) )
188+ } ) ,
189+ defineTool ( {
190+ name : 'export_selection' ,
191+ label : '按选区导出图层' ,
192+ description :
193+ '导出用户在 Photoshop 中当前选区范围内的目标图层为 PNG。用户需先在 Photoshop 中用选区工具(矩形选框/套索/魔棒等)框选要导出的区域,然后调用此工具。' +
194+ '会读取 PS 中的激活选区,只导出选区内的内容。优先传 targets(来自 search_layers 的命中,含 psId/path/id/name)。' +
195+ '注意:选区必须在 Photoshop 中保持激活状态;如果选区已取消,请让用户重新框选。' ,
196+ parameters : Type . Object ( {
197+ targets : Type . Array (
198+ Type . Object ( {
199+ psId : Type . Optional ( Type . Number ( { description : 'PSD 原生图层 id(定位用)' } ) ) ,
200+ path : Type . String ( { description : '图层名链路径,如 根组/x默认/1' } ) ,
201+ id : Type . String ( { description : '路径式 id,如 0/2/1(psId 缺失时的回退)' } ) ,
202+ name : Type . String ( { description : '末端叶子图层/组名(命名用)' } )
203+ } ) ,
204+ { description : 'search_layers 命中的导出目标列表' }
205+ )
206+ } ) ,
207+ execute : async ( _id , params ) => wrap ( await handlers . exportSelection ( params ) )
188208 } )
189209 ]
190210}
@@ -298,7 +318,13 @@ search_layers 会返回每个命中的 path(图层名链路径)与 psId(PSD 原
298318- 改动会写回并保存到原始 PSD:重命名(rename_groups)、显示/隐藏/删除(mutate_layers)、修改文字(set_text)、合并图层组(merge_groups)作用在原稿上时,都必须先向用户说明并取得同意后才执行,不得擅自进行。删除与合并还会由系统再弹一次确认。
299319- 为了导出而在临时副本上做的同类加工(改文字、合并、隐藏元素等),是导出流程的一部分,不改动原稿,无需征求同意,直接做。
300320修改文字用 set_text(目标须为文字图层);合并图层组用 merge_groups(压平为单个图层,不可逆)。定位这些目标时优先用 search_layers 拿到的 psId,更精确。
301- 当前设计稿信息:\n${ layerSummary } `
321+ 当前设计稿信息:\n${ layerSummary }
322+
323+ 【按选区导出:export_selection】
324+ 用户可能在 Photoshop 中手工框选了某个区域(矩形选框/套索等),然后说"导出这部分的某某图层"。
325+ 此时使用 export_selection,其他规则(传 targets、命名、倍率等)与 export_groups 完全一致。
326+ 关键区别:export_selection 会读取 PS 中当前激活的选区,只导出选区范围内的图层内容。
327+ 使用前务必让用户确认 PS 中选区是激活状态。如果用户说"选区已经取消了/不再需要了",则用普通的 export_groups 导出全幅。`
302328
303329 addLog (
304330 conversationId ,
0 commit comments