// Создать вид private void DrawView() { ksViewParam par = (ksViewParam)kompas.GetParamStruct((short)StructType2DEnum.ko_ViewParam); if (par != null) { int number = 5; par.Init(); par.x = 10; par.y = 20; par.scale_ = 0.5; par.angle = 45; par.color = Color.FromArgb(10, 20, 10).ToArgb(); par.state = ldefin2d.stACTIVE; par.name = "User view"; reference v = doc.ksCreateSheetView(par, ref number); number = doc.ksGetViewNumber(v); string buf = string.Format("Создали вид: ref = {0}, number = {1}", v, number); kompas.ksMessage(buf); reference gr = doc.ksNewGroup(0); doc.ksLineSeg(20, 10, 20, 30, 1); doc.ksLineSeg(20, 30, 40, 30, 1); doc.ksLineSeg(40, 30, 40, 10, 1); doc.ksLineSeg(40, 10, 20, 10, 1); int res = doc.ksEndGroup(); doc.ksAddObjGroup(gr, v); kompas.ksMessage("Добавили вид в группу"); kompas.ksMessageBoxResult(); reference p = doc.ksLineSeg(10, 10, 30, 30, 0); doc.ksAddObjGroup(gr, p); kompas.ksMessage("Добавили элемент в группу"); kompas.ksMessageBoxResult(); doc.ksRotateObj(gr, 0, 0, -45); // Взять параметры вида par.Init(); doc.ksGetObjParam(v, par, ldefin2d.ALLPARAM); buf = string.Format("x = {0:.##}, y = {1:.##}, angl = {2:.##}, name = {3}, st = {4}", par.x, par.y, par.angle, par.name, par.state); kompas.ksMessage(buf); // Сделаем текущим системный вид (номер 0) doc.ksOpenView(0); // Состояние вида: только чтение ksLtVariant vart = (ksLtVariant)kompas.GetParamStruct((short)StructType2DEnum.ko_LtVariant); if (vart != null) { vart.Init(); vart.intVal = ldefin2d.stREADONLY; doc.ksSetObjParam(v, vart, ldefin2d.VIEW_LAYER_STATE); } } }
// Создать слой private void DrawLayer() { int n = 0; if (kompas.ksReadInt("Введите номер слоя", 1, 0, 255, ref n) != 1) { return; } // создаем слой, слой становится текущим reference lay = doc.ksLayer(n); doc.ksMtr(20, 15, 0, 1, 1); doc.ksLineSeg(-10, 0, 10, 0, 1); doc.ksLineSeg(10, 0, 10, 20, 1); doc.ksLineSeg(10, 20, -10, 20, 1); doc.ksLineSeg(-10, 20, -10, 0, 1); doc.ksDeleteMtr(); // подсветить слой doc.ksLightObj(lay, 1); // получить номер слоя по указателю и указатель по номеру int n1 = doc.ksGetLayerNumber(lay); reference l = doc.ksGetLayerReference(n1); string buf = string.Format("n = {0:.##}, n1 = {1:.##}, layer = {2:.##}, l = {3:.##}", n, n1, lay, l); kompas.ksMessage(buf); // установить параметры слоя и считать их обратно ksLayerParam par = (ksLayerParam)kompas.GetParamStruct((short)StructType2DEnum.ko_LayerParam); ksLayerParam par1 = (ksLayerParam)kompas.GetParamStruct((short)StructType2DEnum.ko_LayerParam); if ((par != null) & (par1 != null)) { par.Init(); par1.Init(); par.color = (Color.FromArgb(0, 0, 255, 0).ToArgb()); par.state = (ldefin2d.stACTIVE); par.name = ("зеленый"); doc.ksLayer(0); if (doc.ksSetObjParam(l, par, ldefin2d.ALLPARAM) != 1) { kompas.ksMessageBoxResult(); } else { doc.ksGetObjParam(l, par1, ldefin2d.ALLPARAM); buf = string.Format("col = {0:.##}, col1 = {1:.##}, name = {2}, name1 = {3}", par.color, par1.color, par.name, par1.name); kompas.ksMessage(buf); } // снять выделение слоя doc.ksLightObj(lay, 0); // изменить состояние слоя ksLtVariant var = (ksLtVariant)kompas.GetParamStruct((short)StructType2DEnum.ko_LtVariant); if (var != null) { var.Init(); var.intVal = ldefin2d.stACTIVE; doc.ksSetObjParam(l, var, ldefin2d.VIEW_LAYER_STATE); } } }