コード例 #1
0
        public LayerComboBox()
        {
            IncludeXRef = false;
            HasIcons    = true;
            IconSize    = new Size(16, 16);

            try
            {
                var layers = AcadSymbolTable.GetLayerTableRecords(this.Database, p => (IncludeXRef || !p.IsDependent), p => new { p.Name, p.Color }).OrderBy(p => p.Name);
                var colors = new List <Color>();
                foreach (var layer in layers)
                {
                    this.Items.Add(layer.Name);
                    colors.Add(layer.Color.ColorValue);
                }

                this.DrawIcon += (o, e) =>
                {
                    using (var brush = new SolidBrush(colors[e.Index]))
                        using (var pen = new Pen(e.ForeColor))
                        {
                            e.Graphics.FillRectangle(brush, e.Bounds);
                            e.Graphics.DrawRectangle(pen, e.Bounds);
                        }
                };
            }
            catch
            {
                ;
            }
        }
コード例 #2
0
        public TextStyleComboBox()
        {
            IncludeXRef = false;

            try
            {
                var textStyleNames = AcadSymbolTable.GetTextStyleTableRecords(this.Database,
                                                                              p => (IncludeXRef || !p.IsDependent) && !p.IsShapeFile,
                                                                              p => p.Name).OrderBy(p => p).ToList();
                this.Items.AddRange(textStyleNames.ToArray());
            }
            catch
            {
                ;
            }
        }
コード例 #3
0
        public BlockComboBox()
        {
            IncludeAnonymous = false;
            IncludeXRef      = false;
            IncludeLayout    = false;

            HasIcons = true;
            IconSize = new Size(24, 24);

            try
            {
                var blocks = AcadSymbolTable.GetBlockTableRecords(this.Database,
                                                                  p => (IncludeXRef || !p.IsFromExternalReference) && (IncludeXRef || !p.IsFromOverlayReference) && (IncludeLayout || !p.IsLayout) && (IncludeAnonymous || !p.IsAnonymous),
                                                                  p => new { p.Name, p.HasPreviewIcon, p.PreviewIcon }).OrderBy(p => p.Name);
                var icons = new List <Bitmap>();
                foreach (var block in blocks)
                {
                    this.Items.Add(block.Name);
                    icons.Add(block.HasPreviewIcon ? block.PreviewIcon : null);
                }

                this.DrawIcon += (o, e) =>
                {
                    Bitmap icon = icons[e.Index];
                    if (icon != null)
                    {
                        float xScale     = e.Bounds.Width / (float)IconSize.Width;
                        float yScale     = e.Bounds.Height / (float)IconSize.Height;
                        float scale      = Math.Min(xScale, yScale);
                        var   targetRect = new Rectangle(e.Bounds.Left + (int)((e.Bounds.Width - scale * IconSize.Width) / 2),
                                                         e.Bounds.Top + (int)((e.Bounds.Height - scale * IconSize.Height) / 2),
                                                         (int)(scale * IconSize.Width), (int)(scale * IconSize.Height));
                        e.Graphics.DrawImage(icon, targetRect);
                    }
                };
            }
            catch
            {
                ;
            }
        }
