예제 #1
0
        public static double getMateValue(Component2 component)
        {
            Feature mate = swAssembly.FeatureByName(component.Name2 + "-distance");

            if (mate == null)
            {
                return(-1);
            }

            IDisplayDimension dispDim = (IDisplayDimension)mate.GetFirstDisplayDimension();
            IDimension        dim     = dispDim.IGetDimension();

            double[] someRet = dim.GetSystemValue3((int)swSetValueInConfiguration_e.swSetValue_InSpecificConfigurations,
                                                   new string[] { component.ReferencedConfiguration });

            return(someRet[0]);
        }
예제 #2
0
        public void updateExtrusionDepth(double depthInInches)
        {
            if (depthInInches < 0)
            {
                return;
            }

            double depthInMeters = Utilities.inchesToMeters(depthInInches);

            IDisplayDimension dispDim = (IDisplayDimension)extrusion.GetFirstDisplayDimension();
            IDimension        dim     = dispDim.IGetDimension();

            dim.SetSystemValue3(depthInMeters,
                                (int)swSetValueInConfiguration_e.swSetValue_InSpecificConfigurations,
                                new string[] { belongsTo.ReferencedConfiguration });

            swFeatureMgr.EditRollback((int)swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, extrusion.Name);

            swAssembly.EditRebuild();
            swDoc.EditRebuild3();
            swDoc.ForceRebuild3(false);

            swAssembly.EditAssembly();
        }
예제 #3
0
 private void OnDimensionChange(DocumentHandler docHandler, IDisplayDimension dispDim)
 {
     App.SendMsgToUser2($"'{docHandler.Model.GetTitle()}' dimension change: {dispDim.IGetDimension().FullName} = {dispDim.IGetDimension().Value}",
                        (int)swMessageBoxIcon_e.swMbInformation, (int)swMessageBoxBtn_e.swMbOk);
 }
예제 #4
0
        public static void moveToPosition(Component2 component, int position, double originalPosition)
        {
            /*
             * Buttons have 1 and 0 positions
             * Sliders move along the track from 1 to 0 in 4 steps
             * Dials move in a circle from 0 to 2*pi in 4 steps
             */

            // for now, we will just try to move around the buttons, sliders, and dials, because that is least impossible!
            if (position == -1)
            {
                return;
            }

            // see discussions at
            // https://forum.solidworks.com/message/341157#341157#341157

            double newDistance = 0;

            if (component.Name2.StartsWith("button"))
            {
                if (position == 1)
                {
                    newDistance = Utilities.inchesToMeters(.02);
                }
                else
                {
                    newDistance = originalPosition;
                }
            }
            else if (component.Name2.StartsWith("slider"))
            {
                newDistance = position / 4.0 * originalPosition;
            }
            else if (component.Name2.StartsWith("dial"))
            {
                newDistance = position * Math.PI / 2;
            }

            if (position == 0)
            {
                newDistance = originalPosition;
            }

            Feature mate = swAssembly.FeatureByName(component.Name2 + "-distance");

            if (mate == null)
            {
                return;
            }

            IDisplayDimension dispDim = (IDisplayDimension)mate.GetFirstDisplayDimension();
            IDimension        dim     = dispDim.IGetDimension();

            dim.SetSystemValue3(newDistance,
                                (int)swSetValueInConfiguration_e.swSetValue_InSpecificConfigurations,
                                new string[] { component.ReferencedConfiguration });

            swAssembly.EditRebuild();
            swDoc.ForceRebuild3(false);

            swAssembly.EditAssembly();
        }