public void act() { Type c = Type.GetTypeFromProgID("KOMPAS.Application.5"); kompas = (KompasObject)Activator.CreateInstance(c); documentParam = (ksDocumentParam)kompas.GetParamStruct((short)StructType2DEnum.ko_DocumentParam); //для активации нового листа и добавление рамки к чертежу documentParam.type = (int)DocType.lt_DocSheetStandart; documentParam.regime = 0; sheetPar = (ksSheetPar)documentParam.GetLayoutParam(); str = kompas.ksSystemPath(0) + @"\graphic.lyt"; sheetPar.layoutName = str; sheetPar.shtType = 1; standartSheet = (ksStandartSheet)sheetPar.GetSheetParam(); standartSheet.direct = true; standartSheet.format = 3; standartSheet.multiply = 1; dock = (ksDocument2D)kompas.Document2D(); dock.ksCreateDocument(documentParam); //dock = (ksDocument2D)kompas.Document2D(); // ДЛЯ СТАРОГО КОМПАСА //dock.ksCreateDocument(documentParam); // ДЛЯ СТАРОГО КОМПАСА //sheetOptions = (ksSheetOptions)kompas.GetParamStruct((short)StructType2DEnum.ko_SheetOptions); // ДЛЯ СТАРОГО КОМПАСА //dock.ksGetDocOptions(SHEET_OPTIONS_EX, sheetOptions); // ДЛЯ СТАРОГО КОМПАСА //sheetOptions.sheetType = false; // ДЛЯ СТАРОГО КОМПАСА //standartSheet = (ksStandartSheet)sheetOptions.GetSheetParam(false); // ДЛЯ СТАРОГО КОМПАСА //standartSheet.format = 3; // ДЛЯ СТАРОГО КОМПАСА //standartSheet.direct = true; // ДЛЯ СТАРОГО КОМПАСА //sheetOptions.sheetType = true; // ДЛЯ СТАРОГО КОМПАСА //dock.ksSetDocOptions(SHEET_OPTIONS_EX, sheetOptions); // ДЛЯ СТАРОГО КОМПАСА kompas.Visible = true; }
public void MakeTechnicalDrawings_STUPICA(Stupica stupica) { double multiply; // = 0.4; //масштаб 1:2.5 if (stupica.D_external <= 30) { multiply = 5; } else if (stupica.D_external > 30 && stupica.D_external <= 37.5) { multiply = 4; } else if (stupica.D_external > 37.5 && stupica.D_external <= 60) { multiply = 2.5; } else if (stupica.D_external > 60 && stupica.D_external <= 75) { multiply = 2; } else if (stupica.D_external > 75 && stupica.D_external <= 150) { multiply = 1; } else if (stupica.D_external > 150 && stupica.D_external <= 300) { multiply = 0.5; } else if (stupica.D_external > 300 && stupica.D_external <= 375) { multiply = 0.4; } else if (stupica.D_external > 375 && stupica.D_external <= 600) { multiply = 0.25; } else if (stupica.D_external > 600 && stupica.D_external <= 750) { multiply = 0.2; } else { multiply = 1; } ksDynamicArray arr = (ksDynamicArray)_kompas.GetDynamicArray(ldefin2d.POINT_ARR); ksDocument2D doc = (ksDocument2D)_kompas.Document2D(); doc = (ksDocument2D)_kompas.Document2D(); ksDocumentParam docPar = (ksDocumentParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_DocumentParam); ksDocumentParam docPar1 = (ksDocumentParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_DocumentParam); if ((docPar != null) & (docPar1 != null)) { // docPar.fileName = @"c:\2.cdw"; //docPar.comment = "Create document"; docPar.author = "unbekannte"; docPar.regime = 0; docPar.type = (short)DocType.lt_DocSheetStandart; ksSheetPar shPar = (ksSheetPar)docPar.GetLayoutParam(); if (shPar != null) { shPar.shtType = 1; shPar.layoutName = string.Empty; ksStandartSheet stPar = (ksStandartSheet)shPar.GetSheetParam(); if (stPar != null) { stPar.format = 3; //2 - А2, 3 - А3 и тд stPar.multiply = 1; //кратность формата, увеличивает лист в размерах stPar.direct = true; //горизонтально } } // Создали документ: лист, формат А3, горизонтально расположенный // и с системным штампом 1 doc.ksCreateDocument(docPar); ksStamp stamp = (ksStamp)doc.GetStamp(); if (stamp != null) { if (stamp.ksOpenStamp() == 1) { stamp.ksColumnNumber(1); Set_into_Stamp(doc, "Ступица фланцевой муфты"); stamp.ksColumnNumber(2); Set_into_Stamp(doc, "-"); stamp.ksColumnNumber(3); Set_into_Stamp(doc, "СТАЛЬ 35 ГОСТ 1050-2013"); stamp.ksColumnNumber(6); string tmp = ""; if (multiply >= 1) { tmp = multiply.ToString() + ":1"; } else { var M = Math.Round((1 / multiply), 1); tmp = "1:" + M.ToString(); } Set_into_Stamp(doc, tmp); stamp.ksColumnNumber(7); Set_into_Stamp(doc, "1"); stamp.ksColumnNumber(8); Set_into_Stamp(doc, "3"); stamp.ksColumnNumber(9); Set_into_Stamp(doc, "ТулГУ гр. 222131"); stamp.ksCloseStamp(); } } int number = 0; ksViewParam parv1 = (ksViewParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_ViewParam); if (parv1 != null) { number = 1; parv1.Init(); parv1.x = 100; parv1.y = 150; parv1.scale_ = multiply; parv1.angle = 0; //угол поворота вида parv1.color = Color.FromArgb(10, 20, 10).ToArgb(); //цвет вида в активном состоянии parv1.state = ldefin2d.stACTIVE; parv1.name = "Вид слева"; // У документа создадим вид с номером 1, масштабом 0.5, под углом 45 гр reference v = doc.ksCreateSheetView(parv1, ref number); //создать вид // Создадим слой с номером 3 doc.ksLayer(3); //основа doc.ksLineSeg(0, 0, 0, (stupica.D_external / 2 - stupica.b1), 1); //с середины до верха doc.ksLineSeg(0, (stupica.D_external / 2 - stupica.b1), (stupica.b1), (stupica.D_external / 2), 1); //фаска doc.ksLineSeg((stupica.b1), (stupica.D_external / 2), (stupica.l1 - stupica.b1), (stupica.D_external / 2), 1); //верхняя линия doc.ksLineSeg((stupica.l1 - stupica.b1), (stupica.D_external / 2), (stupica.l1), (stupica.D_external / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l1), (stupica.D_external / 2 - stupica.b1), (stupica.l1), (stupica.d1 / 2 + stupica.R1), 1); //сверху вниз до скругления doc.ksArcByAngle((stupica.l1 + stupica.R1), (stupica.d1 / 2 + stupica.R1), (stupica.R1), 180, 270, 1, 1); //скругление doc.ksLineSeg((stupica.l1 + stupica.R1), (stupica.d1 / 2), (stupica.l - stupica.b1), (stupica.d1 / 2), 1); //линия внешней стороны стакана вправо doc.ksLineSeg((stupica.l - stupica.b1), (stupica.d1 / 2), (stupica.l), (stupica.d1 / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l), (stupica.d1 / 2 - stupica.b1), (stupica.l), 0, 1); ///////зеркально doc.ksLineSeg(0, 0, 0, -(stupica.D_external / 2 - stupica.b1), 1); //с середины до верха doc.ksLineSeg(0, -(stupica.D_external / 2 - stupica.b1), (stupica.b1), -(stupica.D_external / 2), 1); //фаска doc.ksLineSeg((stupica.b1), -(stupica.D_external / 2), (stupica.l1 - stupica.b1), -(stupica.D_external / 2), 1); //верхняя линия doc.ksLineSeg((stupica.l1 - stupica.b1), -(stupica.D_external / 2), (stupica.l1), -(stupica.D_external / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l1), -(stupica.D_external / 2 - stupica.b1), (stupica.l1), -(stupica.d1 / 2 + stupica.R1), 1); //сверху вниз до скругления doc.ksArcByAngle((stupica.l1 + stupica.R1), -(stupica.d1 / 2 + stupica.R1), (stupica.R1), 90, 180, 1, 1); //скругление doc.ksLineSeg((stupica.l1 + stupica.R1), -(stupica.d1 / 2), (stupica.l - stupica.b1), -(stupica.d1 / 2), 1); //линия внешней стороны стакана вправо doc.ksLineSeg((stupica.l - stupica.b1), -(stupica.d1 / 2), (stupica.l), -(stupica.d1 / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l), -(stupica.d1 / 2 - stupica.b1), (stupica.l), 0, 1); //верхнее отверстие под болты doc.ksLineSeg((0), (stupica.D_okr / 2 - stupica.d4 / 2), (0), (stupica.D_okr / 2 + stupica.d4 / 2), 1); //снизу вверх doc.ksLineSeg((0), (stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1 - stupica.b2), (stupica.D_okr / 2 + stupica.d4 / 2), 1); //верхняя планка doc.ksLineSeg((stupica.l1 - stupica.b2), (stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1 - stupica.b2), (stupica.D_okr / 2 - stupica.d4 / 2), 1); //сверху вниз doc.ksLineSeg((0), (stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1 - stupica.b2), (stupica.D_okr / 2 - stupica.d4 / 2), 1); //нижняя планка doc.ksLineSeg((stupica.l1 - stupica.b2), (stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1), (stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), 1); //верхняя фаска doc.ksLineSeg((stupica.l1), (stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), (stupica.l1), (stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), 1); //сверху вниз doc.ksLineSeg((stupica.l1 - stupica.b2), (stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1), (stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), 1); //нижняя фаска //нижнее отверстие под болты doc.ksLineSeg((0), -(stupica.D_okr / 2 - stupica.d4 / 2), (0), -(stupica.D_okr / 2 + stupica.d4 / 2), 1); //снизу вверх doc.ksLineSeg((0), -(stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1 - stupica.b2), -(stupica.D_okr / 2 + stupica.d4 / 2), 1); //верхняя планка doc.ksLineSeg((stupica.l1 - stupica.b2), -(stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1 - stupica.b2), -(stupica.D_okr / 2 - stupica.d4 / 2), 1); //сверху вниз doc.ksLineSeg((0), -(stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1 - stupica.b2), -(stupica.D_okr / 2 - stupica.d4 / 2), 1); //нижняя планка doc.ksLineSeg((stupica.l1 - stupica.b2), -(stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1), -(stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), 1); //верхняя фаска doc.ksLineSeg((stupica.l1), -(stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), (stupica.l1), -(stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), 1); //сверху вниз doc.ksLineSeg((stupica.l1 - stupica.b2), -(stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1), -(stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), 1); //нижняя фаска //внутр кольцо верх doc.ksLineSeg((0), (0), (0), (stupica.d2 / 2), 1); doc.ksLineSeg((stupica.l2), (0), (stupica.l2), (stupica.d2 / 2), 1); doc.ksLineSeg((0), (stupica.d2 / 2), (stupica.l2), (stupica.d2 / 2), 1); //внутр кольцо низ doc.ksLineSeg((0), (0), (0), -(stupica.d2 / 2), 1); doc.ksLineSeg((stupica.l2), (0), (stupica.l2), -(stupica.d2 / 2), 1); doc.ksLineSeg((0), -(stupica.d2 / 2), (stupica.l2), -(stupica.d2 / 2), 1); //осн. отверстие верх doc.ksLineSeg((stupica.l2), (stupica.d / 2), (stupica.l - stupica.b1), (stupica.d / 2), 1); // doc.ksLineSeg((stupica.l2), (stupica.h - stupica.d / 2), (stupica.l), (stupica.h - stupica.d / 2), 1); // doc.ksLineSeg((stupica.l - stupica.b1), (stupica.d / 2), (stupica.l), (stupica.d / 2 + stupica.b1), 1); //фаска doc.ksLineSeg((stupica.l - stupica.b1), (stupica.d / 2), (stupica.l - stupica.b1), (0), 1); //фаска //осн. отверстие низ doc.ksLineSeg((stupica.l2), -(stupica.d / 2), (stupica.l - stupica.b1), -(stupica.d / 2), 1); doc.ksLineSeg((stupica.l - stupica.b1), -(stupica.d / 2), (stupica.l), -(stupica.d / 2 + stupica.b1), 1); //фаска doc.ksLineSeg((stupica.l - stupica.b1), -(stupica.d / 2), (stupica.l - stupica.b1), (0), 1); //фаска doc.ksLineSeg((0), (0), (0), (0), 1); // doc.ksLineSeg((0), (0), (0), (0), 1); // doc.ksLineSeg((0), (0), (0), (0), 1); // doc.ksLineSeg((0), (0), (0), (0), 1); // //освевые doc.ksLineSeg((0) - 5, (0), (stupica.l) + 5, (0), 3); // doc.ksLineSeg((0) - 5, (stupica.D_okr / 2), (stupica.l1) + 5, (stupica.D_okr / 2), 3); // doc.ksLineSeg((0) - 5, -(stupica.D_okr / 2), (stupica.l1) + 5, -(stupica.D_okr / 2), 3); // if (doc.ksHatch(0, 45, 2, 0, 0, 0) == 1) { doc.ksLineSeg(0, stupica.D_okr / 2 + stupica.d4 / 2, 0, (stupica.D_external / 2 - stupica.b1), 1); //от отверстия до верха doc.ksLineSeg(0, (stupica.D_external / 2 - stupica.b1), (stupica.b1), (stupica.D_external / 2), 1); //фаска doc.ksLineSeg((stupica.b1), (stupica.D_external / 2), (stupica.l1 - stupica.b1), (stupica.D_external / 2), 1); //верхняя линия doc.ksLineSeg((stupica.l1 - stupica.b1), (stupica.D_external / 2), (stupica.l1), (stupica.D_external / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l1), (stupica.D_external / 2 - stupica.b1), (stupica.l1), (stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), 1); //сверху вниз до фаски doc.ksLineSeg((stupica.l1 - stupica.b2), (stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1), (stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), 1); //верхняя фаска doc.ksLineSeg((0), (stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1 - stupica.b2), (stupica.D_okr / 2 + stupica.d4 / 2), 1); //нижняя линия doc.ksLineSeg((0), (stupica.d2 / 2), (0), (stupica.D_okr / 2 - stupica.d4 / 2), 1); //от кольца до отверстия doc.ksLineSeg((0), (stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1 - stupica.b2), (stupica.D_okr / 2 - stupica.d4 / 2), 1); //нижняя планка doc.ksLineSeg((stupica.l1 - stupica.b2), (stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1), (stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), 1); //нижняя фаска doc.ksLineSeg((stupica.l1), (stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), (stupica.l1), (stupica.d1 / 2 + stupica.R1), 1); //нижняя фаска doc.ksArcByAngle((stupica.l1 + stupica.R1), (stupica.d1 / 2 + stupica.R1), (stupica.R1), 180, 270, 1, 1); //скругление doc.ksLineSeg((stupica.l1 + stupica.R1), (stupica.d1 / 2), (stupica.l - stupica.b1), (stupica.d1 / 2), 1); //линия внешней стороны стакана вправо doc.ksLineSeg((stupica.l - stupica.b1), (stupica.d1 / 2), (stupica.l), (stupica.d1 / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l), (stupica.d1 / 2 - stupica.b1), (stupica.l), (stupica.h - stupica.d / 2), 1); //до паза doc.ksLineSeg((stupica.l2), (stupica.h - stupica.d / 2), (stupica.l), (stupica.h - stupica.d / 2), 1); //паз doc.ksLineSeg((stupica.l2), (stupica.h - stupica.d / 2), (stupica.l2), (stupica.d2 / 2), 1); doc.ksLineSeg((0), (stupica.d2 / 2), (stupica.l2), (stupica.d2 / 2), 1); //зеркально doc.ksLineSeg(0, -(stupica.D_okr / 2 + stupica.d4 / 2), 0, -(stupica.D_external / 2 - stupica.b1), 1); //от отверстия до верха doc.ksLineSeg(0, -(stupica.D_external / 2 - stupica.b1), (stupica.b1), -(stupica.D_external / 2), 1); //фаска doc.ksLineSeg((stupica.b1), -(stupica.D_external / 2), (stupica.l1 - stupica.b1), -(stupica.D_external / 2), 1); //верхняя линия doc.ksLineSeg((stupica.l1 - stupica.b1), -(stupica.D_external / 2), (stupica.l1), -(stupica.D_external / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l1), -(stupica.D_external / 2 - stupica.b1), (stupica.l1), -(stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), 1); //сверху вниз до фаски doc.ksLineSeg((stupica.l1 - stupica.b2), -(stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1), -(stupica.D_okr / 2 + stupica.d4 / 2 + stupica.b2), 1); //верхняя фаска doc.ksLineSeg((0), -(stupica.D_okr / 2 + stupica.d4 / 2), (stupica.l1 - stupica.b2), -(stupica.D_okr / 2 + stupica.d4 / 2), 1); //нижняя линия doc.ksLineSeg((0), -(stupica.d2 / 2), (0), -(stupica.D_okr / 2 - stupica.d4 / 2), 1); //от кольца до отверстия doc.ksLineSeg((0), -(stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1 - stupica.b2), -(stupica.D_okr / 2 - stupica.d4 / 2), 1); //нижняя планка doc.ksLineSeg((stupica.l1 - stupica.b2), -(stupica.D_okr / 2 - stupica.d4 / 2), (stupica.l1), -(stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), 1); //нижняя фаска doc.ksLineSeg((stupica.l1), -(stupica.D_okr / 2 - stupica.d4 / 2 - stupica.b2), (stupica.l1), -(stupica.d1 / 2 + stupica.R1), 1); //нижняя фаска doc.ksArcByAngle((stupica.l1 + stupica.R1), -(stupica.d1 / 2 + stupica.R1), (stupica.R1), 90, 180, 1, 1); //скругление doc.ksLineSeg((stupica.l1 + stupica.R1), -(stupica.d1 / 2), (stupica.l - stupica.b1), -(stupica.d1 / 2), 1); //линия внешней стороны стакана вправо doc.ksLineSeg((stupica.l - stupica.b1), -(stupica.d1 / 2), (stupica.l), -(stupica.d1 / 2 - stupica.b1), 1); //faska doc.ksLineSeg((stupica.l), -(stupica.d1 / 2 - stupica.b1), (stupica.l), -(stupica.d / 2), 1); //до отв doc.ksLineSeg((stupica.l - stupica.b1), -(stupica.d / 2), (stupica.l - stupica.b1), -(stupica.d / 2 + stupica.b1), 1); //фаска doc.ksLineSeg((stupica.l2), -(stupica.d / 2), (stupica.l), -(stupica.d / 2), 1); //отв doc.ksLineSeg((stupica.l2), -(stupica.d / 2), (stupica.l2), -(stupica.d2 / 2), 1); doc.ksLineSeg((0), -(stupica.d2 / 2), (stupica.l2), -(stupica.d2 / 2), 1); reference telo = doc.ksEndObj(); ksHatchParam par = (ksHatchParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_HatchParam); if (par != null) { par.Init(); int t = doc.ksGetObjParam(telo, par, ldefin2d.ALLPARAM); doc.ksDeleteMtr(); doc.ksMtr(0, 0, 0, 2, 2); // заменить параметры штриховки par.x = 0.8; doc.ksDeleteMtr(); } } ////////// РАЗМЕРЫ //горизонтальные LinRazm(doc, (stupica.b1), -(stupica.d2 / 2), (stupica.b1), (stupica.d2 / 2), 1, -15, 0, 1); //d2 LinRazm(doc, (stupica.b1), -(stupica.D_external / 2), (stupica.b1), (stupica.D_external / 2), 1, -27, 0, 1); //D_external LinRazm(doc, (stupica.l - stupica.b1), -(stupica.d1 / 2), (stupica.l - stupica.b1), (stupica.d1 / 2), 1, 27, 0, 1); //d1 //вертикальные LinRazm(doc, (0), -(stupica.d2 / 2), (stupica.l2), -(stupica.d2 / 2), 2, 0, -15, 0); //l2 LinRazm(doc, (stupica.l1 - stupica.b2), -(stupica.D_okr / 2), (stupica.l1), -(stupica.D_okr / 2), 2, 0, -(stupica.D_external / 2 - stupica.D_okr / 2) * multiply - 15, 0, 3); //b2 - фаска отверстия LinRazm(doc, (0), -(stupica.D_external / 2 - stupica.b1), (stupica.l1), -(stupica.D_external / 2 - stupica.b1), 2, 0, -27, 0); //l1 LinRazm(doc, (0), (0), (stupica.l), (0), 2, 0, -(stupica.D_external / 2) * multiply - 39, 0); //l LinRazm(doc, (stupica.l - stupica.b1), (0), (stupica.l), (0), 2, 0, -(stupica.d1 / 2) * multiply - 15, 0, 3); //b1 - фаска ребра set_rad_razm(stupica, doc); liniya_s_obrivom(stupica, multiply, doc); } ksViewParam parv2 = (ksViewParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_ViewParam); if (parv2 != null) { number = 2; parv2.Init(); parv2.x = 300; parv2.y = 150; parv2.scale_ = multiply; //масштаб вида parv2.angle = 0; //угол поворота вида parv2.color = Color.FromArgb(10, 20, 10).ToArgb(); //цвет вида в активном состоянии parv2.state = ldefin2d.stACTIVE; parv2.name = "Вид спереди"; // У документа создадим вид с номером 1, масштабом 0.5, под углом 45 гр reference v = doc.ksCreateSheetView(parv2, ref number); //создать вид // Создадим слой с номером 5 doc.ksLayer(5); //внешняя окр doc.ksCircle(0, 0, (stupica.D_external / 2), 1); doc.ksCircle(0, 0, (stupica.D_external / 2 - stupica.b1), 1); //стакан doc.ksCircle(0, 0, (stupica.d1 / 2), 1); doc.ksCircle(0, 0, (stupica.d1 / 2 - stupica.b1), 1); //осевая doc.ksCircle(0, 0, (stupica.D_okr / 2), 3); //паз reference left = doc.ksLineSeg((-stupica.B / 2), (stupica.d / 2 - stupica.b1 * 5), (-stupica.B / 2), (stupica.h - stupica.d / 2 - stupica.R), 1); //левая линия reference right = doc.ksLineSeg((stupica.B / 2), (stupica.d / 2 - stupica.b1 * 5), (stupica.B / 2), (stupica.h - stupica.d / 2 - stupica.R), 1); //правая линия doc.ksArcByAngle((-stupica.B / 2 + stupica.R), (stupica.h - stupica.d / 2 - stupica.R), (stupica.R), 90, 180, 1, 1); //скругление doc.ksArcByAngle((stupica.B / 2 - stupica.R), (stupica.h - stupica.d / 2 - stupica.R), (stupica.R), 0, 90, 1, 1); //скругление doc.ksLineSeg((-stupica.B / 2 + stupica.R), (stupica.h - stupica.d / 2), (stupica.B / 2 - stupica.R), (stupica.h - stupica.d / 2), 1); //верхняя линия //внутр окр reference c1 = doc.ksCircle(0, 0, (stupica.d / 2), 1); reference c2 = doc.ksCircle(0, 0, (stupica.d / 2 + stupica.b1), 1); /* doc.ksTrimmCurve(left, * (-master.B / 2), (master.h - master.d / 2 - master.R), * (-master.B / 2), (master.d / 2), * (-master.B / 2), (master.d / 2 + 0.5), 1);*/ ksMathPointParam p1 = (ksMathPointParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_MathPointParam); object afa = new object(); //точки пересечения считаю сам, т.к. компас... не будем говорить о плохом var c1_l1 = line_cirle_itersection((stupica.d / 2), (-stupica.B / 2)); var c1_l2 = line_cirle_itersection((stupica.d / 2), (stupica.B / 2)); var c2_l1 = line_cirle_itersection((stupica.d / 2 + stupica.b1), (-stupica.B / 2)); var c2_l2 = line_cirle_itersection((stupica.d / 2 + stupica.b1), (stupica.B / 2)); doc.ksTrimmCurve(left, (-stupica.B / 2), (stupica.h - stupica.d / 2 - stupica.R), c1_l1.x, c1_l1.y, c1_l1.x, c1_l1.y, 1); doc.ksTrimmCurve(right, (stupica.B / 2), (stupica.h - stupica.d / 2 - stupica.R), c1_l2.x, c1_l2.y, c1_l2.x, c1_l2.y, 1); doc.ksTrimmCurve(c1, c1_l1.x, c1_l1.y, c1_l2.x, c1_l2.y, 0, -(stupica.d / 2), 1); doc.ksTrimmCurve(c2, c2_l1.x, c2_l1.y, c2_l2.x, c2_l2.y, 0, -(stupica.d / 2 + stupica.b1), 1); doc.ksLineSeg((0), (0), (0), (0), 1); // doc.ksLineSeg((0), (0), (0), (0), 1); // doc.ksLineSeg((0), (0), (0), (0), 1); // int N_otv = (stupica.n + stupica.n3); int angle = 360 / N_otv; List <ksMathPointParam> list_of_holes = new List <ksMathPointParam>(); for (int i = 1; i <= N_otv; i++) { var c_otv = point_by_angle((stupica.D_okr / 2), 90 + angle * (i - 1)); list_of_holes.Add(c_otv); if (i % 2 == 1) { doc.ksCircle(c_otv.x, c_otv.y, (stupica.d4 / 2), 1); doc.ksLineSeg(c_otv.x, c_otv.y + (stupica.d4 / 2 + 5), c_otv.x, c_otv.y - (stupica.d4 / 2 + 5), 3); doc.ksLineSeg(c_otv.x - (stupica.d4 / 2 + 5), c_otv.y, c_otv.x + (stupica.d4 / 2 + 5), c_otv.y, 3); } else { doc.ksCircle(c_otv.x, c_otv.y, (stupica.d3 / 2), 1); doc.ksLineSeg(c_otv.x, c_otv.y + (stupica.d3 / 2 + 5), c_otv.x, c_otv.y - (stupica.d3 / 2 + 5), 3); doc.ksLineSeg(c_otv.x - (stupica.d3 / 2 + 5), c_otv.y, c_otv.x + (stupica.d3 / 2 + 5), c_otv.y, 3); } //как сделать обозначения повернутыми к центру пока не придумал, время и так нема } ////////// РАЗМЕРЫ //диаметры Diam_Razmer(0, 0, (stupica.D_okr / 2), (int)((stupica.D_external - stupica.D_okr) / 2 * multiply) + 15, 1, 1, 45, doc); Diam_Razmer(list_of_holes[0].x, list_of_holes[0].y, (stupica.d4 / 2), 5, 2, 1, 45, doc); Diam_Razmer(list_of_holes[1].x, list_of_holes[1].y, (stupica.d3 / 2), 5, 2, 1, 45, doc); LinRazm(doc, -(stupica.B / 2), (stupica.h - stupica.d / 2 - stupica.R), (stupica.B / 2), (stupica.h - stupica.d / 2 - stupica.R), 2, 0, 12, 0); //l1 LinRazm(doc, (0), -(stupica.d / 2), (0), (stupica.h - stupica.d / 2), 1, (stupica.d1 / 2) * multiply + 10, 0, 0); //l1 } } }