Exemple #1
0
        private void tvStructure_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node == null)
            {
                return;
            }
            if (e.Node.Tag == null)
            {
                return;
            }

            if (vizcore3d.View.XRay.Enable == false)
            {
                vizcore3d.View.XRay.Enable = true;
            }


            VIZCore3D.NET.ShdCore.ModelTreeNode node = (VIZCore3D.NET.ShdCore.ModelTreeNode)e.Node.Tag;
            int index = vizcore3d.Object3D.GetNodeIndex(Convert.ToInt32(node.EntityId));

            vizcore3d.View.XRay.Clear();
            vizcore3d.View.XRay.Select(new List <int>()
            {
                index
            }, true, true);

            vizcore3d.View.FlyToObject3d(new List <int>()
            {
                index
            }, 1.0f);
        }
Exemple #2
0
        private void MakeModelTree()
        {
            tvStructure.BeginUpdate();
            tvStructure.Nodes.Clear();

            // 처리된 모델 구조 불러오기
            List <VIZCore3D.NET.ShdCore.ModelTreeNode> roots = Structure.Roots;

            // 최상위는 파일 노드이므로, 파일이름으로 생성
            TreeNode rootNode = tvStructure.Nodes.Add(System.IO.Path.GetFileNameWithoutExtension(txtVIZ.Text));

            rootNode.ImageIndex         = 0;
            rootNode.SelectedImageIndex = 0;

            // 최상위 루트 기준
            for (int i = 0; i < roots.Count; i++)
            {
                // 파일 노드 하위의 최상위 노드
                VIZCore3D.NET.ShdCore.ModelTreeNode node = roots[i];

                TreeNode tnNode = rootNode.Nodes.Add(node.NodeName);
                tnNode.Tag = node;

                if (node.NodeType == VIZCore3D.NET.ShdCore.ModelTreeNodeKind.ASSEMBLY)
                {
                    tnNode.ImageIndex         = 1;
                    tnNode.SelectedImageIndex = 1;
                }
                else if (node.NodeType == VIZCore3D.NET.ShdCore.ModelTreeNodeKind.PART)
                {
                    tnNode.ImageIndex         = 2;
                    tnNode.SelectedImageIndex = 2;
                }
                else if (node.NodeType == VIZCore3D.NET.ShdCore.ModelTreeNodeKind.BODY)
                {
                    tnNode.ImageIndex         = 3;
                    tnNode.SelectedImageIndex = 3;
                }

                // 하위 노드가 있는 경우, 재귀 호출
                if (node.Nodes.Count != 0)
                {
                    BindNode(tnNode, node);
                }
            }

            // 최상위 노드 펼치기
            rootNode.Expand();

            tvStructure.EndUpdate();
        }
Exemple #3
0
        private void tvStructure_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Tag == null)
            {
                return;
            }

            VIZCore3D.NET.ShdCore.ModelTreeNode node = (VIZCore3D.NET.ShdCore.ModelTreeNode)e.Node.Tag;

            // 선택된 노드의 속성정보 불러오기
            // Example 1
            List <VIZCore3D.NET.ShdCore.NodeAttribute> AttrItems1 = Structure.GetProperty(Convert.ToInt32(node.EntityId));
            // Example 2
            List <VIZCore3D.NET.ShdCore.NodeAttribute> AttrItems2 = node.NodePropertyList;

            ShowProperty(AttrItems2);
        }
Exemple #4
0
        private void cxMenuMiniView_Click(object sender, EventArgs e)
        {
            if (tvStructure.SelectedNode == null)
            {
                return;
            }

            VIZCore3D.NET.ShdCore.ModelTreeNode treeNode = (VIZCore3D.NET.ShdCore.ModelTreeNode)tvStructure.SelectedNode.Tag;
            int index = vizcore3d.Object3D.GetNodeIndex(Convert.ToInt32(treeNode.EntityId));

            VIZCore3D.NET.Data.Node node = vizcore3d.Object3D.FromIndex(index);

            vizcore3d.View.MiniView.Show(new List <Data.Node>()
            {
                node
            }, true);
        }
