I have created a dynamic block with two parameters (par_l and par_h) for the rectangle. Why not in this case nothing happens? I assume that par_l should extend the item to 500. As default I have 100 and 100. The block I have created in the program. By code in c # I want to manipulate it
[CommandMethod("Elem")]
public void TestCommand()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
Transaction tr = db.TransactionManager.StartTransaction();
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite);
ed.WriteMessage(bt["prz_podl"]+"");
BlockTableRecord btr = tr.GetObject(bt["prz_podl"], OpenMode.ForWrite) as BlockTableRecord;
Point3d point = new Point3d(0, 0, 0);
BlockReference br = new BlockReference(point, btr.Id);
br.BlockTableRecord = btr.Id;
DynamicBlockReferencePropertyCollection properties = br.DynamicBlockReferencePropertyCollection;
for (int i = 0; i < properties.Count; i++)
{
DynamicBlockReferenceProperty property = properties[i];
if (property.PropertyName == "par_l")
{
ed.WriteMessage(property.Value+"");
property.Value = 500.0;
}
}
tr.Commit();
}
You have to append the newly created block reference to some BlockTableRecord and add it to the active transaction. You also have to dispose the transaction. Disposing it will take care of diposing all the objects opened with it or added to it.