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
}