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 { ; } }
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 { ; } }
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 { ; } }
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(); } } } }
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); } } }