private static void GetVariableValue(ObjectId variableId, ref string name, ref ResultBuffer value, ref string expression) { using (Transaction Tx = variableId.Database.TransactionManager.StartTransaction()) { AssocVariable var = Tx.GetObject(variableId, OpenMode.ForRead) as AssocVariable; name = var.Name; var.EvaluateExpression(ref value); expression = var.Expression; Tx.Commit(); } }
///<Summary> /// Set Expression for Given variableId ///</Summary> /// private static void SetVariableValue(ObjectId variableId, ResultBuffer value, string expression) { using (Transaction Tx = variableId.Database.TransactionManager.StartTransaction()) { AssocVariable var = Tx.GetObject(variableId, OpenMode.ForWrite) as AssocVariable; if (expression != string.Empty) { string errMsg = string.Empty; var.ValidateNameAndExpression( var.Name, expression, ref errMsg); var.SetExpression( expression, "", true, true, ref errMsg, true); ResultBuffer evaluatedExpressionValue = null; var.EvaluateExpression(ref evaluatedExpressionValue); var.Value = evaluatedExpressionValue; } else { var.Value = value; } Tx.Commit(); } }
///<Summary> /// Get Variable Name for Given variableId ///</Summary> /// private static ObjectId GetVariableByName(ObjectId btrId, string name, bool createIfDoesNotExist) { if (name.Length == 0) { throw new Autodesk.AutoCAD.Runtime.Exception( ErrorStatus.InvalidInput); } ObjectId networkId = AssocNetwork.GetInstanceFromObject( btrId, createIfDoesNotExist, true, "ACAD_ASSOCNETWORK"); if (networkId == ObjectId.Null) { return(ObjectId.Null); } using (Transaction Tx = btrId.Database.TransactionManager.StartTransaction()) { using (AssocNetwork network = Tx.GetObject(networkId, OpenMode.ForRead, false) as AssocNetwork) { foreach (ObjectId actionId in network.GetActions) { if (actionId == ObjectId.Null) { continue; } if (actionId.ObjectClass.IsDerivedFrom( RXObject.GetClass(typeof(AssocVariable)))) { //Check if we found our guy AssocVariable var = Tx.GetObject(actionId, OpenMode.ForRead, false) as AssocVariable; if (var.Name == name) { return(actionId); } } } } } //If we don't want to create a new variable, returns an error if (!createIfDoesNotExist) { return(ObjectId.Null); } return(ObjectId.Null);//We didnt find what we are looking }