示例#1
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();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
示例#2
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();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
示例#3
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();
                                }
                            }
                        }
                    }
                }
            }
        }
示例#4
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();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }