private TreeNode LoadTreeNode(TreeNodeCollection treeNodes, SvfNode svfNode, bool hideNonGeometryNodes) { var treeNode = new TreeNode($"{svfNode.Name}"); treeNode.Tag = svfNode; if (svfNode.ViewableIn) { treeNode.ForeColor = Color.DarkGreen; } _TreeNodes[svfNode.Id] = treeNode; if (svfNode == _CurrentSvfNode) { CurrentTreeNode = treeNode; } foreach (var childNode in svfNode.Children) { if (hideNonGeometryNodes && IsGeometryNode(childNode) == false) { continue; } LoadTreeNode(treeNode.Nodes, childNode, hideNonGeometryNodes); } treeNodes.Add(treeNode); return(treeNode); }
private TreeNode LoadNode(TreeNodeCollection treeNodes, SvfDatabase reader, SvfNode propNode, int depth) { //var treeNode = new TreeNode($"([{nodeId}]{propNode.Category}) {propNode.Name}"); var treeNode = new TreeNode($"{propNode.Name}"); treeNode.Tag = propNode; foreach (var childNode in propNode.Children) { LoadNode(treeNode.Nodes, reader, childNode, depth++); } treeNodes.Add(treeNode); return(treeNode); }
private void tvModel_AfterSelect(object sender, TreeViewEventArgs e) { _CurrentTreeNode = tvModel.SelectedNode; _CurrentSvfNode = _CurrentTreeNode?.Tag as SvfNode; if (_CurrentSvfNode == null) { return; } lblDbId.Text = _CurrentSvfNode.Id.ToString(); txtName.Text = _CurrentSvfNode.Name ?? @"<null>"; txtCategory.Text = _CurrentSvfNode.Category ?? @"<null>"; txtExternalId.Text = _CurrentSvfNode.ExternalId ?? @"<null>"; pgNodeProperties.SelectedObject = new SvfNodePropertyGridAdapter(tvModel.SelectedNode.Tag as SvfNode); }
private bool IsGeometryNode(SvfNode svfNode) { if (svfNode.ViewableIn) { return(true); } if (svfNode.Children != null && svfNode.Children.Count > 0 && svfNode.Children.Any(IsGeometryNode)) { return(true); } return(false); }
private SvfNode ImportNodeWithPath(SvfNode targetNodeRoot, SvfNode sourceNode, SvfNode sourceNodeRoot, Material material) { var targetNode = sourceNode.Parent == sourceNodeRoot ? targetNodeRoot : ImportNodeWithPath(targetNodeRoot, sourceNode.Parent, sourceNodeRoot, material); var resultNode = targetNode.Children.FirstOrDefault(x => x.Name == sourceNode.Name); if (resultNode == null) { resultNode = targetNode.Children.ImportNode(sourceNode, null, false); foreach (var fragment in resultNode.Fragments) { fragment.Material = material; } } return(resultNode); }
public FormApp(SvfDatabase svfDb, string svfFilePath) : this() { _SvfDb = svfDb ?? throw new ArgumentNullException(nameof(svfDb)); _SvfFilePath = svfFilePath ?? throw new ArgumentNullException(nameof(svfFilePath)); _CurrentSvfNode = null; }
public static NodeKey GetKey(this SvfNode node) { return(new NodeKey(node.ExternalId, node.LinkInstanceName)); }