protected override void OnExecute(Command command, ExecutionContext context, System.Drawing.Rectangle buttonRect) { List<List<TreeVertex>> rows = WilfTree.GetRows(16); Window activeWindow = Window.ActiveWindow; Part part = activeWindow.Document.MainPart; //DesignBody designBody; //foreach (List<TreeVertex> row in rows) { // foreach (TreeVertex vertex in row) { // designBody = AddInHelper.CreateSphere(Point.Create((double) vertex.I / vertex.J, 0, 0), 0.001, part); // designBody.Name = string.Format("{0}/{1}", vertex.I, vertex.J); // } //} #if false // text output StreamWriter postScriptSteam = new StreamWriter(@"c:\wilf.txt"); foreach (List<TreeVertex> row in rows) { foreach (TreeVertex vertex in row) postScriptSteam.Write(string.Format("{0}/{1} ", vertex.I, vertex.J)); postScriptSteam.Write("\n"); } postScriptSteam.Close(); #endif #if false // Excel output ExcelWorksheet worksheet = new ExcelWorksheet(); int i = 1; foreach (List<TreeVertex> row in rows) { foreach (TreeVertex vertex in row) { worksheet.SetCell(i, 1, vertex.Level); worksheet.SetCell(i, 2, string.Format("={0}/{1}", vertex.I, vertex.J)); i++; } } #endif #if true // Excel output ExcelWorksheet worksheet = new ExcelWorksheet(); int i = 1; foreach (List<TreeVertex> row in rows) { double max = 0; int index = 0; double value = 0; double maxValue = 0; int j = 0; foreach (TreeVertex vertex in row) { value = (double)vertex.I / (double)vertex.J; double result = 1 / Math.Log(value); max = Math.Max(max, result); if (result == max) { index = j; maxValue = value; } j++; } worksheet.SetCell(i, 1, (double)index); worksheet.SetCell(i, 2, maxValue); worksheet.SetCell(i, 3, max); i++; } #endif }