I'm trying to understand principles of solidworks API, but have several problems. Here is my code:

`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) I want to measure perimeter & diameter of the selected surface. But if a return value of `GetSelectedObjectCount()`

method is greater than 1, `measure.Diameter & measure.Perimete`

both returns -1 .And I kinda understand why, 'cause such operation isn't possible via UI as well (at least with my experience), but can I do smth to solve the problem?

2) The code above has no influence on the equation of the inserted component, even if it writes it on the console. Help please!

I've forgotten to make the component virtual. So second problem is solved