Beispiel #1
0
        public void SetLinkInProperty(string OutPartFileName, string SB_FilenameOUT)
        {
            string       ParamName     = null;
            ksDocument3D iDocument3D_1 = (ksDocument3D)_kompasObject.Document3D();
            bool         op            = iDocument3D_1.Open(OutPartFileName, true);

            ksPart iPart_1 = (ksPart)iDocument3D_1.GetPart((int)Part_Type.pTop_Part);
            ksVariableCollection VariableCollection;

            try
            {
                // получаем интерфейс объекта дерева построения
                ksFeature iFeature = iPart_1.GetFeature();
                //получаем коллекцию внешних переменных
                VariableCollection = iFeature.VariableCollection;
                // обновляем коллекцию внешних переменных
                VariableCollection.refresh();
            }
            catch
            {
                VariableCollection = iPart_1.VariableCollection();
                VariableCollection.refresh();
            }
            //считаем количество переменных в детали
            int count_1 = VariableCollection.GetCount();

            for (int i = 0; i < count_1; i++)
            {
                try
                {
                    //Получаем интерфейс переменной по её имени
                    ksVariable Variable = VariableCollection.GetByIndex(i);
                    ParamName = Variable.name;
                    if (!string.IsNullOrEmpty(Variable.linkDocName))
                    {
                        Variable.SetLink(SB_FilenameOUT, Variable.linkVarName);
                        iPart_1.RebuildModel();
                    }
                }
                catch
                {
                    AddWaitStatus($"Ошибка при изменении параметра {ParamName} для детали: " + Path.GetFileName(OutPartFileName));
                }
            }
            iDocument3D_1.Save();
            iDocument3D_1.close();
        }