Esempio n. 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);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Нарисовать эскиз двух зеркальных блоков для фоторамки.
        /// </summary>
        /// <param name="photoFrame">Шаблон фоторамки.</param>
        /// <param name="draw">Документ эскиза.</param>
        /// <param name="offsetX">Смещение по OX для начальной точки.</param>
        /// <param name="offsetY">Смещение по OY для начальной точки.</param>
        /// <param name="dx">Расстояние между начальными точками по OX
        ///     отрисовки брусков.</param>
        private void DrawSketchBlock(IPhotoFrame photoFrame,
                                     ksDocument2D draw, double offsetX, double offsetY, double dx)
        {
            var h1 = photoFrame.OuterHeight;
            var h2 = photoFrame.InnerHeight;
            var h  = photoFrame.Interval;

            /* Блок для фоторамки представляет собой трапецию,
             *      либо в частном случае квадрат.
             *          B
             *          |\h
             *          | \ C
             *      h1  |  | h2
             *          |  |
             *          | / D
             *          |/h
             *          A
             */

            //координаты для точки А
            var Ax = _startX - offsetX;
            var Ay = _startY - offsetY;
            //координаты для точки B
            var Bx = Ax;
            var By = Ay + h1;

            //
            var h3 = (h1 - h2) / 2;

            //координаты для точки D
            var Dx = Ax + h;
            var Dy = Ay + h3;
            //координаты для точки C
            var Cx = Dx;
            var Cy = Dy + h2;

            var groupRightId = draw.ksNewGroup(0);

            draw.ksLineSeg(Ax, Ay, Bx, By, 1);
            draw.ksLineSeg(Bx, By, Cx, Cy, 1);
            draw.ksLineSeg(Cx, Cy, Dx, Dy, 1);
            draw.ksLineSeg(Dx, Dy, Ax, Ay, 1);

            draw.ksEndObj();
            //координаты для зеркального отображения блока
            Ax += dx / 2;
            Bx  = Ax;

            //симметричное отображение трапеции (блока)
            draw.ksSymmetryObj(groupRightId, Ax, Ay, Bx, By, "1");
        }