[CommandMethod("TEST")]publicvoidTest(){vardoc=Application.DocumentManager.MdiActiveDocument;vardb=doc.Database;vared=doc.Editor;using(vartr=db.TransactionManager.StartTransaction()){varbt=(BlockTable)tr.GetObject(db.BlockTableId,OpenMode.ForRead);// if the bloc table has the block definitionif(bt.Has("Table")){// create a new block referencevarbr=newBlockReference(Point3d.Origin,bt["Table"]);// add the block reference to the curentSpace and the transactionvarcurSpace=(BlockTableRecord)tr.GetObject(db.CurrentSpaceId,OpenMode.ForWrite);curSpace.AppendEntity(br);tr.AddNewlyCreatedDBObject(br,true);// set the dynamic property value1foreach(DynamicBlockReferencePropertypropinbr.DynamicBlockReferencePropertyCollection){if(prop.PropertyName=="Length"){prop.Value=50.0;}}}// save changestr.Commit();}// <- end using: disposing the transaction and all objects opened with it (block table) or added to it (block reference)}
Code to Update Dynamic Property of selected block
[CommandMethod("TEST")]publicvoidTest(){vardoc=Application.DocumentManager.MdiActiveDocument;vardataBase=doc.Database;vareditor=doc.Editor;//Code to select BlockPromptEntityResultprompt=editor.GetEntity("Select one Dynamic Block To Update");if(prompt.Status!=PromptStatus.OK){editor.WriteMessage("nothing selected");return;}//Get Block From object Idusing(Transactiontransaction=dataBase.TransactionManager.StartTransaction()){//Get entity using object idEntityentity=(Entity)transaction.GetObject(prompt.ObjectId,OpenMode.ForRead);BlockReferenceblockRef=transaction.GetObject(entity.ObjectId,OpenMode.ForRead)asBlockReference;BlockTableRecordblock=null;if(blockRef.IsDynamicBlock){block=transaction.GetObject(blockRef.DynamicBlockTableRecord,OpenMode.ForRead)asBlockTableRecord;editor.WriteMessage($"\n{block.Name} Dynamic Block selected");foreach(DynamicBlockReferencePropertypropertyinblockRef.DynamicBlockReferencePropertyCollection){//Only Focus on visible propertiesif(property.Show){//Code to update propertyvarinputPrompt=editor.GetDouble(newPromptDoubleOptions($"\nEnter New Value for {property.PropertyName}"));if(inputPrompt.Status==PromptStatus.OK){property.Value=inputPrompt.Value;}}}}transaction.Commit();}}