C# получить геометрические параметры модели

Автор andr1987, 21.01.16, 11:42:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

andr1987

Добрый день!

Возник следующий вопрос - каким образом можно получить список геометрических параметров модели? Под геометрическими параметрами имеется ввиду то, что продемонстрировано рис.
А также интересует, каким образом менять значения данных параметров.
Если я правильно понял по SDK, то идет речь об интерфейсе IVariable.

За пример кода на C# буду очень благодарен!

#programmer

Ну, например, так:

KompasObject ikompas = (KompasObject)Marshal.GetActiveObject("Kompas.Application.5");
            IApplication app = ikompas.ksGetApplication7();

            IKompasDocument3D d3d = (IKompasDocument3D)app.ActiveDocument;
            IPart7 p7 = d3d.TopPart;
            IModelContainer container = (IModelContainer)p7;
            string paramstr = "";
            //====================== Только эскизы ===============================
            ISketchs sks = container.Sketchs;
            foreach (ISketch sk in sks)
            {
                IModelObject mo = (IModelObject)sk;
                IFeature7 f7 = mo.Owner;
                int varcount = f7.VariablesCount[false, false];
                paramstr = "";
                for (int i = 0; i < varcount; i++)
                {
                    IVariable7 v7 = f7.Variable[false, false, i];
                    paramstr += String.Format("VarName: {0}\tVarValue: {1}\tVarDescription: {2}", v7.Name, v7.Value, v7.ParameterNote);                   
                }
                richTextBox1.AppendText(string.Format("Featurename: {0}\nParameters: {1}\n\n", f7.Name, paramstr));
            }

            //================== Берём все объекты (лучше, конечно фильтровать, а то очень долго будет) ==================
            List < string > fnames = new List<string>();
            object[] arr = (object[])container.Objects[0];
            foreach (object o in arr)
            {
                IModelObject o1 = (IModelObject)o;
                IFeature7 f7 = o1.Owner;
                int varcount = f7.VariablesCount[false, false];
                paramstr = "";
                for (int i = 0; i < varcount; i++)
                {
                    IVariable7 v7 = f7.Variable[false, false, i];
                    paramstr += String.Format("VarName: {0}\tVarValue: {1}\tVarDescription: {2}", v7.Name, v7.Value, v7.ParameterNote);
                }
                if (!fnames.Contains(f7.Name))
                {
                    fnames.Add(f7.Name);
                    richTextBox1.AppendText(string.Format("Featurename: {0}\nParameters: {1}\n\n", f7.Name, paramstr));
                }
            }
+ Благодарностей: 1