// Opens a Solidworks part, given a part TreeNode private bool OpenSketchFromNode(TreeNode sketchNode) { // Get custom SketchNodeInfo object from this node SketchNodeInfo sNodeInfo = (SketchNodeInfo)sketchNode.Tag; if (sNodeInfo == null) { ShowNonFatalError("Sketch node is missing SketchNodeInfo tag"); return(false); } // Get the sketch feature from SketchNodeInfo string sketchName = sNodeInfo.SketchName; if (sketchName == null) { ShowNonFatalError("SketchNodeInfo is missing a Sketch Feature variable"); return(false); } // Opens the part from sketch's parent node (if not already open) if (!OpenPartFromNode(sketchNode.Parent)) { ShowNonFatalError("Failed to open part from sketch node's parent node"); return(false); } // Clear all previous selections in part currentModel.ClearSelection2(true); // Open "Edit Sketch" and make sketch Normal-To (ctrl+8 shortcut) OpenSketchNormalToByName(sketchName); return(false); }
// Adds child Sketch nodes to treeView1 node, given a TreeNode private void AddSketchesToPartNode(TreeNode partNode) { PartNodeInfo pNodeInfo = (PartNodeInfo)partNode.Tag; // Retrieve the custom NodeInfo class from the node's Tag object ModelDoc2 currentModel = default(ModelDoc2); currentModel = GetSolidworksModelFromFile(pNodeInfo.FilePath); List <Feature> listOfSketches = new List <Feature>(); listOfSketches = EnumerateSketchesInSolidworksPart(currentModel); if (listOfSketches == null) { ShowNonFatalError("Failed to get sketches from part '" + pNodeInfo.FileName + "'"); return; } var sketchNode = new TreeNode(); for (int i = 0; i < listOfSketches.Count; i++) { SketchNodeInfo sNodeInfo = new SketchNodeInfo(pNodeInfo, listOfSketches[i], i); // A custom class (ie. NodeInfo) to track the heirarchy of the Nodes sketchNode = new TreeNode(sNodeInfo.Name); // Make the Node title the file's name sketchNode.Tag = sNodeInfo; partNode.Nodes.Add(sketchNode); // Add this child file node under the student folder node } }