override public void drawCells() { //получить грани бобышки faces = bodyDrawer.GetFacesArray(); //выбрать вторую (вверх бобышки) var ent = faces.GetValue(1) as Entity; //выбрать верхнюю грань ent.Select(true); //добавить на неё эскиз swSketchManager.InsertSketch(false); // Получаем объект эскиза, на котором будем рисовать activeSketch = application.swModel.GetActiveSketch2(); //cells //Определяем положение центра верхней левой ячейки относительно центра плоскости (0, 0, 0) double x_current = (-body.GetWidth()) / 2.0 + (cellObj.GetK() + cellObj.GetCellsWidth() / 2.0); double y_current = (body.GetLenght() / 2.0) - (cellObj.GetK() + (cellObj.GetCellsLenght() / 2.0)); //Определяем положение правого нижнего угла ячейки double x_end = ((-body.GetWidth()) / 2.0) + (cellObj.GetK() + cellObj.GetCellsWidth()); double y_end = (body.GetLenght() / 2.0) - (cellObj.GetK() + cellObj.GetCellsLenght()); //Запоминаем позицию для дальнейшего использования double leftHoleCenterX = x_current, leftHoleCenterY = y_current; //Сдвиг, расстояние от центра одной ячейки до центра другой по координате Х double delta = cellObj.GetCellsWidth() + cellObj.GetK(); //Определяем количество ячеек в зависимости от итерации int row = cellObj.GetRowsNumber(), column = cellObj.GetColumnsNumber(); for (int i = 0; i < row; i++) { //Рисуем первую в ряду ячейку application.swModel.SketchManager.CreateCenterRectangle(x_current, y_current, 0, x_end, y_end, 0); //Рисуем остальные for (int j = 1; j < column; j++) { x_current = x_current + delta; x_end = x_end + delta; application.swModel.SketchManager.CreateCenterRectangle(x_current, y_current, 0, x_end, y_end, 0); } //Возвращаемся к первой ячейке x_current = leftHoleCenterX; //Сдвигаемся по координате Y y_current = leftHoleCenterY - (cellObj.GetK() + cellObj.GetCellsLenght()); //Запоминаем координаты leftHoleCenterX = x_current; leftHoleCenterY = y_current; //Определяем положение правого нижнего угла ячейки x_end = x_current + (cellObj.GetCellsWidth() / 2.0); y_end = y_current + (cellObj.GetCellsLenght() / 2.0); } //Получаем объект "вырез" cut = featureCut(cellObj.GetCellsHeight()); application.swModel.ClearSelection(); }
public void Calculation() { double A, B, C; //Вычисляем элементы кубического уравнения //x^3 + Ax^2 + Bx + C = 0 A = body.GetWidth() * (columns + 1) + body.GetLenght() * (rows + 1) + body.GetHeight() * (columns + 1) * (rows + 1); A /= (columns + 1) * (rows + 1); A *= (-1); B = body.GetWidth() * body.GetLenght() + body.GetWidth() * body.GetHeight() * (rows + 1) + body.GetLenght() * body.GetHeight() * (columns + 1); B /= (columns + 1) * (rows + 1); C = VCells - body.GetV(); C /= (columns + 1) * (rows + 1); //Получаем корни уравнения rootsList = GetRoots(A, B, C); k = -1.0; foreach (Complex element in rootsList) { //MessageBox.Show(element.Real.ToString()); if (element.Real < 0) { continue; } if (element.Real == -1.0) { k = -1.0; break; } k = element.Real; double buff1, buff2, buff3; //Вычисляем предположительные значения сторон отверстия SetCellsWidth(); SetCellsHeight(); SetCellsLenght(); if (cellWidth < 0 || cellHeight < 0 || cellLenght < 0) { continue; } buff1 = columns * cellWidth + (columns + 1) * k; buff2 = rows * cellLenght + (rows + 1) * k; buff3 = k + cellHeight; if (Comporation(buff1, body.GetWidth()) && Comporation(buff2, body.GetHeight()) && Comporation(buff3, body.GetLenght())) { SetVCellsFactical(); return; } else { k = -1.0; } } }
public virtual bool trySizeCondition() { local = body.GetWidth() / columns; double buff = body.GetLenght() / rows; return(local == buff ? true : false); }
/// <summary> /// Рисует тело, в котором будут отверстия /// </summary> /// <returns>Возвращает объект, на котором будут сделаны ячейки</returns> public void drawBody() { //получем ссылку на интерфейс, ответственный за рисование swSketchManager = application.swModel.SketchManager; application.swModel.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, false, 0, null, 0); //выбрал плоскость swSketchManager.InsertSketch(false); sketch = application.swModel.GetActiveSketch2(); //создать основание var rect = swSketchManager.CreateCenterRectangle(0, 0, 0, body.GetWidth() / acc / 2.0, body.GetHeight() / acc / 2.0, 0); //очистить буфер выбранных элементов application.swModel.ClearSelection(); //вытянуть бобышку Feature feature = featureExtrusion(body.GetLenght() / acc); application.swModel.ClearSelection(); body3d = feature; }