Не работает макрос под SolidWorks на C#

297
30 мая 2018, 14:50

Пытаюсь написать макрос на шарпе под SolidWorks. Ниже -- неработающий участок кода

for (var i = 0; i < selMgr.GetSelectedObjectCount(); i++)
        {
            var Face = selMgr.GetSelectedObject(i+1);
            surfaces.Add(Face.GetSurface());
            measure = swModel.Extension.CreateMeasure();
            if (surfaces[i].IsCylinder())
            {
                // Problem # 1
                Console.WriteLine("Cylinder " + i);
                measure.Calculate(surfaces[i]);
                var diameter = measure.Diameter * 1000;
                var length = 1000 * measure.Perimeter  / (measure.Diameter * Math.PI);
                var temp = swApp.OpenDoc6(@"E:\OAK\Locator9.SLDPRT", 1, 1, "", 0, 0);
                var part = component.AddComponent5(@"E:\OAK\Locator9.SLDPRT", 0, "", true, "", 0, 0, 0.3);
                swApp.CloseDoc(@"E:\OAK\Locator9.SLDPRT");
                ModelDoc2 locator = part.GetModelDoc();
                var eqMgr = locator.GetEquationMgr();
                Console.WriteLine("Evaluated diameter " + diameter);
                Console.WriteLine("Evaluated length " + length);
                Console.WriteLine(eqMgr.Equation[1] + "   " + eqMgr.Equation[2]);

                //Problem #2

                eqMgr.set_Equation(1, $@"""D""={diameter}");
                eqMgr.set_Equation(2, $@"""L""={length}");
                eqMgr.EvaluateAll();
                locator.EditRebuild3();
                locator.ForceRebuild3(false);
            }
            else
            {
                // TODO: Handle other type of surface 
            }
        }
  1. Пытаюсь измерить размеры диаметра и периметра выбранной поверхности, но если количество выбранных граней больше, чем 1, то оба значения вернут -1. Понимаю, что черею UI такое тоже не сделаешь, но, может, есть какой-нибудь способ обойти это?
  2. Код никак не влияет на значения уравнения, хотя их значения я получить могу.

Надеюсь на вашу помощь

READ ALSO
C#: фильтрация ip-адресов

C#: фильтрация ip-адресов

В программе нужно получить свой ip адресДелаю это такой функцией:

194
Изменение данных в XML файле

Изменение данных в XML файле

Достаю из xml файла список учеников, хочу удалить одного из них и записать измененияВот так это выглядит:

177
c# проблема с подключением проекта

c# проблема с подключением проекта

У меня в solution имеется два проектаОдин textEdit, второй textEdit

171
Вывод изображения в представлении ASP.NET MVC

Вывод изображения в представлении ASP.NET MVC

В контроллере у меня есть два метода, Get и PostВ представлении первого создана форма, в которой пользователь загружает изображение и текстовый...

262