private void m_btnExplodeIt_Click(object sender, RoutedEventArgs e) { // IGlobal global = Autodesk.Max.GlobalInterface.Instance; IInterface14 ip = global.COREInterface14; this.m_pnlProgressPanel.Visibility = System.Windows.Visibility.Visible; try { global.TheHold.Begin(); ADN_Utility.SetProgressControl(this); bool convertPoly = EI_ConvertTypePoly; // true = poly, false = tri bool attemptConvert; if (convertPoly) { attemptConvert = EI_AttemptConvertToPoly; } else { attemptConvert = EI_AttemptConvertToTri; } bool addShell = EI_AddShellModifier; float shellAmount = EI_ShellAmount; bool addEditMesh = EI_AddEditMeshModifier; bool collapseStack = EI_CollapseStack; bool deleteNode = EI_DeleteOriginal; //ip.DisableSceneRedraw(); int stat = 0; int nNumSelNodes = ip.SelNodeCount; m_lblTotNode.Content = nNumSelNodes.ToString(); for (int i = 0; i < nNumSelNodes; i++) { IINode nodeCur = ip.GetSelNode(i); m_lblNodeName.Content = nodeCur.Name; m_lblCurrNode.Content = i + 1; if (convertPoly) { stat = ADN_Utility.ConvertToPolygonFaces(nodeCur.Handle, attemptConvert, addShell, shellAmount, addEditMesh, collapseStack); if (stat < 0) { break; } } else { stat = ADN_Utility.ConvertToTriangleFaces(nodeCur.Handle, attemptConvert, addShell, shellAmount, addEditMesh, collapseStack); if (stat < 0) { break; } } } if (stat < 0) { global.TheHold.Cancel(); } else { // now we need to start at the top to delete the original nodes. if (deleteNode) { IINodeTab tabNodes = global.INodeTabNS.Create(); ip.GetSelNodeTab(tabNodes); if (tabNodes != null) { ip.DeleteNodes(tabNodes, true, true, false); } } global.TheHold.Accept("ADN-PolygonExplode"); } ip.RedrawViews(0, RedrawFlags.Normal, null); } catch { global.TheHold.Cancel(); } this.m_pnlProgressPanel.Visibility = System.Windows.Visibility.Hidden; ADN_Utility.ClearProgressControl(this); m_winParent.Close(); m_bOk = true; }