Рисуем снежинку по кривой Коха в Autocad .NET API C#

triangle.ColorIndex = color;

blockTableRecord.AppendEntity(triangle);
transaction.AddNewlyCreatedDBObject(triangle, true);
}
}

private int Fractal(Transaction transaction, BlockTableRecord blockTableRecord, Point2d point1, Point2d point2, Point2d point3, int countIteration = 0)
{
if (countIteration > 0)
{
// Средняя треть отрезка
Point2d point4 = new Point2d((point2.X + 2 * point1.X) / 3, (point2.Y + 2 * point1.Y) / 3);
Point2d point5 = new Point2d((2 * point2.X + point1.X) / 3, (point1.Y + 2 * point2.Y) / 3);

// Координаты вершины угла
Point2d ps = new Point2d((point2.X + point1.X) / 2, (point2.Y + point1.Y) / 2);
Point2d pn = new Point2d((4 * ps.X — point3.X) / 3, (4 * ps.Y — point3.Y) / 3);

// Рисуем треугольники
DrawLine(transaction, blockTableRecord, point4, pn, color1);
DrawLine(transaction, blockTableRecord, point5, pn, color1);
DrawLine(transaction, blockTableRecord, point4, point5, color2);

// Рекурсивный вызов необходимое кол-во раз
Fractal(transaction, blockTableRecord, point4, pn, point5, countIteration — 1);
Fractal(transaction, blockTableRecord, pn, point5, point4, countIteration — 1);
Fractal(transaction, blockTableRecord, point1, point4, new Point2d((2 * point1.X + point3.X) / 3, (2 * point1.Y + point3.Y) / 3), countIteration — 1);
Fractal(transaction, blockTableRecord, point5, point2, new Point2d((2 * point2.X + point3.X) / 3, (2 * point2.Y + point3.Y) / 3), countIteration — 1);
}
return countIteration;
}
}
}

Я не являюсь автором данного кода. Посмотреть его оригинальную реализацию можно здесь. Хотя, немного я его изменил и адаптировал под нужды плагина для Autocad.

Далее, необходимо скомпилировать библиотеку в DLL и загрузить ее в autocad с помощью команды NETLOAD. Сам же плагин вызывается с помощью команды SNOWFLAKE.

Отмечу, используемый мой код далеко не идеален, всего лишь демонстрирует быстрое построение определенного объекта с помощью средств autocad.

Спасибо за внимание.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: