Ejemplo n.º 1
0
        public static void InsertItemGroup(long?parent, string name, string description, string wbs)
        {
            DocumentTakeoff docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();
            string          sql        = "INSERT INTO TK_ItemGroup(parent, name, description, wbs) VALUES(@parent, @name, @description, @wbs)";

            using (NavisworksTransaction trans = docTakeoff.Database.BeginTransaction(DatabaseChangedAction.Edited))
            {
                using (NavisworksCommand cmd = docTakeoff.Database.Value.CreateCommand())
                {
                    NavisworksParameter p = cmd.CreateParameter();
                    p.ParameterName = "@parent";
                    if (parent.HasValue)
                    {
                        p.Value = parent.Value;
                    }
                    else
                    {
                        p.Value = null;
                    }

                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@name";
                    p.Value         = name;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@description";
                    p.Value         = description;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@wbs";
                    p.Value         = wbs;
                    cmd.Parameters.Add(p);

                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                trans.Commit();
            }
        }
Ejemplo n.º 2
0
        public static void DoTakeoff0(long itemId, Guid modelItemGuid, int wbs_number) //вызываем из Main
        {
            DocumentTakeoff  docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();
            List <ModelItem> items      = Autodesk.Navisworks.Api.Application.MainDocument.Models.RootItemDescendantsAndSelf.WhereInstanceGuid(modelItemGuid).ToList();

            //Int64 lastId = -1;
            if (items.Count != 0)
            {
                using (NavisworksTransaction trans = docTakeoff.Database.BeginTransaction(DatabaseChangedAction.Edited))
                {
                    long lastId = GetLastInsertRowId();
                    docTakeoff.Objects.InsertModelItemTakeoff(itemId, items[0]);
                    //TakeoffVariableCollection variable_сollection = docTakeoff.Objects.CreateDefaultInputVariables();//docTakeoff.Objects.SelectInputVariables(itemId);
                    //docTakeoff.Objects.InsertModelItemTakeoff(itemId, modelItemGuid, variable_сollection, false); //использование метода с VariableCollection даёт пустые значения данных в квантификатион
                    //Quantification UI actually expect the takeoff to have a non-empty wbs, so better to set the wbs for it using the sql way

                    //ApiUtility.fail_log.Add("lastId"+lastId.ToString());
                    //ApiUtility.Write_to_log_file();
                    //Debug.Assert(lastId > 0); //проверить необходимость
                    using (NavisworksCommand cmd = docTakeoff.Database.Value.CreateCommand())
                    {
                        //UPDATE Object set WBS = value WHERE id = lastId;
                        cmd.CommandText = "UPDATE TK_OBJECT SET wbs = @wbs WHERE id = @id";
                        NavisworksParameter p = cmd.CreateParameter();
                        p.ParameterName = "@wbs";
                        p.Value         = wbs_number.ToString();// последнее цифра в индексе wbs
                        cmd.Parameters.Add(p);

                        p = cmd.CreateParameter();
                        p.ParameterName = "@id";
                        p.Value         = lastId;
                        cmd.Parameters.Add(p);

                        cmd.ExecuteNonQuery();
                    }
                    //docTakeoff.Objects.UpdateInputVariables(itemId, variable_сollection);
                    trans.Commit();
                }
            }
        }
Ejemplo n.º 3
0
        public static void InsertItem(long?parent, string name, string description, string wbs)
        {
            //Debug.Assert(name != null);
            DocumentTakeoff docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();
            //ItemTable table = docTakeoff.Items;
            //Debug.Assert(table != null);

            //Directly operate on database
            //Database schema entry: TakeoffTable
            //INSERT INTO TABLE(COL1,COL2,COL3...) VALUES(V1,V2,V3...);
            string sql = "INSERT INTO TK_ITEM(parent, name, description, wbs, color, transparency, linethickness, countsymbol, countsize) VALUES(@parent, @name, @description,@wbs, @color, @transparency, @linethickness, @countsymbol, @countsize)";

            //Modification must be surrounded by NavisworksTransaction
            using (NavisworksTransaction trans = docTakeoff.Database.BeginTransaction(DatabaseChangedAction.Edited))
            {
                using (NavisworksCommand cmd = docTakeoff.Database.Value.CreateCommand())
                {
                    NavisworksParameter p = cmd.CreateParameter();
                    p.ParameterName = "@parent";
                    if (parent.HasValue)
                    {
                        p.Value = parent.Value;
                    }
                    else
                    {
                        p.Value = null;
                    }

                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@name";
                    p.Value         = name;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@description";
                    p.Value         = description;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@wbs";
                    p.Value         = wbs;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@color";
                    p.Value         = 24;// 24, 0.5, 0.1, 1, 2
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@transparency";
                    p.Value         = 0.5;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@linethickness";
                    p.Value         = 0.1;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@countsymbol";
                    p.Value         = 1;
                    cmd.Parameters.Add(p);

                    p = cmd.CreateParameter();
                    p.ParameterName = "@countsize";
                    p.Value         = 2;
                    cmd.Parameters.Add(p);

                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                trans.Commit();
            }
        }