コード例 #4
0
        public void RenameBlock()
        {
            if (!CheckLicense.Check())
            {
                return;
            }

            Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Autodesk.AutoCAD.DatabaseServices.Database    db  = doc.Database;

            // Select block name in dialog if there is one picked
            string selectBlockName       = "";
            PromptSelectionResult selRes = doc.Editor.SelectImplied();

            if (selRes.Status == PromptStatus.OK)
            {
                var selSet = selRes.Value;
                if (selSet.Count > 0)
                {
                    var id = selSet[0].ObjectId;
                    using (Transaction tr = db.TransactionManager.StartTransaction())
                    {
                        BlockReference bref = tr.GetObject(id, OpenMode.ForRead) as BlockReference;
                        if (bref != null)
                        {
                            if (bref.IsDynamicBlock)
                            {
                                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bref.DynamicBlockTableRecord, OpenMode.ForRead);
                                selectBlockName = btr.Name;
                            }
                            else
                            {
                                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bref.BlockTableRecord, OpenMode.ForRead);
                                selectBlockName = btr.Name;
                            }
                        }
                    }
                }
            }

            var allNames  = AcadSymbolTable.GetBlockTableRecords(db);
            var tempNames = new Dictionary <string, string>();
            int tempCount = 1;

            using (RenameBlockForm form = new RenameBlockForm())
            {
                foreach (var item in AcadSymbolTable.GetBlockTableRecords(db,
                                                                          p => !p.IsLayout && !p.IsFromExternalReference && !p.IsFromOverlayReference,
                                                                          p => new { p.Name, p.IsAnonymous, p.PreviewIcon }))
                {
                    form.AddBlockName(item.Name, item.IsAnonymous, item.PreviewIcon);

                    // Create a temporary name for this block
                    string tempName = "_TMP_BLOCK_NAME_" + tempCount.ToString();
                    while (allNames.ContainsKey(tempName))
                    {
                        tempCount++;
                        tempName = "_TMP_BLOCK_NAME_" + tempCount.ToString();
                    }
                    tempNames.Add(item.Name, tempName);
                    tempCount++;
                }

                form.SelectBlock(selectBlockName);

                // Rename blocks
                if (Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(form) == System.Windows.Forms.DialogResult.OK)
                {
                    var names = form.BlockNames;

                    using (Transaction tr = db.TransactionManager.StartTransaction())
                        using (BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead))
                        {
                            try
                            {
                                // Set temporary names first to prevent name collisions
                                foreach (var pair in names)
                                {
                                    ObjectId         id  = bt[pair.Key];
                                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(id, OpenMode.ForWrite);
                                    btr.Name = tempNames[pair.Key];
                                }
                                // Set final names now
                                foreach (var pair in names)
                                {
                                    ObjectId         id  = bt[tempNames[pair.Key]];
                                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(id, OpenMode.ForWrite);
                                    btr.Name = pair.Value;
                                }
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show("Error: " + ex.ToString(), "XCOM", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }

                            tr.Commit();
                        }
                }
            }
        }
コード例 #5
0
ファイル: Command_LEVEL.cs プロジェクト: tevfikoguz/XCOM
        private bool ShowSettings()
        {
            using (LevelMainForm form = new LevelMainForm())
            {
                form.UnitMeter      = (DrawingUnit == Units.Meters);
                form.UnitCentimeter = (DrawingUnit == Units.Centimeters);
                form.UnitMillimeter = (DrawingUnit == Units.Millimeters);

                form.Precision = Precision;

                form.BasePoint  = BasePoint;
                form.BaseLevel  = BaseLevel;
                form.Multiplier = Multiplier;

                Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
                Autodesk.AutoCAD.DatabaseServices.Database    db  = doc.Database;

                var blockNames = AcadSymbolTable.GetBlockTableRecords(db,
                                                                      p => !p.IsFromExternalReference && !p.IsFromOverlayReference && !p.IsLayout && !p.IsAnonymous,
                                                                      p => p.Name).OrderBy(p => p);
                if (!blockNames.Any())
                {
                    MessageBox.Show("Çizimde kot bloğu bulunamadı. Kot bloğunu INSERT yapıp yeniden deneyin.", "Level", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }

                form.BlockName  = BlockName;
                form.BlockScale = BlockScale;

                if (Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(form) == System.Windows.Forms.DialogResult.OK)
                {
                    if (form.UnitMeter)
                    {
                        DrawingUnit = Units.Meters;
                    }
                    else if (form.UnitCentimeter)
                    {
                        DrawingUnit = Units.Centimeters;
                    }
                    else if (form.UnitMillimeter)
                    {
                        DrawingUnit = Units.Millimeters;
                    }

                    Precision = form.Precision;

                    BasePoint = form.BasePoint;
                    BaseLevel = form.BaseLevel;

                    BlockName  = form.BlockName;
                    BlockScale = form.BlockScale;
                    Multiplier = form.Multiplier;

                    init = true;

                    // Save settings
                    Properties.Settings.Default.Command_LEVEL_DrawingUnit = (int)DrawingUnit;
                    Properties.Settings.Default.Command_LEVEL_BaseLevel   = BaseLevel;
                    Properties.Settings.Default.Command_LEVEL_Precision   = Precision;
                    Properties.Settings.Default.Command_LEVEL_BlockName   = BlockName;
                    Properties.Settings.Default.Command_LEVEL_BlockScale  = BlockScale;
                    Properties.Settings.Default.Command_LEVEL_Multiplier  = Multiplier;
                    Properties.Settings.Default.Save();

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }