Bet韦德(中国)VIP官方认证·百度百科

技术支持 / 技术论坛 / 二次开发 / 【技术分享】【C#】NX树列表节点的多类型数据关联管理
【技术分享】【C#】NX树列表节点的多类型数据关联管理
帖子
14
精华
1
积分
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
freeter
帖子
1
精华
0
积分
12
回复于:2023-12-25 22:08:06 1 楼

🤙🤙🤙

引用

回复加入讨论

回复
请选择移动至版块:
确认移动
XML 地图