/// <summary>
 /// Нарисовать четырехугольник с непрямыми углами с отверстием некруглым
 /// </summary>
 internal void DrawQuadrangleWithNonCircularHole()
 {
     if (kompas != null)
     {
         kompas.Visible = true;
         ksDocument3D iDocument3D = (ksDocument3D)kompas.Document3D();
         if (iDocument3D.Create(false /*видимый*/, true /*деталь*/))
         {
             iDocument3D.fileName = "With Non-Circular Hole";
             ksPart iPart = (ksPart)iDocument3D.GetPart((short)Part_Type.pTop_Part);     // новый компонент (.pNew_Part - был)
             if (iPart != null)
             {
                 //// получим интерфейс базовой плоскости XOY
                 ksEntity planeXOY = (ksEntity)iPart.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);    // 1-интерфейс на плоскость XOY
                 ksEntity iSketch  = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_sketch);
                 if (iSketch != null)
                 {
                     // интерфейс свойств эскиза
                     ksSketchDefinition iDefinitionSketch = (ksSketchDefinition)iSketch.GetDefinition();
                     if (iDefinitionSketch != null)
                     {
                         iDefinitionSketch.SetPlane(planeXOY);
                         iSketch.Create();
                         ksDocument2D iDocument2D = (ksDocument2D)iDefinitionSketch.BeginEdit();
                         iDocument2D.ksLineSeg(-30.0, -30.0, 30.0, -30.0, 1);
                         iDocument2D.ksLineSeg(30.0, -30.0, 0, 30.0, 1);
                         iDocument2D.ksLineSeg(0, 30.0, -60.0, 30.0, 1);
                         iDocument2D.ksLineSeg(-60.0, 30.0, -30.0, -30.0, 1);
                         iDocument2D.ksLineSeg(-10.0, -18.660254, -28.660254, 13.660254, 1);
                         iDocument2D.ksLineSeg(-20, 18.660254, -1.339746, -13.660254, 1);
                         iDocument2D.ksArcByAngle(-24.330127, 16.160254, 5, 30.0, 210.0, 1, 1);
                         iDocument2D.ksArcByAngle(-5.669873, -16.160254, 5, 210.0, 30.0, 1, 1);
                         iDefinitionSketch.EndEdit();
                         ksEntity entityExtr = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                         if (entityExtr != null)
                         {
                             // интерфейс свойств базовой операции выдавливания
                             ksBossExtrusionDefinition extrusionDef = (ksBossExtrusionDefinition)entityExtr.GetDefinition(); // интерфейс базовой операции выдавливания
                             if (extrusionDef != null)
                             {
                                 ksExtrusionParam extrProp = (ksExtrusionParam)extrusionDef.ExtrusionParam(); // интерфейс структуры параметров выдавливания
                                 if (extrProp != null)
                                 {
                                     extrusionDef.SetSketch(iSketch);                       // эскиз операции выдавливания
                                     extrProp.direction   = (short)Direction_Type.dtNormal; // направление выдавливания (прямое)
                                     extrProp.typeNormal  = (short)End_Type.etBlind;        // тип выдавливания (строго на глубину)
                                     extrProp.depthNormal = 10;                             // глубина выдавливания
                                     entityExtr.Create();                                   // создадим операцию
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
        /// <summary>
        /// Выдавливание
        /// </summary>
        /// <param name="part"></param>
        /// <param name="sketch"></param>
        /// <param name="length"></param>
        /// <param name="type"></param>
        private static void Extrude(ksPart part,
                                    ksEntity sketch, int length, short type)
        {
            ksEntity extrude = part.NewEntity((short)
                                              Obj3dType.o3d_bossExtrusion);
            ksBossExtrusionDefinition extrDef = extrude.GetDefinition();

            extrDef.directionType = type;
            extrDef.SetSketch(sketch);
            ksExtrusionParam extrudeParam = extrDef.ExtrusionParam();

            extrudeParam.depthNormal = length;

            extrude.Create();
        }
        /// <summary>
        /// Выдавливание формы
        /// </summary>
        /// <param name="part">Компонент сборки</param>
        /// <param name="formSketch">Эскиз конфетной формы</param>
        /// <param name="depth">Глубина выдавливания</param>
        private void CandySettingsExtrude(ksPart part, ksEntity formSketch,
                                          double depth)
        {
            ksEntity formExtrude =
                part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
            ksBossExtrusionDefinition formExtrudeDefinition =
                formExtrude.GetDefinition();

            formExtrudeDefinition.directionType =
                (short)Direction_Type.dtMiddlePlane;
            formExtrudeDefinition.SetSketch(formSketch);
            ksExtrusionParam extrudeParam =
                formExtrudeDefinition.ExtrusionParam();

            extrudeParam.depthNormal = depth;
            formExtrude.Create();
        }
Exemple #4
0
        /// <summary>
        /// Выдавливание
        /// </summary>
        /// <param name="ksEntity"></param>
        /// <param name="name">Название/param>
        /// <param name="size">размер</param>
        /// <param name="style">стиль</param>
        /// <param name="typeExstrusion">тип выдавливания</param>
        private void CreatExtrusionOffsetMethod(ksEntity ksEntity,
                                                string name, double size, short style, short typeExstrusion)
        {
            ksEntity ksEntityBossExtrusionn;

            //Cоздание объекта,который выдавливается и возращает указатель
            ksEntityBossExtrusionn =
                _ksPart.NewEntity((short)Obj3dType.o3d_bossExtrusion);
            ksBossExtrusionDefinition ksBossExtrusionDefinition =
                (ksBossExtrusionDefinition)ksEntityBossExtrusionn.
                GetDefinition();

            ksBossExtrusionDefinition.directionType = typeExstrusion;
            ksBossExtrusionDefinition.SetSideParam
                (true, style, size, 0, true);
            ksBossExtrusionDefinition.SetSketch(ksEntity);
            ksEntityBossExtrusionn.name = name;
            ksEntityBossExtrusionn.Create();
        }
Exemple #5
0
        /// <summary>
        /// Выдавливание по эскизу
        /// </summary>
        /// <param name="iPart">Интерфейс детали</param>
        /// <param name="iSketch">Эскиз</param>
        /// <param name="depth">Глубина выдавливания</param>
        /// <param name="direction">Направление выдавливания</param>
        private void ExctrusionSketch(ksPart iPart, ksEntity iSketch, double depth, bool direction, int X)
        {
            //Операция выдавливание
            ksEntity entityExtr = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_bossExtrusion);
            //Интерфейс операции выдавливания
            ksBossExtrusionDefinition extrusionDef = (ksBossExtrusionDefinition)entityExtr.GetDefinition();
            //Интерфейс структуры параметров выдавливания
            ksExtrusionParam extrProp = (ksExtrusionParam)extrusionDef.ExtrusionParam();

            //Эскиз операции выдавливания
            extrusionDef.SetSketch(iSketch);
            //Направление выдавливания
            if (direction == false)
            {
                extrProp.direction = (short)Direction_Type.dtReverse;
            }
            else
            {
                extrProp.direction = (short)Direction_Type.dtNormal;
            }
            //Тип выдавливания
            extrProp.typeNormal = (short)End_Type.etBlind;

            //Глубина выдавливания
            if (direction == false)
            {
                extrProp.depthReverse = depth;
            }
            else
            {
                extrProp.depthNormal = depth;
            }
            //Создание операции ???
            //Colors(X);
            entityExtr.SetAdvancedColor(X, 2, 2, 2, 3, 1, 2);
            entityExtr.Create();
        }
Exemple #6
0
        /// <summary>
        /// Выдавливание эскиза
        /// </summary>
        /// <param name="name"></param>
        /// <param name="length"></param>
        /// <param name="ksEntity"></param>
        private void ExtrusionSkecth(string name, double length,
                                     ksEntity ksEntity, short typeExstrusion, bool fillet)
        {
            const int grayColor         = 16777215;
            ksEntity  ksEntityExtrusion = (ksEntity)_ksPart.NewEntity(
                typeExstrusion);
            ksBossExtrusionDefinition ksBaseExtrusionDefinition =
                (ksBossExtrusionDefinition)
                ksEntityExtrusion.GetDefinition();

            ksBaseExtrusionDefinition.SetSideParam(true,
                                                   (short)End_Type.etBlind,
                                                   length, 0, true);
            ksBaseExtrusionDefinition.SetSketch(ksEntity);
            ksEntityExtrusion.name     = name;
            ksEntityExtrusion.useColor = 0;
            ksEntityExtrusion.SetAdvancedColor(grayColor, 0.9, 0.8,
                                               0.7, 0.6, 1, 0.4);
            ksEntityExtrusion.Create();
            if (fillet == true)
            {
                Filled(ksEntityExtrusion);
            }
        }
 /// <summary>
 /// Нарисовать четырехугольник с непрямыми углами с круглым и некруглым отверстиями
 /// </summary>
 internal void DrawQuadrangleWithRoundAndNonCircularHoles()
 {
     if (kompas != null)
     {
         kompas.Visible = true;
         ksDocument3D iDocument3D = (ksDocument3D)kompas.Document3D();
         if (iDocument3D.Create(false /*видимый*/, true /*деталь*/))
         {
             iDocument3D.fileName = "With Round and Non Circular Holes";
             ksPart iPart = (ksPart)iDocument3D.GetPart((short)Part_Type.pTop_Part);     // новый компонент (.pNew_Part - был)
             if (iPart != null)
             {
                 //// получим интерфейс базовой плоскости XOY
                 ksEntity planeXOY = (ksEntity)iPart.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);    // 1-интерфейс на плоскость XOY
                 ksEntity iSketch  = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_sketch);
                 if (iSketch != null)
                 {
                     // интерфейс свойств эскиза
                     ksSketchDefinition iDefinitionSketch = (ksSketchDefinition)iSketch.GetDefinition();
                     if (iDefinitionSketch != null)
                     {
                         iDefinitionSketch.SetPlane(planeXOY);
                         iSketch.Create();
                         ksDocument2D iDocument2D = (ksDocument2D)iDefinitionSketch.BeginEdit();
                         iDocument2D.ksLineSeg(-30.0, -30.0, 30.0, -30.0, 1);
                         iDocument2D.ksLineSeg(30.0, -30.0, 0, 30.0, 1);
                         iDocument2D.ksLineSeg(0, 30.0, -60.0, 30.0, 1);
                         iDocument2D.ksLineSeg(-60.0, 30.0, -30.0, -30.0, 1);
                         iDocument2D.ksLineSeg(-9.40983, 11.18034, -31.77051, 11.18034, 1);
                         iDocument2D.ksLineSeg(-31.77051, 11.18034, -20.59017, -11.18034, 1);
                         iDocument2D.ksLineSeg(-20.59017, -11.18034, 1.77051, -11.18034, 1);
                         iDocument2D.ksLineSeg(1.77051, -11.18034, -9.40983, 11.18034, 1);
                         iDocument2D.ksCircle(-45.885255, 20.59017, 4, 1);
                         iDocument2D.ksCircle(-25.295085, 20.59017, 4, 1);
                         iDocument2D.ksCircle(-4.704921, 20.59017, 4, 1);
                         iDocument2D.ksCircle(15.885249, -20.59017, 4, 1);
                         iDocument2D.ksCircle(-4.704915, -20.59017, 4, 1);
                         iDocument2D.ksCircle(-25.295085, -20.59017, 4, 1);
                         iDefinitionSketch.EndEdit();
                         ksEntity entityExtr = (ksEntity)iPart.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                         if (entityExtr != null)
                         {
                             // интерфейс свойств базовой операции выдавливания
                             ksBossExtrusionDefinition extrusionDef = (ksBossExtrusionDefinition)entityExtr.GetDefinition(); // интерфейс базовой операции выдавливания
                             if (extrusionDef != null)
                             {
                                 ksExtrusionParam extrProp = (ksExtrusionParam)extrusionDef.ExtrusionParam(); // интерфейс структуры параметров выдавливания
                                 if (extrProp != null)
                                 {
                                     extrusionDef.SetSketch(iSketch);                       // эскиз операции выдавливания
                                     extrProp.direction   = (short)Direction_Type.dtNormal; // направление выдавливания (прямое)
                                     extrProp.typeNormal  = (short)End_Type.etBlind;        // тип выдавливания (строго на глубину)
                                     extrProp.depthNormal = 10;                             // глубина выдавливания
                                     entityExtr.Create();                                   // создадим операцию
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Exemple #8
0
        ///<summary>
        /// Процедура построения кадла
        /// </summary>
        private void CreateKadlo(double kadloRadius, double kadloHeight, double kadloThickness)
        {
            ksDocument3D iDocument3D = (ksDocument3D)_kompas.Document3D();

            if (iDocument3D.Create(false /*видимый*/, true /*деталь*/))
            {
                // новый компонент
                _part = (ksPart)iDocument3D.GetPart((short)Part_Type.pTop_Part);
                if (_part != null)
                {
                    // получим интерфейс базовой плоскости XOY
                    ksEntity planeXOY = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                    ksEntity iSketch  = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                    if (iSketch != null)
                    {
                        // создадим новый эскиз
                        ksEntity entitySketch1 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                        if (entitySketch1 != null)
                        {
                            // интерфейс свойств эскиза
                            ksSketchDefinition sketchDef1 = (ksSketchDefinition)entitySketch1.GetDefinition();
                            if (sketchDef1 != null)
                            {
                                // установим плоскость
                                sketchDef1.SetPlane(planeXOY);
                                // создадим эскиз
                                entitySketch1.Create();

                                // интерфейс редактора эскиза
                                ksDocument2D sketchEdit1 = (ksDocument2D)sketchDef1.BeginEdit();
                                sketchEdit1.ksCircle(0, 0, kadloRadius, 1);
                                // завершение редактирования эскиза
                                sketchDef1.EndEdit();

                                // создание операции выдавливания
                                ksEntity entityBossExtr = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                                if (entityBossExtr != null)
                                {
                                    // Получение свойств интерфейса выдавливания
                                    ksBossExtrusionDefinition bossExtrDef = (ksBossExtrusionDefinition)entityBossExtr.GetDefinition();
                                    if (bossExtrDef != null)
                                    {
                                        // интерфейс структуры параметров выдавливания
                                        ksExtrusionParam extrProp = (ksExtrusionParam)bossExtrDef.ExtrusionParam();
                                        // интерфейс структуры параметров тонкой стенки
                                        ksThinParam thinProp = (ksThinParam)bossExtrDef.ThinParam();
                                        if (extrProp != null && thinProp != null)
                                        {
                                            // эскиз операции выдавливания
                                            bossExtrDef.SetSketch(entitySketch1);
                                            // направление выдавливания (обратное)
                                            extrProp.direction = (short)Direction_Type.dtNormal;
                                            // тип выдавливания (строго на глубину)
                                            extrProp.typeNormal = (short)End_Type.etBlind;
                                            // глубина выдавливания
                                            extrProp.depthNormal = kadloHeight;
                                            // наличие тонкой стенки
                                            thinProp.thin = true;
                                            //Толщина стенки в обратном направлении
                                            thinProp.reverseThickness = kadloThickness;
                                            //Направление формирования тонкой стенки
                                            thinProp.thinType = (short)Direction_Type.dtBoth;
                                            // создадим операцию
                                            entityBossExtr.Create();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #9
0
        ///<summary>
        ///Создание подструнника
        ///</summary>
        private void CreateSnare(bool ExistSnare, int stringSnare, double kadloRadius, double thicknessBottomDrumhead)
        {
            // Проверка на существование компонента сборки
            if (_part != null)
            {
                // создадим новый эскиз
                var SnareSketch = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                if (SnareSketch != null)
                {
                    // Получение интерфейса свойств эскиза
                    var definitionSnare = (ksSketchDefinition)SnareSketch.GetDefinition();
                    if (definitionSnare != null)
                    {
                        // Получение интерфейса базовой плоскости XOY
                        var      basePlane                = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                        ksEntity entityOffsetPlane        = _part.NewEntity((short)Obj3dType.o3d_planeOffset);
                        ksPlaneOffsetDefinition offsetDef = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                        offsetDef.offset    = thicknessBottomDrumhead;
                        offsetDef.direction = false;
                        offsetDef.SetPlane(basePlane);
                        // создаем смещенную плоскость
                        entityOffsetPlane.Create();
                        ksEntity snare    = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                        var      defSnare = (ksSketchDefinition)snare.GetDefinition();
                        defSnare.SetPlane(offsetDef);
                        snare.Create();
                        ksDocument2D SnareEdit = (ksDocument2D)defSnare.BeginEdit();
                        // Рисуем основание подструнника
                        SnareEdit.ksLineSeg(-15, kadloRadius - 5, 15, kadloRadius - 5, 1);
                        SnareEdit.ksLineSeg(15, kadloRadius - 5, 15, kadloRadius - 10, 1);
                        SnareEdit.ksLineSeg(15, kadloRadius - 10, -15, kadloRadius - 10, 1);
                        SnareEdit.ksLineSeg(-15, kadloRadius - 10, -15, kadloRadius - 5, 1);

                        SnareEdit.ksLineSeg(-15, -kadloRadius + 5, 15, -kadloRadius + 5, 1);
                        SnareEdit.ksLineSeg(15, -kadloRadius + 5, 15, -kadloRadius + 10, 1);
                        SnareEdit.ksLineSeg(15, -kadloRadius + 10, -15, -kadloRadius + 10, 1);
                        SnareEdit.ksLineSeg(-15, -kadloRadius + 10, -15, -kadloRadius + 5, 1);

                        defSnare.EndEdit();

                        // Выдавливание подструнника
                        ksEntity entityBossExtr3 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                        if (entityBossExtr3 != null)
                        {
                            ksBossExtrusionDefinition bossExtrDef3 = (ksBossExtrusionDefinition)entityBossExtr3.GetDefinition();
                            if (bossExtrDef3 != null)
                            {
                                // интерфейс структуры параметров выдавливания
                                ksExtrusionParam extrProp3 = (ksExtrusionParam)bossExtrDef3.ExtrusionParam();
                                if (extrProp3 != null)
                                {
                                    // эскиз операции выдавливания
                                    bossExtrDef3.SetSketch(snare);
                                    // направление выдавливания (обратное)
                                    extrProp3.direction = (short)Direction_Type.dtReverse;
                                    // тип выдавливания (строго на глубину)
                                    extrProp3.typeReverse = (short)End_Type.etBlind;
                                    // глубина выдавливания
                                    extrProp3.depthReverse = 4;
                                    // создадим операцию
                                    entityBossExtr3.Create();
                                }
                            }
                        }
                        // Создание струн подструнника
                        var StringSketch = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                        if (StringSketch != null)
                        {
                            // Получение интерфейса свойств эскиза
                            var definitionString = (ksSketchDefinition)StringSketch.GetDefinition();
                            if (definitionString != null)
                            {
                                // Получение интерфейса базовой плоскости XOZ
                                var      stringPlane    = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOZ);
                                ksEntity stSnare        = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                                var      defStringSnare = (ksSketchDefinition)stSnare.GetDefinition();
                                defStringSnare.SetPlane(stringPlane);
                                stSnare.Create();
                                ksDocument2D stringSnareEdit = (ksDocument2D)defStringSnare.BeginEdit();
                                // В ряд рисуются круги (сечение струн)
                                int k = 1;
                                for (double x = -11; x < 12; x += 3)
                                {
                                    stringSnareEdit.ksCircle(x, thicknessBottomDrumhead + 2, 1, 1);
                                    if (k < stringSnare)
                                    {
                                        k++;
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                                defStringSnare.EndEdit();

                                // Выдавливание струн подструнника
                                ksEntity entityBossExtr4 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                                if (entityBossExtr4 != null)
                                {
                                    ksBossExtrusionDefinition bossExtrDef3 = (ksBossExtrusionDefinition)entityBossExtr4.GetDefinition();
                                    if (bossExtrDef3 != null)
                                    {
                                        // интерфейс структуры параметров выдавливания
                                        ksExtrusionParam extrProp3 = (ksExtrusionParam)bossExtrDef3.ExtrusionParam();
                                        if (extrProp3 != null)
                                        {
                                            // эскиз операции выдавливания
                                            bossExtrDef3.SetSketch(stSnare);
                                            // направление выдавливания (обе стороны)
                                            extrProp3.direction = (short)Direction_Type.dtBoth;
                                            // тип выдавливания (до ближайшей поверхности)
                                            extrProp3.typeReverse = (short)End_Type.etUpToNearSurface;
                                            extrProp3.typeNormal  = (short)End_Type.etUpToNearSurface;
                                            // создадим операцию
                                            entityBossExtr4.Create();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #10
0
        ///<summary>
        /// Создание креплений
        /// </summary>
        private void CreateMountong(double kadloHeight, double thicknessTopDrumhead, double thicknessBottomDrumhead, double rimCenter, int numberMounting)
        {
            if (_part != null)
            {
                // интерфейс свойств эскиза
                ksEntity mount = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                if (mount != null)
                {
                    // Получение интерфейса свойств эскиза
                    ksSketchDefinition rimSketch = (ksSketchDefinition)mount.GetDefinition();
                    if (rimSketch != null)
                    {
                        ksEntity basePlane;
                        // Получение интерфейса базовой плоскости XOY
                        basePlane = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                        // установим плоскость базовой для эскиза
                        rimSketch.SetPlane(basePlane);
                        ksEntity entityOffsetPlane          = _part.NewEntity((short)Obj3dType.o3d_planeOffset);
                        ksPlaneOffsetDefinition offsetDef01 = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                        // Расстояние смещения
                        offsetDef01.offset    = thicknessBottomDrumhead;
                        offsetDef01.direction = false;
                        offsetDef01.SetPlane(basePlane);
                        // создаем смещенную плоскость
                        entityOffsetPlane.Create();
                        // установим плоскость базовой для эскиза
                        rimSketch.SetPlane(offsetDef01);
                        // создадим эскиз
                        mount.Create();
                        // интерфейс редактора эскиза
                        ksDocument2D sketchEdit = (ksDocument2D)rimSketch.BeginEdit();
                        int          i          = 1;
                        for (double phi = 0; phi < 2 * Math.PI; phi += 2 * Math.PI / numberMounting)
                        {
                            double x = rimCenter * Math.Cos(phi);
                            double y = rimCenter * Math.Sin(phi);
                            //круглое отверстие
                            sketchEdit.ksCircle(x, y, 2.5, 1);

                            if (i < numberMounting)
                            {
                                i++;
                            }
                            else
                            {
                                break;
                            }
                        }

                        // завершение редактирования эскиза
                        rimSketch.EndEdit();
                        ksEntity entityBossExtr3 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                        if (entityBossExtr3 != null)
                        {
                            ksBossExtrusionDefinition bossExtrDef3 = (ksBossExtrusionDefinition)entityBossExtr3.GetDefinition();
                            if (bossExtrDef3 != null)
                            {
                                // интерфейс структуры параметров выдавливания
                                ksExtrusionParam extrProp3 = (ksExtrusionParam)bossExtrDef3.ExtrusionParam();
                                // интерфейс структуры параметров тонкой стенки
                                ksThinParam thinProp3 = (ksThinParam)bossExtrDef3.ThinParam();
                                if (extrProp3 != null)
                                {
                                    // эскиз операции выдавливания
                                    bossExtrDef3.SetSketch(rimSketch);
                                    // направление выдавливания
                                    extrProp3.direction = (short)Direction_Type.dtNormal;
                                    // тип выдавливания
                                    extrProp3.typeNormal = (short)End_Type.etBlind;
                                    // Высота выдавливания
                                    extrProp3.depthNormal = kadloHeight;
                                    // создадим операцию
                                    entityBossExtr3.Create();
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #11
0
        ///<summary>
        /// Создание ободов
        ///</summary>
        private void CreateRim(double kadloHeight, double thicknessTopDrumhead, double thicknessBottomDrumhead, double rimRadius, double rimWidth, double rimHeight)
        {
            #region Создание смещенной плоскости для верхнего обода

            ksSketchDefinition rimSketch = null;
            // Проверка на существование компонента сборки
            if (_part != null)
            {
                // создадим новый эскиз
                var RimSketch = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                if (RimSketch != null)
                {
                    // Получение интерфейса свойств эскиза
                    rimSketch = (ksSketchDefinition)RimSketch.GetDefinition();
                    if (rimSketch != null)
                    {
                        // Получение интерфейса базовой плоскости XOY
                        var      basePlane1                = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                        ksEntity entityOffsetPlane1        = _part.NewEntity((short)Obj3dType.o3d_planeOffset);
                        ksPlaneOffsetDefinition offsetDef1 = (ksPlaneOffsetDefinition)entityOffsetPlane1.GetDefinition();
                        // Высота кадла + толщина пластика+0.1
                        offsetDef1.offset = kadloHeight + thicknessTopDrumhead + 0.1;
                        // Направление смещения
                        offsetDef1.direction = true;
                        offsetDef1.SetPlane(basePlane1);
                        // Создаем смещенную плоскость
                        entityOffsetPlane1.Create();

                        ksEntity _rimSketch = _part.NewEntity((short)Obj3dType.o3d_sketch);

                        var sketchDef3 = (ksSketchDefinition)_rimSketch.GetDefinition();
                        sketchDef3.SetPlane(entityOffsetPlane1);
                        _rimSketch.Create();

                        ksDocument2D sketchEdit3 = (ksDocument2D)sketchDef3.BeginEdit();
                        //рисуем окружность
                        sketchEdit3.ksCircle(0, 0, rimRadius, 1);
                        sketchDef3.EndEdit();

                        #endregion // Создание смещенной плоскости для верхнего обода

                        #region  Выдавливание верхнего обода
                        ksEntity entityBossExtr3 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                        if (entityBossExtr3 != null)
                        {
                            ksBossExtrusionDefinition bossExtrDef3 = (ksBossExtrusionDefinition)entityBossExtr3.GetDefinition();
                            if (bossExtrDef3 != null)
                            {
                                // интерфейс структуры параметров выдавливания
                                ksExtrusionParam extrProp3 = (ksExtrusionParam)bossExtrDef3.ExtrusionParam();
                                // интерфейс структуры параметров тонкой стенки
                                ksThinParam thinProp3 = (ksThinParam)bossExtrDef3.ThinParam();
                                if (extrProp3 != null && thinProp3 != null)
                                {
                                    // эскиз операции выдавливания
                                    bossExtrDef3.SetSketch(_rimSketch);
                                    // направление выдавливания (прямое)
                                    extrProp3.direction = (short)Direction_Type.dtNormal;
                                    // тип выдавливания (строго на глубину)
                                    extrProp3.typeNormal = (short)End_Type.etBlind;
                                    // глубина выдавливания  ВЫСОТА ОБОДА
                                    extrProp3.depthNormal = rimHeight;
                                    thinProp3.thin        = true;
                                    // Толщина стенки в обратном направлении
                                    thinProp3.reverseThickness = rimWidth;
                                    // Направление формирования тонкой стенки
                                    thinProp3.thinType = (short)Direction_Type.dtBoth;
                                    // создадим операцию
                                    entityBossExtr3.Create();
                                }
                            }
                        }
                    }
                    #endregion Выдавливание верхнего обода

                    #region Создание плоскости для нижнего обода
                    ksEntity           entityBossExtr4 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                    ksSketchDefinition rimSketch2      = null;
                    if (entityBossExtr4 != null)
                    {
                        // создадим новый эскиз
                        var RimSketch2 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                        if (RimSketch2 != null)
                        {
                            // Получение интерфейса свойств эскиза
                            rimSketch2 = (ksSketchDefinition)RimSketch2.GetDefinition();

                            if (rimSketch2 != null)
                            {
                                // Получение интерфейса базовой плоскости XOY
                                var      basePlane2                = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                                ksEntity entityOffsetPlane2        = _part.NewEntity((short)Obj3dType.o3d_planeOffset);
                                ksPlaneOffsetDefinition offsetDef1 = (ksPlaneOffsetDefinition)entityOffsetPlane2.GetDefinition();
                                // толщина пластика + 0.1
                                offsetDef1.offset    = thicknessBottomDrumhead + 0.1;
                                offsetDef1.direction = false;
                                offsetDef1.SetPlane(basePlane2);
                                // создаем смещенную плоскость
                                entityOffsetPlane2.Create();

                                ksEntity _rimSketch2 = _part.NewEntity((short)Obj3dType.o3d_sketch);
                                var      sketchDef4  = (ksSketchDefinition)_rimSketch2.GetDefinition();
                                sketchDef4.SetPlane(entityOffsetPlane2);
                                _rimSketch2.Create();

                                ksDocument2D sketchEdit4 = (ksDocument2D)sketchDef4.BeginEdit();
                                //рисуем окружность
                                sketchEdit4.ksCircle(0, 0, rimRadius, 1);
                                sketchDef4.EndEdit();
                                #endregion Создание плоскости для нижнего обода

                                #region Выдавливание нижнего обода
                                ksEntity entityBossExtr5 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                                if (entityBossExtr4 != null)
                                {
                                    ksBossExtrusionDefinition bossExtrDef4 = (ksBossExtrusionDefinition)entityBossExtr4.GetDefinition();
                                    if (bossExtrDef4 != null)
                                    {
                                        // интерфейс структуры параметров выдавливания
                                        ksExtrusionParam extrProp4 = (ksExtrusionParam)bossExtrDef4.ExtrusionParam();
                                        // интерфейс структуры параметров тонкой стенки
                                        ksThinParam thinProp4 = (ksThinParam)bossExtrDef4.ThinParam();
                                        if (extrProp4 != null && thinProp4 != null)
                                        {
                                            // эскиз операции выдавливания
                                            bossExtrDef4.SetSketch(_rimSketch2);
                                            // направление выдавливания (обратное)
                                            extrProp4.direction = (short)Direction_Type.dtReverse;
                                            // тип выдавливания (строго на глубину)
                                            extrProp4.typeReverse = (short)End_Type.etBlind;
                                            // глубина выдавливания  ВЫСОТА ОБОДА
                                            extrProp4.depthReverse = rimHeight;
                                            thinProp4.thin         = true;
                                            // Толщина стенки в обратном направлении
                                            thinProp4.reverseThickness = rimWidth;
                                            // Направление формирования тонкой стенки
                                            thinProp4.thinType = (short)Direction_Type.dtBoth;
                                            // создадим операцию
                                            entityBossExtr4.Create();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #12
0
        ///<summary>
        /// Процедура построениея верхнего и нижнего пластиков
        ///</summary>
        private void CreateDrumhead(double kadloHeight, double kadloRadius, double thicknessTopDrumhead, double thicknessBottomDrumhead)
        {
            // Создание плоскости для верхнего пластика
            #region
            ksSketchDefinition definitionSketch = null;
            // Проверка на существование компонента сборки
            if (_part != null)
            {
                // создадим новый эскиз
                var DrumheadSketch = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                if (DrumheadSketch != null)
                {
                    // Получение интерфейса свойств эскиза
                    definitionSketch = (ksSketchDefinition)DrumheadSketch.GetDefinition();
                    if (definitionSketch != null)
                    {
                        // Получение интерфейса базовой плоскости XOY
                        var basePlane = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                        // создаем эскиз для смещенной плоскости
                        ksEntity entityOffsetPlane = _part.NewEntity((short)Obj3dType.o3d_planeOffset);
                        // получение интерфейса свойств эскиза для смещенной плоскости
                        ksPlaneOffsetDefinition offsetDef = (ksPlaneOffsetDefinition)entityOffsetPlane.GetDefinition();
                        // расстояние смещение
                        offsetDef.offset = kadloHeight;
                        // направление смещения
                        offsetDef.direction = true;
                        // назначение плоскости переноса
                        offsetDef.SetPlane(basePlane);
                        // создание смещенной плоскости
                        entityOffsetPlane.Create();

                        ksEntity _sketch    = _part.NewEntity((short)Obj3dType.o3d_sketch);
                        var      sketchDef2 = (ksSketchDefinition)_sketch.GetDefinition();
                        sketchDef2.SetPlane(entityOffsetPlane);
                        _sketch.Create();

                        ksDocument2D sketchEdit2 = (ksDocument2D)sketchDef2.BeginEdit(); //начало редактирования эскиза
                        sketchEdit2.ksCircle(0, 0, kadloRadius, 1);                      //рисуем окружность для пластика
                        sketchDef2.EndEdit();                                            // завершение редактирования
                        #endregion
                        // Выдавливание верхнего пластика
                        #region
                        ksEntity entityBossExtr1 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                        if (entityBossExtr1 != null)
                        {
                            ksBossExtrusionDefinition bossExtrDef = (ksBossExtrusionDefinition)entityBossExtr1.GetDefinition();
                            if (bossExtrDef != null)
                            {
                                // интерфейс структуры параметров выдавливания
                                ksExtrusionParam extrProp = (ksExtrusionParam)bossExtrDef.ExtrusionParam();
                                // интерфейс структуры параметров тонкой стенки
                                ksThinParam thinProp = (ksThinParam)bossExtrDef.ThinParam();
                                if (extrProp != null)
                                {
                                    // эскиз операции выдавливания
                                    bossExtrDef.SetSketch(_sketch);
                                    // направление выдавливания (прямое)
                                    extrProp.direction = (short)Direction_Type.dtNormal;
                                    // тип выдавливания (строго на глубину)
                                    extrProp.typeNormal = (short)End_Type.etBlind;
                                    // глубина выдавливания
                                    extrProp.depthNormal = thicknessTopDrumhead;
                                    // создадим операцию
                                    entityBossExtr1.Create();
                                }
                            }
                        }
                    }
                    #endregion
                    // Создание плоскости для нижнего пластика
                    #region
                    // получим интерфейс базовой плоскости XOY
                    ksEntity planeXOY = (ksEntity)_part.GetDefaultEntity((short)Obj3dType.o3d_planeXOY);
                    ksEntity iSketch  = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                    if (iSketch != null)
                    {
                        ksEntity entitySketch1 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_sketch);
                        if (entitySketch1 != null)
                        {
                            // интерфейс свойств эскиза
                            ksSketchDefinition sketchDef1 = (ksSketchDefinition)entitySketch1.GetDefinition();
                            if (sketchDef1 != null)
                            {
                                // установим плоскость
                                sketchDef1.SetPlane(planeXOY);
                                // создадим эскиз
                                entitySketch1.Create();

                                // интерфейс редактора эскиза
                                ksDocument2D sketchEdit1 = (ksDocument2D)sketchDef1.BeginEdit();
                                sketchEdit1.ksCircle(0, 0, kadloRadius, 1);
                                // завершение редактирования эскиза
                                sketchDef1.EndEdit();
                                #endregion

                                // Выдавливание нижнего пластика
                                #region
                                ksEntity entityBossExtr2 = (ksEntity)_part.NewEntity((short)Obj3dType.o3d_bossExtrusion);
                                if (entityBossExtr2 != null)
                                {
                                    ksBossExtrusionDefinition bossExtrDef1 = (ksBossExtrusionDefinition)entityBossExtr2.GetDefinition();
                                    if (bossExtrDef1 != null)
                                    {
                                        // интерфейс структуры параметров выдавливания
                                        ksExtrusionParam extrProp1 = (ksExtrusionParam)bossExtrDef1.ExtrusionParam();
                                        // интерфейс структуры параметров тонкой стенки
                                        ksThinParam thinProp1 = (ksThinParam)bossExtrDef1.ThinParam();
                                        if (extrProp1 != null)
                                        {
                                            // эскиз операции выдавливания
                                            bossExtrDef1.SetSketch(entitySketch1);
                                            // направление выдавливания (обратное)
                                            extrProp1.direction = (short)Direction_Type.dtReverse;
                                            // тип выдавливания (строго на глубину)
                                            extrProp1.typeReverse = (short)End_Type.etBlind;
                                            // глубина выдавливания
                                            extrProp1.depthReverse = thicknessBottomDrumhead;
                                            // создадим операцию
                                            entityBossExtr2.Create();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }