private static LayerInfo GetLayerInfo(string name, Color color, LineWeight lw, string lt, bool isPlottable = true) { var layInfo = new LayerInfo(name) { Color = color, LineWeight = lw, LineType = lt, IsPlotable = isPlottable }; layInfo.CheckLayerState(); return(layInfo); }
protected ObjectId GetLayerForVisual(string layer) { var lay = new LayerInfo(layer ?? SymbolUtilityServices.LayerZeroName); return(lay.CheckLayerState()); }
/// <summary> /// Вставка блока в чертеж - интерактивная (BlockInsertJig) /// </summary> public static ObjectId Insert(string blName, LayerInfo layer, List <Property> props, bool explode = false) { ObjectId idBlRefInsert; var doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) { return(ObjectId.Null); } var db = doc.Database; var ed = doc.Editor; using (doc.LockDocument()) using (var t = db.TransactionManager.StartTransaction()) { var bt = (BlockTable)t.GetObject(db.BlockTableId, OpenMode.ForRead); if (!bt.Has(blName)) { throw new Exception("Блок не определен в чертеже " + blName); } var idBlBtr = bt[blName]; var pt = Point3d.Origin; var br = new BlockReference(pt, idBlBtr); br.SetDatabaseDefaults(); if (layer != null) { layer.CheckLayerState(); br.Layer = layer.Name; } var spaceBtr = (BlockTableRecord)t.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); idBlRefInsert = spaceBtr.AppendEntity(br); t.AddNewlyCreatedDBObject(br, true); if (props != null && br.IsDynamicBlock) { foreach (DynamicBlockReferenceProperty item in br.DynamicBlockReferencePropertyCollection) { var prop = props.FirstOrDefault(p => p.Name.Equals(item.PropertyName, StringComparison.OrdinalIgnoreCase)); if (prop != null) { try { item.Value = prop.Value; } catch (Exception ex) { Logger.Log.Error(ex, msg: $"Ошибка типа значения для дин параметра '{item.PropertyName}' " + $"при вставке блока '{blName}': тип устанавливаемого значение '{prop.Value.GetType()}', " + $"а должен быть тип '{item.UnitsType}'"); } } } } // jig var entJig = new Jigs.BlockInsertJig(br); var pr = ed.Drag(entJig); if (pr.Status == PromptStatus.OK) { var btrBl = (BlockTableRecord)t.GetObject(idBlBtr, OpenMode.ForRead); if (btrBl.HasAttributeDefinitions) { AddAttributes(br, btrBl, t); } if (explode) { var owner = br.BlockId.GetObject <BlockTableRecord>(OpenMode.ForWrite); using (var explodes = new DBObjectCollection()) { br.Explode(explodes); foreach (Entity ent in explodes) { owner.AppendEntity(ent); t.AddNewlyCreatedDBObject(ent, true); ent.Layer = br.Layer; } br.Erase(); } } } else { br.Erase(); idBlRefInsert = ObjectId.Null; } t.Commit(); } return(idBlRefInsert); }