private bool liniya_s_obrivom(Stupica master, double multiply, ksDocument2D doc) { ksLBreakDimParam param = (ksLBreakDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_LBreakDimParam); if (param == null) { return(true); } ksBreakDimDrawing dPar = (ksBreakDimDrawing)param.GetDPar(); ksLBreakDimSource sPar = (ksLBreakDimSource)param.GetSPar(); ksDimTextParam tPar = (ksDimTextParam)param.GetTPar(); if (dPar == null || sPar == null || tPar == null) { return(true); } dPar.Init(); dPar.textPos = 5; dPar.pl = false; dPar.pt = 1; //стрелка внутри dPar.angle = 90; dPar.length = 10; sPar.Init(); //точка размер чего строим sPar.x1 = master.l - master.b1; sPar.y1 = -(master.d / 2); //точки размерной линии sPar.x2 = master.l + 15 / multiply; sPar.y2 = -(master.d / 2); sPar.x3 = master.l + 15 / multiply; sPar.y3 = 0; tPar.Init(false); tPar.bitFlag = 0; //выводится только номинал tPar.style = 3; //текст размерной надписи???? tPar.stringFlag = false; tPar.sign = 1; //diametr ksChar255 str = (ksChar255)_kompas.GetParamStruct((short)StructType2DEnum.ko_Char255); ksDynamicArray arrText = (ksDynamicArray)tPar.GetTextArr(); if (str == null || arrText == null) { return(true); } str.str = master.d.ToString(); arrText.ksAddArrayItem(-1, str); int obj = doc.ksLinBreakDimension(param); //отрисовка return(false); }
private void set_rad_razm(Stupica master, ksDocument2D doc) { ksRDimParam aDim = (ksRDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_RDimParam); ksTextLineParam textLine = (ksTextLineParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam); ksTextItemParam textItem = (ksTextItemParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam); textLine.Init(); textItem.Init(); ksDimTextParam tPar = (ksDimTextParam)aDim.GetTPar(); ksTextItemFont font = (ksTextItemFont)textItem.GetItemFont(); ksDynamicArray arra = (ksDynamicArray)textLine.GetTextItemArr(); ksRDimSourceParam sPar = (ksRDimSourceParam)aDim.GetSPar(); ksRDimDrawingParam dPar = (ksRDimDrawingParam)aDim.GetDPar(); tPar.Init(true); tPar.SetBitFlagValue(ldefin2d._AUTONOMINAL, true); tPar.sign = 3; //знак радиуса font.Init(); font.height = 5; font.ksu = 1; font.fontName = "GOST type A"; font.SetBitVectorValue(ldefin2d.NEW_LINE, true); arra.ksAddArrayItem(-1, textItem); sPar.Init(); sPar.xc = (master.l1 + master.R1); sPar.yc = (master.d1 / 2 + master.R1); sPar.rad = (master.R1); dPar.Init(); dPar.textPos = -15; dPar.pt1 = 1; //1 -стрелка изнутри 2-стрелка снаружи 0-нетс стрелки dPar.pt2 = 0; dPar.shelfDir = 1; dPar.ang = 180 + 45; int obj = doc.ksRadDimension(aDim); }
private void Diam_Razmer(double xc, double yc, double rad, int dlina_vinosnoi_linii, short tip_strelki, int napr_vinosnoi_linii, int angle_vinosnoi_linii, ksDocument2D doc) { ksRDimParam aDim = (ksRDimParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_RDimParam); ksTextLineParam textLine = (ksTextLineParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextLineParam); ksTextItemParam textItem = (ksTextItemParam)_kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam); if (aDim == null || textLine == null || textItem == null) { return; } textLine.Init(); textItem.Init(); ksDimTextParam tPar = (ksDimTextParam)aDim.GetTPar(); ksTextItemFont font = (ksTextItemFont)textItem.GetItemFont(); ksDynamicArray arra = (ksDynamicArray)textLine.GetTextItemArr(); ksRDimSourceParam sPar = (ksRDimSourceParam)aDim.GetSPar(); ksRDimDrawingParam dPar = (ksRDimDrawingParam)aDim.GetDPar(); if (tPar == null || font == null || sPar == null || dPar == null) { return; } tPar.Init(true); tPar.SetBitFlagValue(ldefin2d._AUTONOMINAL, true); tPar.sign = 1; //знак диаметра /* * font.Init(); * font.height = 5; * font.ksu = 1; * font.fontName = "GOST type A"; * font.SetBitVectorValue(ldefin2d.NEW_LINE, true); */ arra.ksAddArrayItem(-1, textItem); ksDynamicArray arr1 = (ksDynamicArray)tPar.GetTextArr(); if (arr1 == null) { return; } arr1.ksAddArrayItem(-1, textLine); sPar.Init(); sPar.xc = xc; sPar.yc = yc; sPar.rad = rad; dPar.Init(); dPar.textPos = dlina_vinosnoi_linii; dPar.pt1 = tip_strelki; dPar.pt2 = tip_strelki; dPar.shelfDir = napr_vinosnoi_linii; dPar.ang = angle_vinosnoi_linii; int obj = doc.ksDiamDimension(aDim); }
// Создать Bezier сплайн private void DrawBezier() { string buf = string.Empty; double[] x = new double[] { 0, 20, 50, 70, 100, 50 }; double[] y = new double[] { 0, 20, 10, 20, 0, -50 }; // построить Bezier сплайн doc.ksBezier(0, 1); for (int i = 0; i < 5; i++) { doc.ksPoint(x[i], y[i], 0); } reference p = doc.ksEndObj(); // взять параметры Bezier сплайна ksMathPointParam pPar = (ksMathPointParam)kompas.GetParamStruct((short)StructType2DEnum.ko_MathPointParam); ksBezierParam par = (ksBezierParam)kompas.GetParamStruct((short)StructType2DEnum.ko_BezierParam); if ((pPar != null) && (par != null)) { par.Init(); ksDynamicArray arr = (ksDynamicArray)par.GetMathPointArr(); if (arr != null) { int t = doc.ksGetObjParam(p, par, ldefin2d.ALLPARAM); int count = arr.ksGetArrayCount(); buf = string.Format("t = {0}, count = {1}, close = {2}, tl = {3}", t, count, par.closed, par.style); kompas.ksMessage(buf); for (int i = 0; i < count; i++) { arr.ksGetArrayItem(i, pPar); buf = string.Format("x[{0}] = {1:##0.#}, y[{2}] = {3:##0.#}", i, pPar.x, i, pPar.y); kompas.ksMessage(buf); } // заменить параметры Bezier сплайна arr.ksClearArray(); // подставим свою память for (int i = 0; i < 6; i++) { pPar.x = x[i]; pPar.y = y[i]; arr.ksAddArrayItem(-1, pPar); } par.style = 2; par.closed = 1; if (doc.ksSetObjParam(p, par, ldefin2d.ALLPARAM) == 1) { kompas.ksMessage("Изменили объект"); } else { kompas.ksMessageBoxResult(); } arr.ksDeleteArray(); } } }