diff --git a/src/Add-on/HighlightNode.ts b/src/Add-on/HighlightNode.ts index eebfe7180..102c03a19 100644 --- a/src/Add-on/HighlightNode.ts +++ b/src/Add-on/HighlightNode.ts @@ -9,7 +9,16 @@ export class Command_HighlightNode implements Command { async exec() { - let ss = await app.Editor.GetSelection({ Msg: "选择需要亮显节点的实体:", UseSelect: true }); + let ss = await app.Editor.GetSelection({ + Msg: "选择需要亮显节点的实体:", + UseSelect: true, + Filter: { + filterFunction: (obj, ent) => + { + return ent.Template?.Object !== undefined; + } + } + }); if (ss.Status !== PromptStatus.OK) return; let ents = ss.SelectSet.SelectEntityList; @@ -19,7 +28,12 @@ export class Command_HighlightNode implements Command for (const en of ents) { if (entSet.has(en)) continue; - let temp = en.Template.Object as TemplateRecord; + let temp = en.Template?.Object as TemplateRecord; + if (!temp) + { + entSet.add(en); + continue; + } for (let t of temp.Objects) { if (t && !t.IsErase) @@ -39,7 +53,16 @@ export class Command_HighlightNodeAndChilds implements Command { async exec() { - let ss = await app.Editor.GetSelection({ Msg: "选择需要亮显节点和子层的实体:", UseSelect: true }); + let ss = await app.Editor.GetSelection({ + Msg: "选择需要亮显节点和子层的实体:", + UseSelect: true, + Filter: { + filterFunction: (obj, ent) => + { + return ent.Template?.Object !== undefined; + } + } + }); if (ss.Status !== PromptStatus.OK) return; let ents = ss.SelectSet.SelectEntityList; @@ -49,12 +72,14 @@ export class Command_HighlightNodeAndChilds implements Command for (const en of ents) { if (entSet.has(en)) continue; - let temp = en.Template.Object as TemplateRecord; - - let treeNodes: TemplateRecord[] = []; - temp.Traverse((node) => { treeNodes.push(node); }); + let temp = en.Template?.Object as TemplateRecord; + if (!temp) + { + entSet.add(en); + continue; + } - for (let tn of treeNodes) + temp.Traverse((tn) => { for (let t of tn.Objects) { @@ -64,7 +89,7 @@ export class Command_HighlightNodeAndChilds implements Command entSet.add(en); } } - } + }); } app.Editor.SetSelection([...entSet]); }