Exemple #5
0
        private void MakeModelTree()
        {
            tvStructure.BeginUpdate();
            tvStructure.Nodes.Clear();

            // 처리된 모델 구조 불러오기
            List <VIZCore3D.NET.ShdCore.ModelTreeNode> roots = Structure.Roots;

            // 최상위는 파일 노드이므로, 파일이름으로 생성
            TreeNode rootNode = tvStructure.Nodes.Add(System.IO.Path.GetFileNameWithoutExtension(txtPath.Text));

            rootNode.ImageIndex         = GetImageListIndex(-1);
            rootNode.SelectedImageIndex = GetImageListIndex(-1);

            // 최상위 루트 기준
            for (int i = 0; i < roots.Count; i++)
            {
                // 파일 노드 하위의 최상위 노드
                VIZCore3D.NET.ShdCore.ModelTreeNode node = roots[i];

                TreeNode tnNode = rootNode.Nodes.Add(node.NodeName);
                tnNode.Tag = node;

                tnNode.ImageIndex         = GetImageListIndex(Convert.ToInt32(node.EntityId));
                tnNode.SelectedImageIndex = GetImageListIndex(Convert.ToInt32(node.EntityId));

                // 하위 노드가 있는 경우, 재귀 호출
                if (node.Nodes.Count != 0)
                {
                    BindNode(tnNode, node);
                }
            }

            // 최상위 노드 펼치기
            rootNode.Expand();

            tvStructure.EndUpdate();
        }
Exemple #6
0
        /// <summary>
        /// 하위 노드를 트리 컨트롤에 추가
        /// </summary>
        /// <param name="tnNode"></param>
        /// <param name="mtNode"></param>
        private void BindNode(TreeNode tnNode, VIZCore3D.NET.ShdCore.ModelTreeNode mtNode)
        {
            // 부모 노드의 하위 자식 목록
            List <VIZCore3D.NET.ShdCore.ModelTreeNode> children = mtNode.Nodes;

            for (int i = 0; i < children.Count; i++)
            {
                // 노드 정보
                VIZCore3D.NET.ShdCore.ModelTreeNode node = children[i];

                // 트리 노드 생성
                TreeNode childNode = tnNode.Nodes.Add(node.NodeName);
                childNode.Tag = node;

                if (node.NodeType == VIZCore3D.NET.ShdCore.ModelTreeNodeKind.ASSEMBLY)
                {
                    childNode.ImageIndex         = 1;
                    childNode.SelectedImageIndex = 1;
                }
                else if (node.NodeType == VIZCore3D.NET.ShdCore.ModelTreeNodeKind.PART)
                {
                    childNode.ImageIndex         = 2;
                    childNode.SelectedImageIndex = 2;
                }
                else if (node.NodeType == VIZCore3D.NET.ShdCore.ModelTreeNodeKind.BODY)
                {
                    childNode.ImageIndex         = 3;
                    childNode.SelectedImageIndex = 3;
                }

                // 하위 노드가 있는 경우, 재귀 호출
                if (node.Nodes.Count != 0)
                {
                    BindNode(childNode, node);
                }
            }
        }
Exemple #7
0
        /// <summary>
        /// 하위 노드를 트리 컨트롤에 추가
        /// </summary>
        /// <param name="tnNode"></param>
        /// <param name="mtNode"></param>
        private void BindNode(TreeNode tnNode, VIZCore3D.NET.ShdCore.ModelTreeNode mtNode)
        {
            // 부모 노드의 하위 자식 목록
            List <VIZCore3D.NET.ShdCore.ModelTreeNode> children = mtNode.Nodes;

            for (int i = 0; i < children.Count; i++)
            {
                // 노드 정보
                VIZCore3D.NET.ShdCore.ModelTreeNode node = children[i];

                // 트리 노드 생성
                TreeNode childNode = tnNode.Nodes.Add(node.NodeName);
                childNode.Tag = node;

                childNode.ImageIndex         = GetImageListIndex(Convert.ToInt32(node.EntityId));
                childNode.SelectedImageIndex = GetImageListIndex(Convert.ToInt32(node.EntityId));

                // 하위 노드가 있는 경우, 재귀 호출
                if (node.Nodes.Count != 0)
                {
                    BindNode(childNode, node);
                }
            }
        }