Пример #1
0
        // Создать вид
        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);
                }
            }
        }
Пример #2
0
        // Создать слой
        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);
                }
            }
        }