public void RebuildModel(DataTable table)
        {
            ksDocument3D doc = _kompas.ActiveDocument3D();

            var part = doc.GetPart(-1);

            var vr = part.VariableCollection;

            var count = vr.GetCount;

            List <kompasVariable> Variables = new List <kompasVariable>();

            //создаем новый список переменных
            for (int i = 0; i < count; i++)
            {
                kompasVariable VAR = new kompasVariable();
                VAR.displayName = table.Rows[i]["displayName"].ToString();
                VAR.name        = table.Rows[i]["name"].ToString();
                VAR.note        = table.Rows[i]["note"].ToString();
                VAR.value       = table.Rows[i]["value"].ToString();
                Variables.Add(VAR);
            }

            //Variables = Variables.OrderBy(o => o.name).ToList();

            //каджую новую переменную из списка записываем в модель
            foreach (var VAR in Variables)
            {
                ChangeVariableOfAssembly(VAR.name, VAR.value);
            }
            part.RebuildModel();
        }
        public List <kompasVariable> GetVarsOfAssembly()
        {
            if (_kompas == null)
            {
                LoadKompas();
                // MessageBox.Show("КОМПАС-3D не запущен!");
                // return null;
            }

            ksDocument3D doc = _kompas.ActiveDocument3D();

            if (doc == null)
            {
                MessageBox.Show("Файл сборки не открыт!");
                return(null);
            }

            /*
             * var parts = doc.PartCollection(true);
             *
             * List<string> names = new List<string>();
             *
             * var countOfParts = parts.GetCount;
             *
             * for (int i = 0; i < countOfParts; i++)
             * {
             *  names.Add(parts.GetByIndex(i).name);
             * }
             */

            var part = doc.GetPart(-1); //parts.GetByName(partname, true, true);

            var vr = part.VariableCollection;

            var count = vr.GetCount;

            List <kompasVariable> Variables = new List <kompasVariable>();


            for (int i = 0; i < count; i++)
            {
                var VAR            = vr.GetByIndex(i);
                var kompasVariable = new kompasVariable();

                kompasVariable.displayName = VAR.displayName;
                kompasVariable.name        = VAR.name;
                kompasVariable.note        = VAR.note;
                kompasVariable.value       = VAR.value.ToString();

                Variables.Add(kompasVariable);
            }
            Variables = Variables.OrderBy(o => o.name[2]).ThenBy(o => o.name[Regex.Match(o.name, ".+(_.{1})").Groups[0].Index + 1]).ToList();
            return(Variables);
        }