7 Replies Latest reply on Oct 8, 2018 5:32 AM by Artem Taturevych

    Error while running any macro example from API help

    Pratik Pawar

      using SolidWorks.Interop.sldworks;

      using SolidWorks.Interop.swconst;

      using System.Runtime.InteropServices;

      using System;

      using System.Diagnostics;

       

      namespace UpdateBoxCSharp.csproj

      {

          public partial class SolidWorksMacro

          {

       

              public void ProcessAssyBox(SldWorks swApp, AssemblyDoc swAssy)

              {

                  object box = null;

                  double[] boxArray = new double[6];

                  box = (object)swAssy.GetBox((int)swBoundingBoxOptions_e.swBoundingBoxIncludeRefPlanes);

                  boxArray = (double[])box;

                  Debug.Print("  Min = (" + boxArray[0] * 1000.0 + ", " + boxArray[1] * 1000.0 + ", " + boxArray[2] * 1000.0 + ") mm");

                  Debug.Print("  Max = (" + boxArray[3] * 1000.0 + ", " + boxArray[4] * 1000.0 + ", " + boxArray[5] * 1000.0 + ") mm");

              }

       

              public void Main()

              {

       

                  ModelDoc2 swModel;

                  AssemblyDoc swAssy;

                  ModelDocExtension swModelDocExt;

                  Dimension swDimension;

                  string fileName;

                  int errors = 0;

                  int warnings = 0;

                  bool status;

       

                  fileName = "C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\samples\\tutorial\\api\\key pad_1.sldasm";

                  swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);

                  swAssy = (AssemblyDoc)swModel;

                  swModelDocExt = (ModelDocExtension)swModel.Extension;

       

                  // Print the two diagonal corner points

                  // of the bounding box before modifying the

                  // assembly

                  Debug.Print("Before:");

                  ProcessAssyBox(swApp, swAssy);

       

                  // Change a dimension of one of the assembly components

                  status = swModelDocExt.SelectByID2("Sketch1@Pad_1-1@key pad_1", "SKETCH", 0, 0, 0, false, 0, null, 0);

                  swModel.EditSketch();

                  swModel.ClearSelection2(true);

                  status = swModelDocExt.SelectByID2("D1@Sketch1@Pad_1-1@key pad_1", "DIMENSION", 0.00306153201295202, 0.0373842545521677, -0.0323079625553351, false, 0, null, 0);

                  swModel.ClearSelection2(true);

                  swDimension = (Dimension)swModel.Parameter("D1@Sketch1@pad_1.Part");      

        errors = (int)swDimension.SetSystemValue3(0.04, (int)swSetValueInConfiguration_e.swSetValue_InThisConfiguration, null);

                  swModel.ClearSelection2(true);

       

                  // Update the bounding box

                  swAssy.UpdateBox();

       

                  // Print the two diagonal corner points of the

                  // bounding box after modifying the assembly

                  Debug.Print("After:");

                  ProcessAssyBox(swApp, swAssy);

       

       

              }

       

              /// <summary>

              ///  The SldWorks swApp variable is pre-assigned for you.

              /// </summary>

              public SldWorks swApp;

          } }

       

      Errors:

      IMG_20181006_172523.jpg