示例#1
0
文件: Ramka.cs 项目: Parikon/ramki_zw
        /// <summary>
        /// Sprawdza czy w przestrzeni papieru jesteśmy  poza oknem true lub w oknie false
        /// na podstawie https://spiderinnet1.typepad.com/blog/2014/05/autocad-net-detect-current-space-model-or-paper-and-viewport.html
        /// </summary>
        /// <returns></returns>
        public static bool IsInLayoutPaper()
        {
            zza.Document doc = zza.Application.DocumentManager.MdiActiveDocument;
            zzd.Database db  = doc.Database;
            zze.Editor   ed  = doc.Editor;

            if (db.TileMode)
            {
                return(false);
            }
            else
            {
                if (db.PaperSpaceVportId == zzd.ObjectId.Null)
                {
                    return(false);
                }
                else if (ed.CurrentViewportObjectId == zzd.ObjectId.Null)
                {
                    return(false);
                }
                else if (ed.CurrentViewportObjectId == db.PaperSpaceVportId)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Tworzy styl tekstu PI_DIMENSION
        /// </summary>
        /// <returns></returns>
        public static zzd.ObjectId Dodaj_styl_PI_DIMENSIONTEXT()
        {
            zza.Document doc  = zza.Application.DocumentManager.MdiActiveDocument;
            zzd.Database db   = doc.Database;
            string       name = "PI_DIMENSIONTEXT";

            zzd.ObjectId dimstyleID;

            using (zzd.Transaction tr = db.TransactionManager.StartTransaction())
            {
                zzd.TextStyleTable tst = (zzd.TextStyleTable)tr.GetObject(db.TextStyleTableId, zzd.OpenMode.ForWrite);

                if (!tst.Has(name))
                {
                    tst.UpgradeOpen();
                    zzd.TextStyleTableRecord newRecord = new zzd.TextStyleTableRecord();
                    newRecord.Name     = name;
                    newRecord.FileName = "simplex.shx";
                    newRecord.XScale   = 0.65; // Width factor
                    tst.Add(newRecord);
                    tr.AddNewlyCreatedDBObject(newRecord, true);
                    dimstyleID = tst[name];
                }
                else
                {
                    dimstyleID = tst[name];
                }
                tr.Commit();
                return(dimstyleID);
            }
        }
示例#3
0
        /// <summary>
        /// Pobiera blok. który można użyć jako strzałkę
        /// </summary>
        /// <param name="arrow"></param>
        /// <param name="newArrName"></param>
        /// <returns></returns>
        public static zzd.ObjectId GetArrowObjectId(string arrow, string newArrName)

        {
            zzd.ObjectId arrObjId   = zzd.ObjectId.Null;
            zza.Document doc        = zza.Application.DocumentManager.MdiActiveDocument;
            zzd.Database db         = doc.Database;
            string       oldArrName = zza.Application.GetSystemVariable(arrow) as string;

            zza.Application.SetSystemVariable(arrow, newArrName);
            if (oldArrName.Length != 0)
            {
                zza.Application.SetSystemVariable(arrow, oldArrName);
            }
            zzd.Transaction tr = db.TransactionManager.StartTransaction();
            using (tr)
            {
                zzd.BlockTable bt = (zzd.BlockTable)tr.GetObject(db.BlockTableId, zzd.OpenMode.ForRead);
                arrObjId = bt[newArrName];
                tr.Commit();
            }
            return(arrObjId);
        }
示例#4
0
文件: Ramka.cs 项目: Parikon/ramki_zw
        /// <summary>
        /// Wstawia warstwę o podanej nazwie, kolorze i czyni ją plotowaną lub nie.
        /// </summary>
        /// <param name="layername"></param>
        /// <param name="color"></param>
        /// <param name="isplotable"></param>
        public static void WstawWarstwe(string layername, short color, bool isplotable)
        {
            zza.Document doc = zza.Application.DocumentManager.MdiActiveDocument;
            zzd.Database db  = doc.Database;
            using (zzd.Transaction tr = db.TransactionManager.StartTransaction())
            {
                zzd.LayerTable lt = (zzd.LayerTable)tr.GetObject(db.LayerTableId, zzd.OpenMode.ForRead);
                if (lt.Has(layername) == false)
                {
                    // Tworzymy nową wartwę papier
                    zzd.LayerTableRecord nowawarstwa = new zzd.LayerTableRecord();
                    //nadajemy jej wlasciwosci
                    nowawarstwa.Name        = layername;
                    nowawarstwa.IsPlottable = isplotable;
                    nowawarstwa.Color       = zzc.Color.FromColorIndex(zzc.ColorMethod.ByAci, color);
                    //dadaj nowarstwa do tabeli
                    lt.UpgradeOpen();
                    zzd.ObjectId warstwa = lt.Add(nowawarstwa);
                    tr.AddNewlyCreatedDBObject(nowawarstwa, true);
                }

                tr.Commit();
            }
        }
示例#5
0
文件: Ramka.cs 项目: Parikon/ramki_zw
        public static void Rysuj_ramke()
        {
            for (; ;)
            {
                int wysokosc       = UserControl1.wysokosc;
                int szerokosc      = UserControl1.dlugosc;
                int margines_gorny = UserControl1.G_marg;
                int margines_dolny = UserControl1.D_marg;
                int margines_lewy  = UserControl1.L_marg;
                int margines_prawy = UserControl1.P_marg;

                string papier = "PI_PAPIER";
                string ramka  = "PI_RAMKA";

                WstawWarstwe(papier, 7, false);
                WstawWarstwe(ramka, 2, true);

                //pobierz aktualny rysunek i database
                zza.Document doc = zza.Application.DocumentManager.MdiActiveDocument;
                zzd.Database db  = doc.Database;
                zze.Editor   ed  = doc.Editor;

                bool jestmodel    = ItisModel();
                bool jestviewport = IsInLayoutPaper();

                int tilemode = Convert.ToInt16(zza.Application.GetSystemVariable("TILEMODE"));

                zzg.Point3d ptStart = new zzg.Point3d(-100000, -100000, 0);
                //zzg.Point3d ptStart = pPtRes.Value;

                DrawJiggerGroup jigger2 = new DrawJiggerGroup(ptStart);

                using (zzd.Transaction tr = db.TransactionManager.StartTransaction())
                {
                    //utworzenie grupy
                    zzd.DBDictionary groupDic   = (zzd.DBDictionary)tr.GetObject(db.GroupDictionaryId, zzd.OpenMode.ForWrite);
                    zzd.Group        anonyGroup = new zzd.Group();
                    groupDic.SetAt("*", anonyGroup);

                    zzd.BlockTable       bt;
                    zzd.BlockTableRecord btr;

                    // Open Model space for write
                    bt = tr.GetObject(db.BlockTableId,
                                      zzd.OpenMode.ForRead) as zzd.BlockTable;
                    if (jestmodel == false & jestviewport == true)
                    {
                        btr = tr.GetObject(bt[zzd.BlockTableRecord.PaperSpace],
                                           zzd.OpenMode.ForWrite) as zzd.BlockTableRecord;
                    }
                    else
                    {
                        btr = tr.GetObject(bt[zzd.BlockTableRecord.ModelSpace],
                                           zzd.OpenMode.ForWrite) as zzd.BlockTableRecord;
                    }

                    if (wysokosc != 210)
                    {
                        // Create a papier polyline
                        using (zzd.Polyline acPoly = new zzd.Polyline())
                        {
                            zzg.Point2d p1 = new zzg.Point2d(ptStart.X, ptStart.Y + margines_dolny);
                            zzg.Point2d p2 = new zzg.Point2d(ptStart.X, ptStart.Y);
                            zzg.Point2d p3 = new zzg.Point2d(ptStart.X + szerokosc, ptStart.Y);
                            zzg.Point2d p4 = new zzg.Point2d(ptStart.X + szerokosc, ptStart.Y + wysokosc);
                            zzg.Point2d p5 = new zzg.Point2d(ptStart.X, ptStart.Y + wysokosc);
                            zzg.Point2d p6 = new zzg.Point2d(ptStart.X, ptStart.Y + 297);

                            acPoly.AddVertexAt(0, p1, 0, 0, 0);
                            acPoly.AddVertexAt(1, p2, 0, 0, 0);
                            acPoly.AddVertexAt(2, p3, 0, 0, 0);
                            acPoly.AddVertexAt(3, p4, 0, 0, 0);
                            acPoly.AddVertexAt(4, p5, 0, 0, 0);
                            acPoly.AddVertexAt(5, p6, 0, 0, 0);

                            //acPoly.Closed = true;
                            //acPoly.ColorIndex = kolorpapier;
                            acPoly.Layer = papier;

                            // Add the new object to the block table record and the transaction
                            btr.AppendEntity(acPoly);
                            tr.AddNewlyCreatedDBObject(acPoly, true);
                            anonyGroup.Append(acPoly.ObjectId);
                        }

                        // Create a  ramka polyline
                        using (zzd.Polyline ramkaPoly = new zzd.Polyline())
                        {
                            zzg.Point2d r1 = new zzg.Point2d(ptStart.X + margines_lewy, ptStart.Y + margines_dolny);
                            zzg.Point2d r2 = new zzg.Point2d(ptStart.X, ptStart.Y + margines_dolny);
                            zzg.Point2d r3 = new zzg.Point2d(ptStart.X, ptStart.Y + 297);
                            zzg.Point2d r4 = new zzg.Point2d(ptStart.X + margines_lewy, ptStart.Y + 297);
                            zzg.Point2d r5 = new zzg.Point2d(ptStart.X + margines_lewy, ptStart.Y + wysokosc - margines_gorny);
                            zzg.Point2d r6 = new zzg.Point2d(ptStart.X + szerokosc - margines_prawy, ptStart.Y + wysokosc - margines_gorny);
                            zzg.Point2d r7 = new zzg.Point2d(ptStart.X + szerokosc - margines_prawy, ptStart.Y + margines_dolny);


                            ramkaPoly.AddVertexAt(0, r2, 0, 0, 0);
                            ramkaPoly.AddVertexAt(1, r3, 0, 0, 0);
                            ramkaPoly.AddVertexAt(2, r4, 0, 0, 0);
                            ramkaPoly.AddVertexAt(3, r5, 0, 0, 0);
                            ramkaPoly.AddVertexAt(4, r6, 0, 0, 0);
                            ramkaPoly.AddVertexAt(5, r7, 0, 0, 0);
                            ramkaPoly.AddVertexAt(6, r1, 0, 0, 0);
                            ramkaPoly.AddVertexAt(7, r4, 0, 0, 0);

                            //ramkaPoly.ColorIndex = kolorramki;
                            ramkaPoly.Layer = ramka;

                            // Add the new object to the block table record and the transaction
                            btr.AppendEntity(ramkaPoly);
                            tr.AddNewlyCreatedDBObject(ramkaPoly, true);
                            anonyGroup.Append(ramkaPoly.ObjectId);
                        }

                        //tworzę miejsca na dziurkacz
                        using (zzd.Circle dziurka1 = new zzd.Circle())
                        {
                            dziurka1.Center = new zzg.Point3d(ptStart.X + 10.0, ptStart.Y + (297.0 / 2 - 40.0), ptStart.Z);
                            dziurka1.Radius = 2.5;
                            dziurka1.Layer  = ramka;
                            //dziurka1.ColorIndex = kolorramki;
                            btr.AppendEntity(dziurka1);
                            tr.AddNewlyCreatedDBObject(dziurka1, true);
                            anonyGroup.Append(dziurka1.ObjectId);
                        }
                        using (zzd.Circle dziurka2 = new zzd.Circle())
                        {
                            dziurka2.Center = new zzg.Point3d(ptStart.X + 10.0, ptStart.Y + (297.0 / 2 + 40.0), ptStart.Z);
                            dziurka2.Radius = 2.5;
                            dziurka2.Layer  = ramka;
                            //dziurka2.ColorIndex = kolorramki;
                            btr.AppendEntity(dziurka2);
                            tr.AddNewlyCreatedDBObject(dziurka2, true);
                            anonyGroup.Append(dziurka2.ObjectId);
                        }
                    }
                    else
                    {
                        // Create a papier polyline
                        using (zzd.Polyline acPoly = new zzd.Polyline())
                        {
                            zzg.Point2d p1 = new zzg.Point2d(ptStart.X, ptStart.Y);
                            zzg.Point2d p2 = new zzg.Point2d(ptStart.X + szerokosc, ptStart.Y);
                            zzg.Point2d p3 = new zzg.Point2d(ptStart.X + szerokosc, ptStart.Y + wysokosc);
                            zzg.Point2d p4 = new zzg.Point2d(ptStart.X, ptStart.Y + wysokosc);


                            acPoly.AddVertexAt(0, p1, 0, 0, 0);
                            acPoly.AddVertexAt(1, p2, 0, 0, 0);
                            acPoly.AddVertexAt(2, p3, 0, 0, 0);
                            acPoly.AddVertexAt(3, p4, 0, 0, 0);


                            acPoly.Closed = true;
                            //acPoly.ColorIndex = kolorpapier;
                            acPoly.Layer = papier;

                            // Add the new object to the block table record and the transaction
                            btr.AppendEntity(acPoly);
                            tr.AddNewlyCreatedDBObject(acPoly, true);
                            anonyGroup.Append(acPoly.ObjectId);
                        }

                        // Create a  ramka polyline
                        using (zzd.Polyline ramkaPoly = new zzd.Polyline())
                        {
                            zzg.Point2d r1 = new zzg.Point2d(ptStart.X + margines_lewy, ptStart.Y + margines_dolny);
                            zzg.Point2d r2 = new zzg.Point2d(ptStart.X + szerokosc - margines_lewy, ptStart.Y + margines_dolny);
                            zzg.Point2d r3 = new zzg.Point2d(ptStart.X + szerokosc - margines_lewy, ptStart.Y + wysokosc - margines_gorny);
                            zzg.Point2d r4 = new zzg.Point2d(ptStart.X + margines_lewy, ptStart.Y + wysokosc - margines_gorny);



                            ramkaPoly.AddVertexAt(0, r1, 0, 0, 0);
                            ramkaPoly.AddVertexAt(1, r2, 0, 0, 0);
                            ramkaPoly.AddVertexAt(2, r3, 0, 0, 0);
                            ramkaPoly.AddVertexAt(3, r4, 0, 0, 0);

                            //ramkaPoly.ColorIndex = kolorramki;
                            ramkaPoly.Closed = true;
                            ramkaPoly.Layer  = ramka;

                            // Add the new object to the block table record and the transaction
                            btr.AppendEntity(ramkaPoly);
                            tr.AddNewlyCreatedDBObject(ramkaPoly, true);
                            anonyGroup.Append(ramkaPoly.ObjectId);
                        }

                        //tworzę miejsca na dziurkacz
                        using (zzd.Circle dziurka1 = new zzd.Circle())
                        {
                            dziurka1.Center = new zzg.Point3d(ptStart.X + szerokosc / 2 - 40, ptStart.Y + wysokosc - 10, ptStart.Z);
                            dziurka1.Radius = 2.5;
                            dziurka1.Layer  = ramka;
                            //dziurka1.ColorIndex = kolorramki;
                            btr.AppendEntity(dziurka1);
                            tr.AddNewlyCreatedDBObject(dziurka1, true);
                            anonyGroup.Append(dziurka1.ObjectId);
                        }
                        using (zzd.Circle dziurka2 = new zzd.Circle())
                        {
                            dziurka2.Center = new zzg.Point3d(ptStart.X + szerokosc / 2 + 40, ptStart.Y + wysokosc - 10, ptStart.Z);
                            dziurka2.Radius = 2.5;
                            dziurka2.Layer  = ramka;
                            //dziurka2.ColorIndex = kolorramki;
                            btr.AppendEntity(dziurka2);
                            tr.AddNewlyCreatedDBObject(dziurka2, true);
                            anonyGroup.Append(dziurka2.ObjectId);
                        }
                    }

                    //znacznik 210 mm

                    if (wysokosc != 210 & szerokosc > 210)
                    {
                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + 210, ptStart.Y + margines_dolny, ptStart.Z), new zzg.Point3d(ptStart.X + 210, ptStart.Y + margines_dolny + 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }

                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + 210, ptStart.Y + wysokosc - margines_gorny, ptStart.Z), new zzg.Point3d(ptStart.X + 210, ptStart.Y + wysokosc - margines_gorny - 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }
                    }

                    if (szerokosc >= 594)
                    {
                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 210 + margines_lewy, ptStart.Y + margines_dolny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 210 + margines_lewy, ptStart.Y + margines_dolny + 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }

                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 210 + margines_lewy, ptStart.Y + wysokosc - margines_gorny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 210 + margines_lewy, ptStart.Y + wysokosc - margines_gorny - 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }
                    }

                    if (szerokosc >= 841)
                    {
                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 2 * (210 - margines_lewy), ptStart.Y + margines_dolny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 2 * (210 - margines_lewy), ptStart.Y + margines_dolny + 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }

                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 2 * (210 - margines_lewy), ptStart.Y + wysokosc - margines_gorny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 2 * (210 - margines_lewy), ptStart.Y + wysokosc - margines_gorny - 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }
                    }

                    if (szerokosc >= 1189)
                    {
                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 3 * (210 - margines_lewy), ptStart.Y + margines_dolny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 3 * (210 - margines_lewy), ptStart.Y + margines_dolny + 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }

                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 3 * (210 - margines_lewy), ptStart.Y + wysokosc - margines_gorny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 3 * (210 - margines_lewy), ptStart.Y + wysokosc - margines_gorny - 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }

                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 4 * (210 - margines_lewy), ptStart.Y + margines_dolny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 4 * (210 - margines_lewy), ptStart.Y + margines_dolny + 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }

                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + szerokosc - 4 * (210 - margines_lewy), ptStart.Y + wysokosc - margines_gorny, ptStart.Z), new zzg.Point3d(ptStart.X + szerokosc - 4 * (210 - margines_lewy), ptStart.Y + wysokosc - margines_gorny - 1.0, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }
                    }

                    if (wysokosc >= 841)
                    {
                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + margines_lewy, ptStart.Y + 594, ptStart.Z), new zzg.Point3d(ptStart.X + margines_lewy + 1.5, ptStart.Y + 594, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }
                    }

                    if (wysokosc >= 1189)
                    {
                        using (zzd.Line karta = new zzd.Line(new zzg.Point3d(ptStart.X + margines_lewy, ptStart.Y + 841, ptStart.Z), new zzg.Point3d(ptStart.X + margines_lewy + 1.5, ptStart.Y + 841, ptStart.Z)))
                        {
                            karta.Layer = ramka;
                            //karta.ColorIndex = kolorramki;
                            btr.AppendEntity(karta);
                            tr.AddNewlyCreatedDBObject(karta, true);
                            anonyGroup.Append(karta.ObjectId);
                        }
                    }

                    foreach (zzd.ObjectId id in anonyGroup.GetAllEntityIds())
                    {
                        zzd.Entity entity = (zzd.Entity)tr.GetObject(id, zzd.OpenMode.ForWrite);
                        jigger2.AddEntity(entity);
                    }

                    zze.PromptResult jigRes;
                    jigRes = ed.Drag(jigger2);

                    if (jigRes.Status == zze.PromptStatus.OK)
                    {
                        jigger2.TransformEntities();
                        tr.AddNewlyCreatedDBObject(anonyGroup, true);
                        tr.Commit();
                    }
                    else if ((jigRes.Status == zze.PromptStatus.Cancel))
                    {
                        return;
                    }
                    else
                    {
                        tr.Abort();
                    }
                }
            }
        }
