Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
///<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();
            }
        }
Esempio n. 3
0
///<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
        }