private bool SaveCDW_in_Rastr(Document2D doc)
        {
            DocumentParam docP = (DocumentParam)kompas.GetParamStruct((short)StructType2DEnum.ko_DocumentParam);

            if (docP == null)
            {
                kompas.ksMessage("Не удалось получить интерфейс DocumentParam");
                return(false);
            }
            int    t        = doc.ksGetObjParam(doc.reference, docP);
            string filename = docP.fileName;

            filename = filename.Substring(0, filename.Length - 4);
            RasterFormatParam formatRasret = doc.RasterFormatParam();

            //if (formatRasret.Init())
            //{
            //    kompas.ksMessage("Обнулились параметры RasterFormatParam");
            //}
            if (formatRasret == null)
            {
                return(false);
            }
            if (setting.Format == 20)
            {
                formatRasret.format = 4;
            }
            else
            {
                formatRasret.format = setting.Format;
            }
            formatRasret.colorBPP        = setting.ColorBPP;
            formatRasret.colorType       = setting.ColorType;
            formatRasret.extResolution   = setting.Resolution;
            formatRasret.extScale        = setting.Scale;
            formatRasret.greyScale       = false;
            formatRasret.onlyThinLine    = false;
            formatRasret.multiPageOutput = multiTiff;
            if (kolLists == 1 || multiTiff)
            {
                string fileTiff_f = filename + "." + ConvertFormat(setting.Format);
                if (!doc.SaveAsToRasterFormat(fileTiff_f, formatRasret))
                {
                    return(false);
                }
                return(true);
            }
            for (int i = 1; i < kolLists + 1; i++)
            {
                string fileName_f = filename;
                string fileTiff_f = fileName_f + "." + ConvertFormat(setting.Format);
                formatRasret.pages = i.ToString() + "-" + i.ToString();
                fileTiff_f         = fileName_f + "(" + i.ToString() + ")" + "." + ConvertFormat(setting.Format);
                if (!doc.SaveAsToRasterFormat(fileTiff_f, formatRasret))
                {
                    return(false);
                }
            }
            return(true);
        }
        private void bConvertAllDrawing_Click(object sender, EventArgs e)
        {
            TestConnectKompas();
            if (!flag_Kompas)
            {
                return;
            }
            Documents docs = kompas7.Documents;
            int       k    = docs.Count;

            if (k == 0)
            {
                kompas.ksMessage("Нет открытых документов");
                return;
            }
            for (int i = 0; i < k; i++)
            {
                KompasDocument kdoc = (KompasDocument)docs[i];
                if (kdoc.DocumentType == DocumentTypeEnum.ksDocumentDrawing)
                {
                    kolLists = 1;
                    ILayoutSheets lists = kdoc.LayoutSheets;
                    kolLists = lists.Count;
                    //if (kolLists > 1)
                    //{
                    //    kompas.ksMessage("Количество листов в документе: " + kolLists.ToString());
                    //}
                    Document2D doc2 = kompas.Document2D();
                    doc2 = kompas.TransferInterface(kdoc, (int)ksAPITypeEnum.ksAPI5Auto, 0);
                    if (doc2 == null)
                    {
                        kompas.ksMessage("Не удалось преобразовать объект");
                        return;
                    }
                    if (!SaveCDW_in_Rastr(doc2))
                    {
                        kompas.ksMessage("Ошибка! Чертеж не переведен");
                        return;
                    }
                }
            }
            kompas.ksMessage("Чертежи успешно переведены");
            kolLists = 1;
        }
        private void bConvertActiveDrawing_Click(object sender, EventArgs e)
        {
            TestConnectKompas();
            if (!flag_Kompas)
            {
                return;
            }

            Document2D doc = kompas.ActiveDocument2D();

            if (doc == null)
            {
                kompas.ksMessage("Активный документ не является чертежом.");
                return;
            }
            long typedoc = kompas.ksGetDocumentType(doc.reference);

            if ((typedoc < 1) || (typedoc > 2))
            {
                kompas.ksMessage("Активный документ не является чертежом.");
                return;
            }
            KompasDocument kdoc = kompas.TransferInterface(doc, (int)ksAPITypeEnum.ksAPI7Dual, 0);

            if (kdoc == null)
            {
                kompas.ksMessage("Не удалось преобразовать объект");
                return;
            }
            ILayoutSheets lists = kdoc.LayoutSheets;

            kolLists = lists.Count;
            //if (kolLists > 1)
            //{
            //    kompas.ksMessage("Количество листов в документе: " + kolLists.ToString());
            //}
            if (!SaveCDW_in_Rastr(doc))
            {
                kompas.ksMessage("Ошибка! Чертеж не переведен");
                return;
            }
            kompas.ksMessage("Чертеж успешно переведен");
            kolLists = 1;
        }
        /// <summary>
        /// CСоздание резьбы на ножке
        /// </summary>
        /// <param name="diameterLeg">Диаметр ножки</param>
        /// <param name="lengthLeg">Длина ножки</param>
        /// <param name="diameterBracing">Диаметр крепления</param>
        /// <param name="lengthHead">Длина головки</param>
        private void BuildThreadLeg(double diameterLeg, double lengthLeg, double diameterBracing, double lengthHead)
        {
            #region Константы для резьбы
            const int part            = -1;
            const int planeOffset     = 14;
            const int sketch          = 5;
            const int planeXOY        = 1;
            const int cylindricspiral = 56;
            const int cutEvolution    = 47;
            const int planeXOZ        = 2;
            #endregion

            //Смещенеие плоскости
            _part = _doc3D.GetPart(part);
            ksEntity entityOffset = _part.NewEntity(planeOffset);
            ksPlaneOffsetDefinition planeDefinition = entityOffset.GetDefinition();
            planeDefinition.offset    = lengthHead;
            planeDefinition.direction = true;
            ksEntity EntityPlaneOffset = _part.GetDefaultEntity(planeXOY);
            planeDefinition.SetPlane(EntityPlaneOffset);
            entityOffset.Create();

            //Построение спирали
            ksEntity entityCylinderic = _part.NewEntity(cylindricspiral);
            ksCylindricSpiralDefinition cylindricSpiral = entityCylinderic.GetDefinition();
            cylindricSpiral.SetPlane(entityOffset);
            cylindricSpiral.buildDir   = true;
            cylindricSpiral.buildMode  = 1;
            cylindricSpiral.height     = lengthLeg;
            cylindricSpiral.diam       = diameterLeg;
            cylindricSpiral.firstAngle = 0;
            cylindricSpiral.turnDir    = true;
            cylindricSpiral.step       = 0.5;
            entityCylinderic.Create();

            //Эскиз треуголника
            ksEntity           Entity2          = _part.NewEntity(sketch);
            ksSketchDefinition sketchDefinition = Entity2.GetDefinition();
            ksEntity           Entity           = _part.GetDefaultEntity(planeXOZ);
            sketchDefinition.SetPlane(Entity);
            Entity2.Create();

            Document2D document2D = sketchDefinition.BeginEdit();
            var        StartX     = diameterLeg / 2 - (diameterLeg / 100); //
            var        StartY     = -0.5 / 2 + 0.01;
            document2D.ksLineSeg(StartX, -lengthHead, diameterLeg - StartX, -lengthHead + StartY, 1);
            document2D.ksLineSeg(StartX, -lengthHead, diameterLeg - StartX, -lengthHead - StartY, 1);
            document2D.ksLineSeg(diameterLeg - StartX, -lengthHead + StartY, diameterLeg - StartX, -lengthHead - StartY, 1);
            sketchDefinition.EndEdit();

            //Кинематическое вырезание
            ksEntity entityCutEvolution = _part.NewEntity(cutEvolution);
            ksCutEvolutionDefinition cutEvolutionDefinition = entityCutEvolution.GetDefinition();
            cutEvolutionDefinition.cut             = true;
            cutEvolutionDefinition.sketchShiftType = 1;
            cutEvolutionDefinition.SetSketch(sketchDefinition);
            ksEntityCollection EntityCollection = (cutEvolutionDefinition.PathPartArray());
            EntityCollection.Clear();
            EntityCollection.Add(entityCylinderic);
            entityCutEvolution.Create();
        }