示例#6
0
        /// <summary>
        /// Tworzy styl wymiarowania PI_STANDARD
        /// </summary>
        public static void Dodaj_styl_PI_STANDARD()
        {
            string nazwastylu = "PI_STANDARD";

            zza.Document doc = zza.Application.DocumentManager.MdiActiveDocument;
            zzd.Database db  = doc.Database;

            using (zzd.Transaction tr = db.TransactionManager.StartTransaction())
            {
                zzd.DimStyleTable DimTabb = (zzd.DimStyleTable)tr.GetObject(db.DimStyleTableId, zzd.OpenMode.ForRead);
                zzd.ObjectId      dimId   = zzd.ObjectId.Null;
                if (!DimTabb.Has(nazwastylu))
                {
                    DimTabb.UpgradeOpen();
                    zzd.DimStyleTableRecord newRecord = new zzd.DimStyleTableRecord();
                    //nazwa stylu wymiarowania
                    newRecord.Name = nazwastylu;
                    //styl tekstu
                    newRecord.Dimtxsty = Dodaj_styl_PI_DIMENSIONTEXT();
                    //określenie liczby miejsc wyświetlanych w precyzyjnych wymiarach kątowych.
                    newRecord.Dimadec = 0;
                    //dodanie alternatywnych wymiarów
                    newRecord.Dimalt = false;
                    //usytuowanie napisu w stosunku do linii
                    newRecord.Dimtad = 1;
                    //rysować tekst zawsze poziomo?
                    newRecord.Dimtih = false;
                    // rysować tekst nnawet jak się nie mieści
                    newRecord.Dimtix = false;
                    //rozmiar strzałki
                    newRecord.Dimasz = 1;
                    //zmienna dimsah na false wtedy stosowany jest grot strzałki wskazany przez zmienną DIMBLK
                    newRecord.Dimsah = false;
                    //ustawienie grotu strzałek
                    zzd.ObjectId id1 = GetArrowObjectId("DIMBLK", "PI_grotplany");
                    newRecord.Dimblk = id1;
                    //kolor tekstu
                    newRecord.Dimclrt = zzc.Color.FromColorIndex(zzc.ColorMethod.ByAci, 2);
                    //kolor lini wymiaru
                    newRecord.Dimclrd = zzc.Color.FromColorIndex(zzc.ColorMethod.ByAci, 1);
                    //ukrycie pierwszej linii pomocniczej
                    newRecord.Dimse1 = true;
                    //ukrycie drugiej linii pomocniczej
                    newRecord.Dimse2 = true;
                    //miejsc po przecinku
                    newRecord.Dimdec = 1;
                    //wysikość tekstu
                    newRecord.Dimtxt = 2.0;
                    //odległość tekstu od linii
                    newRecord.Dimgap = 1;
                    // tekst w odnośniku zawsze poziomo
                    newRecord.Dimtoh = false;
                    //przemnożenie jednostki
                    newRecord.Dimlfac = 100;
                    //ukrywanie zer końcowych
                    newRecord.Dimzin   = 8;
                    newRecord.Dimscale = 1;


                    dimId = DimTabb.Add(newRecord);
                    tr.AddNewlyCreatedDBObject(newRecord, true);
                }
                else
                {
                    dimId = DimTabb[nazwastylu];
                }
                //ustawiamy utworzony styl jako aktualny
                zzd.DimStyleTableRecord DimTabbRecaord = (zzd.DimStyleTableRecord)tr.GetObject(dimId, zzd.OpenMode.ForRead);
                if (DimTabbRecaord.ObjectId != db.Dimstyle)
                {
                    db.Dimstyle = DimTabbRecaord.ObjectId;
                    db.SetDimstyleData(DimTabbRecaord);
                }
                tr.Commit();
            }
        }