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); } } }
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 insertBending(R.Raud _ALFA_, G.Point insertion) { string layerName = "K023TL"; string blockName = getBendingBlockName(_ALFA_); _Ge.Point3d insertPointBlock = new _Ge.Point3d(insertion.X, insertion.Y, 0); using (_Db.BlockReference newBlockReference = new _Db.BlockReference(insertPointBlock, _c.blockTable[blockName])) { newBlockReference.Layer = layerName; _c.modelSpace.AppendEntity(newBlockReference); _c.trans.AddNewlyCreatedDBObject(newBlockReference, true); newBlockReference.TransformBy(_Ge.Matrix3d.Scaling(L._V_.Z_DRAWING_SCALE, insertPointBlock)); _Db.BlockTableRecord blockBlockTable = _c.trans.GetObject(_c.blockTable[blockName], _Db.OpenMode.ForRead) as _Db.BlockTableRecord; if (blockBlockTable.HasAttributeDefinitions) { foreach (_Db.ObjectId objID in blockBlockTable) { _Db.DBObject obj = _c.trans.GetObject(objID, _Db.OpenMode.ForRead) as _Db.DBObject; if (obj is _Db.AttributeDefinition) { _Db.AttributeDefinition attDef = obj as _Db.AttributeDefinition; if (!attDef.Constant) { using (_Db.AttributeReference attRef = new _Db.AttributeReference()) { attRef.SetAttributeFromBlock(attDef, newBlockReference.BlockTransform); attRef.Position = attDef.Position.TransformBy(newBlockReference.BlockTransform); setBendingBlockParameters(attRef, _ALFA_); newBlockReference.AttributeCollection.AppendAttribute(attRef); _c.trans.AddNewlyCreatedDBObject(attRef, true); } } } } } } }
public static AcDb.ObjectId ManualInsertBlock(string nameBlock, double scaleBlock, Dictionary <string, string> tags) { AcDb.ObjectId idBlock = AcDb.ObjectId.Null; 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(idBlock); } AcDb.BlockTableRecord curSpace = (AcDb.BlockTableRecord)tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite); AcDb.BlockReference blockReference = new AcDb.BlockReference(AcGe.Point3d.Origin, blockTable[nameBlock]) { ScaleFactors = new AcGe.Scale3d(scaleBlock, scaleBlock, scaleBlock) }; blockReference.TransformBy(ed.CurrentUserCoordinateSystem); curSpace.AppendEntity(blockReference); tr.AddNewlyCreatedDBObject(blockReference, true); AcDb.BlockTableRecord btr = (AcDb.BlockTableRecord)tr.GetObject(blockTable[nameBlock], AcDb.OpenMode.ForRead); BlockPlacementJig jig = new BlockPlacementJig(blockReference, tags); AcEd.PromptResult pr = ed.Drag(jig); if (pr.Status != AcEd.PromptStatus.OK) { blockReference.Erase(); } tr.Commit(); } return(idBlock); }
public static AcDb.ObjectId InsertBlock( string nameBlock, AcGe.Point3d insertionPoint, double scale, double rotation, AcDb.ObjectId layerId, Dictionary <string, string> tags) { AcDb.ObjectId idBlock = AcDb.ObjectId.Null; 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(idBlock); } AcDb.BlockTableRecord curSpace = (AcDb.BlockTableRecord)tr.GetObject(db.CurrentSpaceId, AcDb.OpenMode.ForWrite); AcDb.BlockReference blockReference = new AcDb.BlockReference(insertionPoint, blockTable[nameBlock]) { LayerId = layerId, ScaleFactors = new AcGe.Scale3d(scale, scale, scale), Rotation = rotation }; blockReference.TransformBy(ed.CurrentUserCoordinateSystem); curSpace.AppendEntity(blockReference); tr.AddNewlyCreatedDBObject(blockReference, true); if (tags != null) { ReplaceAttributeBlock(blockReference, tags, true); } idBlock = blockReference.ObjectId; tr.Commit(); } return(idBlock); }
private void insertRow(G.Point insertion, T.TableBendingRow rowData, double scale, string tableBendingRow) { _Ge.Point3d insertPointBlock = new _Ge.Point3d(insertion.X, insertion.Y, 0); using (_Db.BlockReference newBlockReference = new _Db.BlockReference(insertPointBlock, _c.blockTable[tableBendingRow])) { newBlockReference.Layer = bendingLayer; _c.modelSpace.AppendEntity(newBlockReference); _c.trans.AddNewlyCreatedDBObject(newBlockReference, true); newBlockReference.TransformBy(_Ge.Matrix3d.Scaling(scale, insertPointBlock)); _Db.BlockTableRecord blockBlockTable = _c.trans.GetObject(_c.blockTable[tableBendingRow], _Db.OpenMode.ForRead) as _Db.BlockTableRecord; if (blockBlockTable.HasAttributeDefinitions) { foreach (_Db.ObjectId objID in blockBlockTable) { _Db.DBObject obj = _c.trans.GetObject(objID, _Db.OpenMode.ForRead) as _Db.DBObject; if (obj is _Db.AttributeDefinition) { _Db.AttributeDefinition attDef = obj as _Db.AttributeDefinition; if (!attDef.Constant) { using (_Db.AttributeReference attRef = new _Db.AttributeReference()) { attRef.SetAttributeFromBlock(attDef, newBlockReference.BlockTransform); attRef.Position = attDef.Position.TransformBy(newBlockReference.BlockTransform); setRowParameters(attRef, rowData); newBlockReference.AttributeCollection.AppendAttribute(attRef); _c.trans.AddNewlyCreatedDBObject(attRef, true); } } } } } } }