【技术分享】【C#】NX树列表节点的多类型数据关联管理
琛
帖子
14
14
精华
1
1
积分
154
154
二次开发
技术分享
在NX二次开发中,通常树列表节点不仅仅作为显示内容的载体,在程序中内,节点(Node)往往对应着各类的数据,对树列表节点的值修改,需要同步对数据值的修改。
数据的类型往往并非一成不变,如果存在多种数据类型需要绑定节点的情况,此时可以使用如下方法。
using System.Collections.Generic; using System.Linq; using NXOpen.BlockStyler; namespace F3D.DF.InfManagement.BatchColoringOfHoles { internal class ToolNodeData { ///
/// 行绑定数据 /// /// /// internal ToolNodeData(Node node, NodeDataTypes nodeDataTypes) { Node = node; NodeDataType = nodeDataTypes; } internal NodeDataTypes NodeDataType { get; } internal enum NodeDataTypes { Description, HoleColorStandard } ////// 行 /// internal Node Node { get; set; } ////// 数据 /// internal object Data { get; set; } } internal class NodeDataManage : List{ /// /// 检索数据 /// ////// internal T Search (Node node)where T:class { return this.FirstOrDefault(obj => obj.Node == node)?.Data as T; } /// /// 移除某个数据 /// /// internal void RemoveNodeData(Node node) { this.Remove(this.FirstOrDefault(obj => obj.Node.Tag == node.Tag)); } ////// 移除某个类型的数据 /// /// internal void RemoveNodeDataOfType(ToolNodeData.NodeDataTypes nodeDataTypes) { for (int i = this.Count-1; i>=0; i--) { if (this[i].NodeDataType == nodeDataTypes) { this.RemoveAt(i); } } } } }
internal class NodeData { ///
/// 行绑定数据 /// /// /// internal NodeData(Node node, NodeDataTypes nodeDataTypes) { Node = node; NodeDataType = nodeDataTypes; } internal NodeDataTypes NodeDataType { get; } internal enum NodeDataTypes { //修改零件名称预设 PartName, //修改预设备注 Remarks, } ////// 行 /// internal Node Node { get; set; } ////// 数据 /// internal object Data { get; set; } }
使用方法,先new
internal class ConfigEditBuilder { private NodeDataManage _nodeDataManage = null; internal void Show() { _nodeDataManage = new NodeDataManage();
}
}
数据添加
_nodeDataManage.Add(new NodeData(node, NodeData.NodeDataTypes.PartName) { Data = partName });
数据检索
var data = _nodeDataManage.Search(node);
通过节点删除数据
_nodeDataManage.RemoveNodeData(node);
登录论坛用户后可查看全部内容
558
1
2023-12-25 16:47:35
by f3dexpress Nico
请选择移动至版块:
确认移动
1
0
12
🤙🤙🤙
回复加入讨论