【问题标题】:Problems with EquationMgr & SelectionManger Solidworks Api C#EquationMgr 和 SelectionManger Solidworks Api C# 的问题
【发布时间】:2018-05-22 10:37:20
【问题描述】:

我正在尝试了解solidworks API 的原理,但有几个问题。 这是我的代码:

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) 我想测量所选表面的周长和直径。但是如果GetSelectedObjectCount()方法的返回值大于1,则measure.Diameter &amp; measure.Perimeter both returns -1。而且我有点理解为什么,因为通过 UI 也无法进行此类操作,但是我可以做些什么来解决问题吗?
2)上面的代码对插入组件的方程没有影响,即使它写在控制台上。 请帮忙!

【问题讨论】:

    标签: c# solidworks


    【解决方案1】:

    1 对于原始表面,您可以使用 ISurface 对象的 *Params 属性来获取您需要的信息。对于圆柱体,它将是CylinderParams。我现在找不到链接,但我记得读过该度量不应该用于任何精确计算,因为它不能保证在任何时候都是准确的。如果您不关心精度并且仍想使用度量,您可以手动操作一组选定对象。

    2 我没有使用过 IEquationMgr,但总的来说我尽量避免使用 VB 风格的参数化属性,例如 Equation ,我建议尝试使用 Delete 然后 Add 方程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-05
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多