/// <summary> /// Вставка блока с атрибутами /// </summary> /// <param name="promptCounter">0 - только вставка, 1 - с поворотом</param> /// <param name="tr">Транзакция</param> /// <param name="db">База данных чертежа</param> /// <param name="ed">Editor</param> /// <param name="blkDefId">ObjectId блока</param> /// <param name="attributes">Список имен атрибутов</param> /// <param name="isAnnotative">Аннотативность блока-исходника</param> /// <returns></returns> public static ObjectId InsertBlockRef( int promptCounter, Transaction tr, Database db, Editor ed, ObjectId blkDefId, List <string> attributes, bool isAnnotative) { var btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); var blockReference = new BlockReference(Point3d.Origin, blkDefId); if (isAnnotative) { var ocm = db.ObjectContextManager; var occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES"); ObjectContexts.AddContext(blockReference, occ.CurrentContext); } var id = btr.AppendEntity(blockReference); tr.AddNewlyCreatedDBObject(blockReference, true); var jig = new BlockRefJig(blockReference, AppendAttribToBlock(tr, blockReference, attributes)); jig.SetPromptCounter(0); var res = ed.Drag(jig); if (res.Status == PromptStatus.OK) { if (promptCounter == 1) { jig.SetPromptCounter(promptCounter); res = ed.Drag(jig); if (res.Status == PromptStatus.OK) { return(id); } } else { return(id); } } blockReference.Erase(); return(ObjectId.Null); }
/// <summary> /// Вставка блока с атрибутами /// </summary> /// <param name="promptCounter">0 - только вставка, 1 - с поворотом</param> /// <param name="tr">Транзакция</param> /// <param name="db">База данных чертежа</param> /// <param name="ed">Editor</param> /// <param name="blkdefid">ObjectId блока</param> public static ObjectId InsertBlockRef( int promptCounter, Transaction tr, Database db, Editor ed, ObjectId blkdefid) { var btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); var blkref = new BlockReference(Point3d.Origin, blkdefid); var id = btr.AppendEntity(blkref); tr.AddNewlyCreatedDBObject(blkref, true); var jig = new BlockRefJig(blkref); jig.SetPromptCounter(0); var res = ed.Drag(jig); if (res.Status == PromptStatus.OK) { if (promptCounter == 1) { jig.SetPromptCounter(promptCounter); res = ed.Drag(jig); if (res.Status == PromptStatus.OK) { return(id); } } else { return(id); } } blkref.Erase(); return(ObjectId.Null); }