private void GetAllMsXrefs(_AcDb.Database db, List <_AcDb.ObjectId> allXrefsInMs) { log.Debug("GetAllMsXrefs"); using (_AcDb.Transaction tr = _TransMan.StartTransaction()) { _AcDb.BlockTable bt = (_AcDb.BlockTable)tr.GetObject(db.BlockTableId, _AcDb.OpenMode.ForRead); _AcDb.BlockTableRecord btr = (_AcDb.BlockTableRecord)tr.GetObject(_AcDb.SymbolUtilityServices.GetBlockModelSpaceId(db), _AcDb.OpenMode.ForRead); foreach (var oid in btr) { var br = tr.GetObject(oid, _AcDb.OpenMode.ForRead) as _AcDb.BlockReference; if (br != null) { var bd = (_AcDb.BlockTableRecord)tr.GetObject(br.BlockTableRecord, _AcDb.OpenMode.ForRead); if (bd.IsFromExternalReference) { allXrefsInMs.Add(br.ObjectId); } } } tr.Commit(); } }
private static void GetAllFgsAbzsAndRbs(string rbName, string fgLayer, string afLayer, _AcDb.Database db, _AcDb.Transaction tr, List <_AcDb.Entity> fgs, List <_AcDb.Entity> azf, List <_AcDb.Entity> rbs) { _AcDb.BlockTable bt = (_AcDb.BlockTable)tr.GetObject(db.BlockTableId, _AcDb.OpenMode.ForRead); _AcDb.BlockTableRecord btr = (_AcDb.BlockTableRecord)tr.GetObject(bt[_AcDb.BlockTableRecord.ModelSpace], _AcDb.OpenMode.ForRead); foreach (_AcDb.ObjectId objId in btr) { _AcDb.Entity ent = (_AcDb.Entity)tr.GetObject(objId, _AcDb.OpenMode.ForRead); var poly = ent as _AcDb.Polyline; if (poly != null) { if (string.Compare(poly.Layer, fgLayer, StringComparison.OrdinalIgnoreCase) == 0) { fgs.Add(ent); } else if (string.Compare(poly.Layer, afLayer, StringComparison.OrdinalIgnoreCase) == 0) { azf.Add(ent); } } else { var block = ent as _AcDb.BlockReference; if (block != null) { if (string.Compare(block.Name, rbName, StringComparison.OrdinalIgnoreCase) == 0) { rbs.Add(ent); } } } } }
public List <_AcDb.ObjectId> GetAllBlocksInModelSpaceWith(Func <_AcDb.BlockReference, bool> checkFunc, string blockName) { var oids = new List <_AcDb.ObjectId>(); var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; using (_AcDb.Transaction tr = doc.TransactionManager.StartTransaction()) { _AcDb.BlockTable bt = (_AcDb.BlockTable)tr.GetObject(db.BlockTableId, _AcDb.OpenMode.ForRead); _AcDb.BlockTableRecord btr = (_AcDb.BlockTableRecord)tr.GetObject(bt[_AcDb.BlockTableRecord.ModelSpace], _AcDb.OpenMode.ForRead); foreach (var oid in btr) { var blockRef = tr.GetObject(oid, _AcDb.OpenMode.ForRead) as _AcDb.BlockReference; if (blockRef != null) { if (string.Compare(blockRef.Name, blockName, StringComparison.OrdinalIgnoreCase) == 0) { if (checkFunc(blockRef)) { oids.Add(oid); } } } } tr.Commit(); } return(oids); }
private List <_Db.RotatedDimension> getAllDims() { List <_Db.RotatedDimension> dims = new List <_Db.RotatedDimension>(); foreach (_Db.ObjectId btrId in _c.blockTable) { _Db.BlockTableRecord btr = _c.trans.GetObject(btrId, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; if (!(btr.IsFromExternalReference)) { foreach (_Db.ObjectId bid in btr) { _Db.Entity currentEntity = _c.trans.GetObject(bid, _Db.OpenMode.ForWrite, false) as _Db.Entity; if (currentEntity == null) { continue; } if (currentEntity is _Db.RotatedDimension) { _Db.RotatedDimension dim = currentEntity as _Db.RotatedDimension; dims.Add(dim); } } } } return(dims); }
static public void DynamicBlockProps() { _AcAp.Document doc = _AcAp.Application.DocumentManager.MdiActiveDocument; _AcDb.Database db = doc.Database; _AcEd.Editor ed = doc.Editor; _AcEd.PromptStringOptions pso = new _AcEd.PromptStringOptions("\nEnter dynamic block name or enter to select: "); pso.AllowSpaces = true; _AcEd.PromptResult pr = ed.GetString(pso); if (pr.Status != _AcEd.PromptStatus.OK) { return; } _AcDb.Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { _AcDb.BlockReference br = null; // If a null string was entered allow entity selection if (pr.StringResult == "") { // Select a block reference _AcEd.PromptEntityOptions peo = new _AcEd.PromptEntityOptions("\nSelect dynamic block reference: "); peo.SetRejectMessage("\nEntity is not a block."); peo.AddAllowedClass(typeof(_AcDb.BlockReference), false); _AcEd.PromptEntityResult per = ed.GetEntity(peo); if (per.Status != _AcEd.PromptStatus.OK) { return; } // Access the selected block reference br = tr.GetObject(per.ObjectId, _AcDb.OpenMode.ForRead) as _AcDb.BlockReference; } else { // Otherwise we look up the block by name _AcDb.BlockTable bt = tr.GetObject(db.BlockTableId, _AcDb.OpenMode.ForRead) as _AcDb.BlockTable; if (!bt.Has(pr.StringResult)) { ed.WriteMessage("\nBlock \"" + pr.StringResult + "\" does not exist."); return; } // Create a new block reference referring to the block br = new _AcDb.BlockReference(new _AcGe.Point3d(), bt[pr.StringResult]); } _AcDb.BlockTableRecord btr = (_AcDb.BlockTableRecord)tr.GetObject(br.DynamicBlockTableRecord, _AcDb.OpenMode.ForRead); // Call our function to display the block properties DisplayDynBlockProperties(ed, br, btr.Name); // Committing is cheaper than aborting tr.Commit(); } }
public void renameBlockInside(string find, string replace) { foreach (_Db.ObjectId btrId in _c.blockTable) { _Db.BlockTableRecord btr = _c.trans.GetObject(btrId, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; foreach (_Db.ObjectId bid in btr) { _Db.Entity currentEntity = _c.trans.GetObject(bid, _Db.OpenMode.ForWrite) as _Db.Entity; if (currentEntity == null) { continue; } if (currentEntity is _Db.MText) { _Db.MText txt = currentEntity as _Db.MText; txt.Contents = txt.Contents.Replace(find, replace); txt.DowngradeOpen(); } if (currentEntity is _Db.DBText) { _Db.DBText txt = currentEntity as _Db.DBText; txt.TextString = txt.TextString.Replace(find, replace); } } } }
public static void ManualInsertMText(AcDb.MText oMText) { using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) { AcDb.BlockTableRecord btr = (AcDb.BlockTableRecord)tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite); oMText.Normal = ed.CurrentUserCoordinateSystem.CoordinateSystem3d.Zaxis; btr.AppendEntity(oMText); tr.AddNewlyCreatedDBObject(oMText, true); MTextPlacementJig pj = new MTextPlacementJig(oMText); AcEd.PromptStatus stat = AcEd.PromptStatus.Keyword; while (stat == AcEd.PromptStatus.Keyword) { AcEd.PromptResult res = ed.Drag(pj); stat = res.Status; if (stat != AcEd.PromptStatus.OK && stat != AcEd.PromptStatus.Keyword) { return; } } tr.Commit(); //return (MText)pj.Entity; } }
private _Db.Viewport layoutViewportGetter(_Db.Layout lay) { _Db.ObjectIdCollection viewIds = lay.GetViewports(); _Db.Viewport vp = null; foreach (_Db.ObjectId id in viewIds) { _Db.Viewport vp2 = _c.trans.GetObject(id, _Db.OpenMode.ForWrite) as _Db.Viewport; if (vp2 != null && vp2.Number == 2) { vp = vp2; break; } } if (vp == null) { _Db.BlockTableRecord btr = _c.trans.GetObject(lay.BlockTableRecordId, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; vp = new _Db.Viewport(); btr.AppendEntity(vp); _c.trans.AddNewlyCreatedDBObject(vp, true); vp.On = true; vp.GridOn = false; } return(vp); }
private void createX(_Db.BlockTableRecord btr, double radius, _Ge.Point3d ip) { _Ge.Point2d p1 = new _Ge.Point2d(ip.X - radius, ip.Y); _Ge.Point2d p2 = new _Ge.Point2d(ip.X + radius, ip.Y); _Ge.Point2d p3 = new _Ge.Point2d(ip.X, ip.Y - radius); _Ge.Point2d p4 = new _Ge.Point2d(ip.X, ip.Y + radius); using (_Db.Polyline poly = new _Db.Polyline()) { poly.AddVertexAt(0, p1, 0, 0, 0); poly.AddVertexAt(1, p2, 0, 0, 0); poly.ColorIndex = 2; btr.AppendEntity(poly); _c.trans.AddNewlyCreatedDBObject(poly, true); } using (_Db.Polyline poly = new _Db.Polyline()) { poly.AddVertexAt(0, p3, 0, 0, 0); poly.AddVertexAt(1, p4, 0, 0, 0); poly.ColorIndex = 2; btr.AppendEntity(poly); _c.trans.AddNewlyCreatedDBObject(poly, true); } }
private void insertLine(_Ge.Point3d ptPos, double dir, double rotation) { _Db.BlockTableRecord btr = _c.trans.GetObject(_c.modelSpace.Id, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; _Ge.Point3d ptEnd = new _Ge.Point3d(); if (rotation == 0.0) { double newX = ptPos.X - (bigCircleOffset - bigCircleRadius) * dir; double newY = ptPos.Y; ptEnd = new _Ge.Point3d(newX, newY, ptPos.Z); } else { double newX = ptPos.X; double newY = ptPos.Y - (bigCircleOffset - bigCircleRadius) * dir; ptEnd = new _Ge.Point3d(newX, newY, ptPos.Z); } using (_Db.Line line = new _Db.Line(ptPos, ptEnd)) { btr.AppendEntity(line); _c.trans.AddNewlyCreatedDBObject(line, true); } }
private void getSelectedObjects(ref List <_Db.Dimension> dims, ref List <_Db.BlockReference> blocks, ref List <_Db.MText> txts) { _Ed.PromptSelectionOptions opts = new _Ed.PromptSelectionOptions(); opts.MessageForAdding = "\nSelect area [empty select == ALL]"; _Ed.PromptSelectionResult selection = _c.ed.GetSelection(opts); if (selection.Status == _Ed.PromptStatus.OK) { _Db.ObjectId[] selectionIds = selection.Value.GetObjectIds(); foreach (_Db.ObjectId id in selectionIds) { alfa(id, ref dims, ref blocks, ref txts); } } else if (selection.Status == _Ed.PromptStatus.Error) { _Db.BlockTableRecord btr = _c.trans.GetObject(_c.modelSpace.Id, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; foreach (_Db.ObjectId id in btr) { alfa(id, ref dims, ref blocks, ref txts); } } }
private void createBlock(_Ge.Point3d center) { if (!_c.blockTable.Has(blockName)) { write("Create missing block"); _Db.BlockTableRecord btr = new _Db.BlockTableRecord(); btr.Name = blockName; _Db.ObjectId btrId = _c.blockTable.Add(btr); _c.trans.AddNewlyCreatedDBObject(btr, true); createX(btr, 1.5, new _Ge.Point3d(0, 0, 0)); createCircle(btr, 1, new _Ge.Point3d(0, 0, 0)); _Db.BlockReference newBlockReference = new _Db.BlockReference(center, btrId); newBlockReference.TransformBy(_Ge.Matrix3d.Scaling(40, center)); _c.modelSpace.AppendEntity(newBlockReference); _c.trans.AddNewlyCreatedDBObject(newBlockReference, true); } else { using (_Db.BlockReference newBlockReference = new _Db.BlockReference(center, _c.blockTable[blockName])) { newBlockReference.TransformBy(_Ge.Matrix3d.Scaling(40, center)); _c.modelSpace.AppendEntity(newBlockReference); _c.trans.AddNewlyCreatedDBObject(newBlockReference, true); } } }
private void getAllDims() { foreach (_Db.ObjectId btrId in _c.blockTable) { _Db.BlockTableRecord btr = _c.trans.GetObject(btrId, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; if (!(btr.IsFromExternalReference)) { foreach (_Db.ObjectId bid in btr) { _Db.Entity currentEntity = _c.trans.GetObject(bid, _Db.OpenMode.ForWrite, false) as _Db.Entity; if (currentEntity == null) { continue; } if (currentEntity is _Db.Dimension) { _Db.Dimension dim = currentEntity as _Db.Dimension; dims[dim] = btr; } } } } }
public void renameBlockFields(string find, string replace) { foreach (_Db.ObjectId btrId in _c.blockTable) { _Db.BlockTableRecord btr = _c.trans.GetObject(btrId, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; _Db.ObjectIdCollection blockRefIds = btr.GetBlockReferenceIds(true, true); foreach (_Db.ObjectId btRfId in blockRefIds) { _Db.BlockReference br = _c.trans.GetObject(btRfId, _Db.OpenMode.ForWrite) as _Db.BlockReference; if (br != null) { foreach (_Db.ObjectId arId in br.AttributeCollection) { _Db.DBObject obj = _c.trans.GetObject(arId, _Db.OpenMode.ForWrite); _Db.AttributeReference ar = obj as _Db.AttributeReference; if (ar != null) { ar.TextString = ar.TextString.Replace(find, replace); } } } } } }
public static void ReplaceAttributeBlock(AcDb.ObjectId idBlock, string tag, string newValue, Boolean visible) { try { //using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) //{ // DBObject dbObj = tr.GetObject(idBlock, AcDb.OpenMode.ForRead) as DBObject; // AcDb.BlockReference blockReference = dbObj as BlockReference; // ReplaceAttributeBlock(blockReference, tag, newValue, visible); //} using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) { AcDb.BlockTable acBlockTable = (AcDb.BlockTable)tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead); if (acBlockTable == null) { return; } AcDb.BlockTableRecord acBlockTableRecord = (AcDb.BlockTableRecord) tr.GetObject(acBlockTable[AcDb.BlockTableRecord.ModelSpace], AcDb.OpenMode.ForRead); if (acBlockTableRecord == null) { return; } //foreach (var blkId in acBlockTableRecord) //{ AcDb.BlockReference acBlock = (AcDb.BlockReference)tr.GetObject(idBlock, AcDb.OpenMode.ForRead); //if (acBlock == null) continue; //if (!acBlock.Name.Equals(blockName, StringComparison.CurrentCultureIgnoreCase)) continue; foreach (AcDb.ObjectId attId in acBlock.AttributeCollection) { AcDb.AttributeReference acAtt = (AcDb.AttributeReference)tr.GetObject(attId, AcDb.OpenMode.ForRead); if (acAtt == null) { continue; } if (!acAtt.Tag.Equals(tag, StringComparison.CurrentCultureIgnoreCase)) { continue; } acAtt.UpgradeOpen(); acAtt.TextString = newValue; } //} tr.Commit(); } } catch //(System.Exception exc) { } }
public static void ManualInsertbAttribute(string nameBlock) { using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) { AcDb.BlockTable blockTable = (AcDb.BlockTable)tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead); if (!blockTable.Has(nameBlock)) { ed.WriteMessage("\nНезнайдено блок '{0}' у таблиці блоків креслення.", nameBlock); return; } AcDb.BlockTableRecord curSpace = (AcDb.BlockTableRecord)tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite); AcDb.BlockReference blockReference = new AcDb.BlockReference(AcGe.Point3d.Origin, blockTable[nameBlock]); blockReference.TransformBy(ed.CurrentUserCoordinateSystem); curSpace.AppendEntity(blockReference); tr.AddNewlyCreatedDBObject(blockReference, true); AcDb.BlockTableRecord btr = (AcDb.BlockTableRecord)tr.GetObject(blockTable[nameBlock], AcDb.OpenMode.ForRead); AcDb.DBText text; foreach (AcDb.ObjectId id in btr) { if (id.ObjectClass.Name == "AcDbAttributeDefinition") { AcDb.AttributeDefinition attDef = (AcDb.AttributeDefinition)tr.GetObject(id, AcDb.OpenMode.ForRead); text = new AcDb.DBText { TextString = "jig_test" }; TextPlacementJig jig = new TextPlacementJig(text); //PromptResult pr = ed.Drag(jig); AcEd.PromptStatus stat = AcEd.PromptStatus.Keyword; while (stat == AcEd.PromptStatus.Keyword) { AcEd.PromptResult pr = ed.Drag(jig); stat = pr.Status; if (stat != AcEd.PromptStatus.OK && stat != AcEd.PromptStatus.Keyword) { return; } } AcDb.AttributeReference attRef = new AcDb.AttributeReference(); attRef.SetAttributeFromBlock(attDef, blockReference.BlockTransform); AcDb.ObjectId attId = blockReference.AttributeCollection.AppendAttribute(attRef); tr.AddNewlyCreatedDBObject(attRef, true); tr.Commit(); //if (pr.Status != PromptStatus.OK) blockReference.Erase(); } } //tr.Commit(); } }
private void alfa(_Db.ObjectId id, ref List <_Db.Dimension> dims, ref List <_Db.BlockReference> blocks, ref List <_Db.MText> txts) { _Db.DBObject currentEntity = _c.trans.GetObject(id, _Db.OpenMode.ForWrite, false) as _Db.DBObject; if (currentEntity == null) { return; } else if (currentEntity is _Db.BlockReference) { _Db.BlockReference blockRef = currentEntity as _Db.BlockReference; _Db.BlockTableRecord block = null; if (blockRef.IsDynamicBlock) { block = _c.trans.GetObject(blockRef.DynamicBlockTableRecord, _Db.OpenMode.ForRead) as _Db.BlockTableRecord; } else { block = _c.trans.GetObject(blockRef.BlockTableRecord, _Db.OpenMode.ForRead) as _Db.BlockTableRecord; } if (block != null) { blocks.Add(blockRef); } } else if (currentEntity is _Db.Dimension) { _Db.Dimension dim = currentEntity as _Db.Dimension; dims.Add(dim); } else if (currentEntity is _Db.MText) { _Db.MText br = currentEntity as _Db.MText; txts.Add(br); } else if (currentEntity is _Db.DBText) { _Db.DBText br = currentEntity as _Db.DBText; _Db.MText myMtext = new _Db.MText(); myMtext.Contents = br.TextString; myMtext.Location = br.Position; myMtext.TextHeight = br.Height; txts.Add(myMtext); } else if (currentEntity is _Db.MLeader) { _Db.MLeader br = currentEntity as _Db.MLeader; if (br.ContentType == _Db.ContentType.MTextContent) { _Db.MText leaderText = br.MText; txts.Add(leaderText); } } }
private void logic() { List <_Db.Dimension> wrongDims = new List <_Db.Dimension>(); Dictionary <_Ge.Point3d, _Db.Dimension> wrongPoints = new Dictionary <_Ge.Point3d, _Db.Dimension>(); foreach (_Db.Dimension dim in dims.Keys) { _Db.BlockTableRecord btr = dims[dim]; List <_Ge.Point3d> points = getBlockTableRecordPoints(btr); if (dim is _Db.RotatedDimension) { _Db.RotatedDimension rdim = dim as _Db.RotatedDimension; _Ge.Point3d p1 = rdim.XLine1Point; _Ge.Point3d p2 = rdim.XLine2Point; bool pp1 = matchPoints(p1, points); bool pp2 = matchPoints(p2, points); if (pp1 == false) { wrongPoints[p1] = dim; if (!wrongDims.Contains(dim)) { wrongDims.Add(dim); } } if (pp2 == false) { wrongPoints[p2] = dim; if (!wrongDims.Contains(dim)) { wrongDims.Add(dim); } } } } write("Vigade arv: " + wrongDims.Count().ToString()); if (wrongDims.Count > 0) { initLayer(kontrollLayer); } foreach (_Db.Dimension dim in wrongDims) { changeFillColor(dim, 1); } foreach (_Ge.Point3d pt in wrongPoints.Keys) { _Db.Dimension dim = wrongPoints[pt]; createCircle(100, 1, pt, dims[dim]); createCircle(750, 1, pt, dims[dim]); } }
public _CONNECTION() { _doc = _Ap.Application.DocumentManager.MdiActiveDocument; _db = _doc.Database; _ed = _doc.Editor; _trans = _db.TransactionManager.StartTransaction(); _blockTable = _trans.GetObject(_db.BlockTableId, _Db.OpenMode.ForWrite) as _Db.BlockTable; _modelSpace = _trans.GetObject(_Db.SymbolUtilityServices.GetBlockModelSpaceId(_db), _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; }
public static void EditeAttributeBlock(string blockName, string tag, string newValue) { using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) { AcDb.BlockTable acBlockTable = (AcDb.BlockTable)tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead); if (acBlockTable == null) { return; } AcDb.BlockTableRecord acBlockTableRecord = (AcDb.BlockTableRecord)tr.GetObject(acBlockTable[AcDb.BlockTableRecord.ModelSpace], AcDb.OpenMode.ForRead); if (acBlockTableRecord == null) { return; } foreach (var blkId in acBlockTableRecord) { try { AcDb.BlockReference acBlock = (AcDb.BlockReference)tr.GetObject(blkId, AcDb.OpenMode.ForRead); if (acBlock == null) { continue; } if (!acBlock.Name.Equals(blockName, StringComparison.CurrentCultureIgnoreCase)) { continue; } foreach (AcDb.ObjectId attId in acBlock.AttributeCollection) { var acAtt = tr.GetObject(attId, AcDb.OpenMode.ForRead) as AcDb.AttributeReference; if (acAtt == null) { continue; } if (!acAtt.Tag.Equals(tag, StringComparison.CurrentCultureIgnoreCase)) { continue; } acAtt.UpgradeOpen(); acAtt.TextString = newValue; } } catch { } } tr.Commit(); } }
private void createCircle(_Db.BlockTableRecord btr, double radius, _Ge.Point3d ip) { using (_Db.Circle circle = new _Db.Circle()) { circle.Center = ip; circle.Radius = radius; circle.ColorIndex = 2; btr.AppendEntity(circle); _c.trans.AddNewlyCreatedDBObject(circle, true); } }
public static void DrawOrder_MoveToTop(AcDb.ObjectIdCollection collection) { using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) { AcDb.BlockTable bt = (AcDb.BlockTable)tr.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead); AcDb.BlockTableRecord btr = (AcDb.BlockTableRecord)tr.GetObject(bt[AcDb.BlockTableRecord.ModelSpace], AcDb.OpenMode.ForWrite); AcDb.DrawOrderTable dot = (AcDb.DrawOrderTable)tr.GetObject(btr.DrawOrderTableId, AcDb.OpenMode.ForWrite); dot.MoveToTop(collection); } }
private void insertCircle(_Ge.Point3d center, double radius) { _Db.BlockTableRecord btr = _c.trans.GetObject(_c.modelSpace.Id, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; using (_Db.Circle circle = new _Db.Circle()) { circle.Center = center; circle.Radius = radius; btr.AppendEntity(circle); _c.trans.AddNewlyCreatedDBObject(circle, true); } }
public void TestTrans() { try { //System.Windows.Forms.MessageBox.Show(string.Format(CultureInfo.InvariantCulture, "_test = {0}", _test)); //_test = 0; _AcDb.Database db = _AcAp.Application.DocumentManager.MdiActiveDocument.Database; _AcDb.TransactionManager dbTrans = db.TransactionManager; using (_AcDb.Transaction trans = dbTrans.StartTransaction()) { // create a line _AcDb.Line ln = new _AcDb.Line(new _AcGe.Point3d(0.0, 0.0, 0.0), new _AcGe.Point3d(1.0, 1.0, 0.0)); _AcDb.BlockTable bt = dbTrans.GetObject(db.BlockTableId, _AcDb.OpenMode.ForRead, false) as _AcDb.BlockTable; if (bt == null) { return; } //ObjectId id = bt[BlockTableRecord.ModelSpace]; _AcDb.BlockTableRecord btr = dbTrans.GetObject(bt[_AcDb.BlockTableRecord.ModelSpace], _AcDb.OpenMode.ForWrite, false) as _AcDb.BlockTableRecord; if (btr == null) { return; } //Add it to the model space block table record. btr.AppendEntity(ln); //Make sure that the transaction knows about this new object. tm.AddNewlyCreatedDBObject(line, True) dbTrans.AddNewlyCreatedDBObject(ln, true); //'Add some hyperlinks. Dim hyper As New HyperLink() hyper.Name = "www.autodesk.com" line.Hyperlinks.Add(hyper) _AcDb.HyperLink hyper = new _AcDb.HyperLink(); hyper.Name = "www.facebook.com"; ln.Hyperlinks.Add(hyper); if (ln.Hyperlinks.Contains(hyper)) { hyper.Name = "www.gotdotnet.com"; } ln.Hyperlinks.Add(hyper); foreach (var hl in ln.Hyperlinks) { System.Diagnostics.Debug.WriteLine(hl.ToString()); } trans.Commit(); } } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } }
private bool getBlockFromMaster(ref List <string> missingBlocks) { _Db.Database sourceDb = new _Db.Database(false, true); string sourceFileName = @"C:\Brics_pealeehitus\master.dwg"; if (!File.Exists(sourceFileName)) { sourceFileName = @"C:\Users\aleksandr.ess\Dropbox\DMT\Brics_testimine\master.dwg"; if (!File.Exists(sourceFileName)) { sourceFileName = @"C:\Users\Alex\Dropbox\DMT\Brics_testimine\master.dwg"; } } sourceDb.ReadDwgFile(sourceFileName, System.IO.FileShare.Read, true, ""); _Db.ObjectIdCollection blockIds = new _Db.ObjectIdCollection(); using (_Db.Transaction sourceTrans = sourceDb.TransactionManager.StartTransaction()) { _Db.BlockTable sourceBlockTable = sourceTrans.GetObject(sourceDb.BlockTableId, _Db.OpenMode.ForRead, false) as _Db.BlockTable; foreach (_Db.ObjectId sourceObject in sourceBlockTable) { _Db.BlockTableRecord btr = sourceTrans.GetObject(sourceObject, _Db.OpenMode.ForRead, false) as _Db.BlockTableRecord; if (!btr.IsAnonymous && !btr.IsLayout) { if (missingBlocks.Contains(btr.Name)) { blockIds.Add(sourceObject); missingBlocks.Remove(btr.Name); write("[SETUP] " + btr.Name); // TODO REMOVE } } btr.Dispose(); } } if (missingBlocks.Count > 0) { return(false); } _Db.IdMapping mapping = new _Db.IdMapping(); sourceDb.WblockCloneObjects(blockIds, _c.blockTable.Id, mapping, _Db.DuplicateRecordCloning.Replace, false); sourceDb.Dispose(); write("[SETUP] Kõik puuduvad blockid on lisatud 'master' failist"); return(true); }
private void createCircle(double radius, int index, _Ge.Point3d ip) { _Db.BlockTableRecord btr = _c.trans.GetObject(_c.modelSpace.Id, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; using (_Db.Circle circle = new _Db.Circle()) { circle.Center = ip; circle.Radius = radius; circle.ColorIndex = index; circle.Layer = kontrollLayer; btr.AppendEntity(circle); _c.trans.AddNewlyCreatedDBObject(circle, true); } }
private List <_Db.MText> getAllText(string layer) { List <_Db.MText> txt = new List <_Db.MText>(); _Db.BlockTableRecord btr = _c.trans.GetObject(_c.modelSpace.Id, _Db.OpenMode.ForWrite) as _Db.BlockTableRecord; foreach (_Db.ObjectId id in btr) { _Db.Entity currentEntity = _c.trans.GetObject(id, _Db.OpenMode.ForWrite, false) as _Db.Entity; if (currentEntity != null) { if (currentEntity is _Db.MText) { _Db.MText br = currentEntity as _Db.MText; if (br.Layer == layer) { txt.Add(br); } } if (currentEntity is _Db.DBText) { _Db.DBText br = currentEntity as _Db.DBText; if (br.Layer == layer) { _Db.MText myMtext = new _Db.MText(); myMtext.Contents = br.TextString; myMtext.Location = br.Position; txt.Add(myMtext); } } if (currentEntity is _Db.MLeader) { _Db.MLeader br = currentEntity as _Db.MLeader; if (br.Layer == layer) { if (br.ContentType == _Db.ContentType.MTextContent) { _Db.MText leaderText = br.MText; txt.Add(leaderText); } } } } } return(txt); }
public static AcDb.ObjectId InsertObject(AcDb.Entity entityObject) { AcDb.ObjectId objectId; using (AcDb.Transaction tr = db.TransactionManager.StartTransaction()) { AcDb.BlockTableRecord btr = (AcDb.BlockTableRecord)tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite); btr.AppendEntity(entityObject); tr.AddNewlyCreatedDBObject(entityObject, true); objectId = entityObject.ObjectId; btr.Dispose(); tr.Commit(); } return(objectId); }
private List <_Db.BlockReference> getSelectedBlockReference(string[] blockNames) { List <_Db.BlockReference> refs = new List <_Db.BlockReference>(); _Ed.PromptSelectionOptions opts = new _Ed.PromptSelectionOptions(); opts.MessageForAdding = "\nSelect BLOCK " + blockNames[0] + " / " + blockNames[1]; _Ed.PromptSelectionResult selection = _c.ed.GetSelection(opts); if (selection.Status == _Ed.PromptStatus.OK) { _Db.ObjectId[] selectionIds = selection.Value.GetObjectIds(); foreach (_Db.ObjectId id in selectionIds) { _Db.DBObject currentEntity = _c.trans.GetObject(id, _Db.OpenMode.ForWrite, false) as _Db.DBObject; if (currentEntity == null) { continue; } else if (currentEntity is _Db.BlockReference) { _Db.BlockReference blockRef = currentEntity as _Db.BlockReference; _Db.BlockTableRecord block = null; if (blockRef.IsDynamicBlock) { block = _c.trans.GetObject(blockRef.DynamicBlockTableRecord, _Db.OpenMode.ForRead) as _Db.BlockTableRecord; } else { block = _c.trans.GetObject(blockRef.BlockTableRecord, _Db.OpenMode.ForRead) as _Db.BlockTableRecord; } if (block != null) { if (blockNames.Contains(block.Name)) { refs.Add(blockRef); } } } } } return(refs); }
public static void ReplaceAttributeBlock(AcDb.BlockReference blockReference, Dictionary <string, string> tags, Boolean visible) { using (AcDb.Transaction trAdding = db.TransactionManager.StartTransaction()) { AcDb.BlockTable btTable = (AcDb.BlockTable)trAdding.GetObject(db.BlockTableId, AcDb.OpenMode.ForRead); AcDb.BlockTableRecord btrTable = (AcDb.BlockTableRecord)btTable[blockReference.Name].GetObject(AcDb.OpenMode.ForRead); if (btrTable.HasAttributeDefinitions) { var attDefs = btrTable.Cast <AcDb.ObjectId>() .Where(n => n.ObjectClass.Name == "AcDbAttributeDefinition") .Select(n => (AcDb.AttributeDefinition)n.GetObject(AcDb.OpenMode.ForRead)); foreach (AcDb.AttributeDefinition attDef in attDefs) { AcDb.AttributeReference attRef = new AcDb.AttributeReference(); attRef.SetAttributeFromBlock(attDef, blockReference.BlockTransform); foreach (var tag in tags) { attRef.UpgradeOpen(); if (tag.Key.ToUpper() == attRef.Tag) { attRef.TextString = tag.Value; } else { attRef.TextString = "NoneValue"; } attRef.Visible = visible; attRef.Rotation = 0; } blockReference.AttributeCollection.AppendAttribute(attRef); trAdding.AddNewlyCreatedDBObject(attRef, false); } } else { ed.WriteMessage("\n < ERROR > "); } trAdding.Commit(); } }