// Создать 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(); } } }