2 Replies Latest reply on Apr 10, 2018 11:34 AM by Vincent Pomerleau

    Property manager question

    Vincent Pomerleau

      Hello!

      the pm_Selection.SingleEntityOnly  property doesn't work in this macro, I'm able to select more than one entity, any idea

       

      ' Handler for PropertyManager page controls

       

       

      Implements PropertyManagerPage2Handler9

       

       

      ' Control objects required for the PropertyManager page

       

       

      Public pm_Page                              As PropertyManagerPage2

       

       

      Public pm_GroupEntities                     As PropertyManagerPageGroup

      Public pm_GroupTool                         As PropertyManagerPageGroup

      Public pm_GroupFS                           As PropertyManagerPageGroup

      Public pm_GroupContourSide                  As PropertyManagerPageGroup

      Public pm_GroupContourDepth                 As PropertyManagerPageGroup

      Public pm_GroupContourMethod                As PropertyManagerPageGroup

      Public pm_GroupContourChamfer               As PropertyManagerPageGroup

      Public pm_GroupDrill                        As PropertyManagerPageGroup

      Public pm_GroupNC_Rapid                     As PropertyManagerPageGroup

      Public pm_GroupNC_Clear                     As PropertyManagerPageGroup

      Public pm_GroupNC_Feed                      As PropertyManagerPageGroup

      Public pm_GroupNC_Retract                   As PropertyManagerPageGroup

      Public pm_GroupNC_CNC_Comp                  As PropertyManagerPageGroup

      Public pm_GroupNC_TP_Comp                   As PropertyManagerPageGroup

      Public pm_GroupMirror                       As PropertyManagerPageGroup

      Public pm_GroupLeadin                       As PropertyManagerPageGroup

       

       

      Public pm_ToolTab                           As PropertyManagerPageTab

      Public pm_FSTab                             As PropertyManagerPageTab

      Public pm_ContourTab                        As PropertyManagerPageTab

      Public pm_DrillTab                          As PropertyManagerPageTab

      Public pm_NCTab                             As PropertyManagerPageTab

      Public pm_MirrorTab                         As PropertyManagerPageTab

      Public pm_LeadinTab                         As PropertyManagerPageTab

       

       

      Public pm_Selection                         As PropertyManagerPageSelectionbox

      'Public pm_Selection1                        As PropertyManagerPageSelectionbox

       

       

      Public pm_OperList                          As PropertyManagerPageListbox

      Public pm_ToolcribList                      As PropertyManagerPageListbox

      Public pm_MachineList                       As PropertyManagerPageListbox

       

       

      Public pm_CheckboxMaintainClimb             As PropertyManagerPageCheckbox

      Public pm_CheckboxKeepOriginal              As PropertyManagerPageCheckbox

      Public pm_CheckboxSideSingleCut             As PropertyManagerPageCheckbox

      Public pm_CheckboxSideIgnoreAirSeg          As PropertyManagerPageCheckbox

      Public pm_CheckboxSideZigZag                As PropertyManagerPageCheckbox

      Public pm_CheckboxChamfer                   As PropertyManagerPageCheckbox

      Public pm_CheckboxNCrapidUseSetupDef        As PropertyManagerPageCheckbox

      Public pm_CheckboxNCclearUseSetupDef        As PropertyManagerPageCheckbox

      Public pm_CheckboxNCUseSkimPlane            As PropertyManagerPageCheckbox

       

       

      Public pm_LabelMachineList                  As PropertyManagerPageLabel

      Public pm_LabelTool                         As PropertyManagerPageLabel

      Public pm_LabelOffsetX                      As PropertyManagerPageLabel

      Public pm_LabelOffsetY                      As PropertyManagerPageLabel

      Public pm_LabelAxis                         As PropertyManagerPageLabel

      Public pm_LabelRPM                          As PropertyManagerPageLabel

      Public pm_LabelFeed                         As PropertyManagerPageLabel

      Public pm_LabelZFeed                        As PropertyManagerPageLabel

      Public pm_LabelLeadFeed                     As PropertyManagerPageLabel

      Public pm_LabelFinalFeed                    As PropertyManagerPageLabel

      Public pm_LabelSideAllow                    As PropertyManagerPageLabel

      Public pm_LabelSideCutAmt                   As PropertyManagerPageLabel

      Public pm_LabelSideFinCutAmt                As PropertyManagerPageLabel

      Public pm_LabelSidePrevAllow                As PropertyManagerPageLabel

      Public pm_LabelSideSpringPass               As PropertyManagerPageLabel

      Public pm_LabelSideZigZag                   As PropertyManagerPageLabel

      Public pm_LabelSideSingleCut                As PropertyManagerPageLabel

      Public pm_LabelSideIgnoreAirSeg             As PropertyManagerPageLabel

      Public pm_LabelFSmethod                     As PropertyManagerPageLabel

      Public pm_LabelDepthMethod                  As PropertyManagerPageLabel

      Public pm_LabelDepthRamp                    As PropertyManagerPageLabel

      Public pm_LabelDepthAllow                   As PropertyManagerPageLabel

      Public pm_LabelDepthFirstCut                As PropertyManagerPageLabel

      Public pm_LabelDepthMaxCut                  As PropertyManagerPageLabel

      Public pm_LabelDepthFinCut                  As PropertyManagerPageLabel

      Public pm_LabelDepthRampAngle               As PropertyManagerPageLabel

      Public pm_LabelChamferAngle                 As PropertyManagerPageLabel

      Public pm_LabelChamferLength                As PropertyManagerPageLabel

      Public pm_LabelChamferClear                 As PropertyManagerPageLabel

      Public pm_LabelChamferFeatEdge              As PropertyManagerPageLabel

      Public pm_LabelDrillCycle                   As PropertyManagerPageLabel

      Public pm_LabelDrillFirstPeck               As PropertyManagerPageLabel

      Public pm_LabelDrillSubPeck                 As PropertyManagerPageLabel

      Public pm_LabelDrillDwell                   As PropertyManagerPageLabel

      Public pm_LabelNCrapidDist                  As PropertyManagerPageLabel

      Public pm_LabelNCclearDist                  As PropertyManagerPageLabel

      Public pm_LabelNCfeedDist                   As PropertyManagerPageLabel

      Public pm_LabelNCretractDist                As PropertyManagerPageLabel

       

       

      Public pm_NumberTool                        As PropertyManagerPageNumberbox

      Public pm_NumberRPM                         As PropertyManagerPageNumberbox

      Public pm_NumberFeed                        As PropertyManagerPageNumberbox

      Public pm_NumberZFeed                       As PropertyManagerPageNumberbox

      Public pm_NumberLeadFeed                    As PropertyManagerPageNumberbox

      Public pm_NumberFinalFeed                   As PropertyManagerPageNumberbox

      Public pm_NumberSideAllow                   As PropertyManagerPageNumberbox

      Public pm_NumberSideCutAmt                  As PropertyManagerPageNumberbox

      Public pm_NumberSideFinCutAmt               As PropertyManagerPageNumberbox

      Public pm_NumberSidePrevAllow               As PropertyManagerPageNumberbox

      Public pm_NumberSideSpringPass              As PropertyManagerPageNumberbox

      Public pm_NumberOffsetX                     As PropertyManagerPageNumberbox

      Public pm_NumberOffsetY                     As PropertyManagerPageNumberbox

      Public pm_NumberDepthAllow                  As PropertyManagerPageNumberbox

      Public pm_NumberDepthFirstCut               As PropertyManagerPageNumberbox

      Public pm_NumberDepthMaxCut                 As PropertyManagerPageNumberbox

      Public pm_NumberDepthFinCut                 As PropertyManagerPageNumberbox

      Public pm_NumberDepthRampAngle              As PropertyManagerPageNumberbox

      Public pm_NumberChamferAngle                As PropertyManagerPageNumberbox

      Public pm_NumberChamferLength               As PropertyManagerPageNumberbox

      Public pm_NumberChamferClear                As PropertyManagerPageNumberbox

      Public pm_NumberDrillFirstPeck              As PropertyManagerPageNumberbox

      Public pm_NumberDrillSubPeck                As PropertyManagerPageNumberbox

      Public pm_NumberDrillDwell                  As PropertyManagerPageNumberbox

      Public pm_NumberNCrapidDist                 As PropertyManagerPageNumberbox

      Public pm_NumberNCclearDist                 As PropertyManagerPageNumberbox

      Public pm_NumberNCfeedDist                  As PropertyManagerPageNumberbox

      Public pm_NumberNCretractDist               As PropertyManagerPageNumberbox

       

       

      Public pm_ButtonCancelMirror                As PropertyManagerPageButton

       

       

      Public pm_ComboFSmethod                     As PropertyManagerPageCombobox

      Public pm_ComboDepthMethod                  As PropertyManagerPageCombobox

      Public pm_ComboDepthRamp                    As PropertyManagerPageCombobox

      Public pm_ComboChamferFeatEdge              As PropertyManagerPageCombobox

      Public pm_ComboDrillCycle                   As PropertyManagerPageCombobox

      Public pm_ComboNC_Rapid                     As PropertyManagerPageCombobox

      Public pm_ComboNC_Clear                     As PropertyManagerPageCombobox

      Public pm_ComboNC_Feed                      As PropertyManagerPageCombobox

       

      Public pm_RadioClimb                        As PropertyManagerPageOption

      Public pm_RadioConventional                 As PropertyManagerPageOption

       

       

      Public pm_Slider                            As PropertyManagerPageSlider

      Public pm_BMPButton                         As PropertyManagerPageBitmapButton

      Public pm_BMPButton1                        As PropertyManagerPageBitmapButton

      Public pm_Bitmap                            As PropertyManagerPageBitmap

      Public pm_ActiveX                           As PropertyManagerPageActiveX

       

       

      Public PartDoc                              As CWPartDoc

      Public cwSelMgr                             As CWSelectionMgr

      Public swSelMgr                             As selectionMgr

      Public featManager                          As FeatureManager

      Public activeComp                           As SldWorks.Component2

      Public cwDoc                                As cwDoc

      Public cwTlCrib                             As CWToolcrib

      Public cwTl                                 As CWTool

      Public currFeat                             As feature

      Public subFeat                              As feature

      Public cwMach                               As CWMachine

      Public cwToolList                           As CWDispatchCollection

      Public millOperation                        As CWMillOperation

      Public cwNCParams                           As CWNCParam

      Public swFeat                               As feature

      Public FeatList                             As New Collection

      Public features                             As New Collection

      Public setup                                As Object

      Public mirrorAxis                           As Object

      Public setupSelected                        As Object

      Public Operations                           As Object

      Public userUnits                            As Object

      Public axisbl                               As Boolean

      Public ClickedCancel                        As Boolean

      Public OpsOnly                              As Boolean

      Public blDisable                            As Boolean

      Public blMaintainClimb                      As Boolean

      Public blKeepOriginal                       As Boolean

      Public m_bLinkToFSLibrary                   As Boolean

      Public m_bLeadinFeedrateByPercent           As Boolean

      Public bAreOperationsSelected               As Boolean

      Public m_bZFeedrateByPercent                As Boolean

      Public dConversionFactor                    As Double

      Public m_dSpindleSpeed                      As Double

      Public m_dXYFeed                            As Double

      Public m_dZFeedrate                         As Double

      Public m_dLeadinFeedrate                    As Double

      Public retVal                               As Long

      Public options                              As Long

      Public longerrors                           As Long

      Public controlType                          As Long

      Public alignment                            As Long

      Public featCount                            As Long

      Public featArr                              As Variant

      Public components                           As Variant

      Public intType                              As Integer

      Public activeTab                            As Integer

      Public sketchStr                            As String

      Public strPlaneAxis                         As String

      Public PageTitle                            As String

      Public caption                              As String

      Public tip                                  As String

      Dim listItems(50)                           As String

       

       

      Sub Show()

       

       

          pm_Page.Show2 0

       

       

      End Sub

      ' Run when a new instance of the class is created

       

       

      Public Sub Class_Initialize()

       

       

          Set swApp = Application.SldWorks

          Set swModel = swApp.activeDoc

          Set swSelMgr = swModel.SelectionManager

          Set cwapp = New CAMWORKSLib.cwapp

          Set cwDoc = cwapp.IGetActiveDoc

          Set cwSelMgr = cwDoc.IGetSelectionMgr

       

       

             

          ' Set the variables for the page

          PageTitle = "CAMWorks NC Manager"

       

       

          options = swPropertyManager_OkayButton _

              + swPropertyManager_CancelButton _

              + swPropertyManagerOptions_PushpinButton _

              '+ swPropertyManagerOptions_LockedPage _

       

       

          ' Create the PropertyManager page

          Set pm_Page = swApp.CreatePropertyManagerPage(PageTitle, options, Me, longerrors)

         

          ' Make sure that the page was created properly

          If longerrors = swPropertyManagerPage_Okay Then

        

             

             

              'Add selected entities group

             

              Set pm_GroupEntities = pm_Page.AddGroupBox(78, "Selected Entities", 12)

              Set pm_OperList = pm_GroupEntities.AddControl2(79, swControlType_Listbox, "", 1, 3, "Select Operation in the list")

              pm_OperList.Style = swPropMgrPageListBoxStyle_MultipleItemSelect

             

              ' Add tabs

              Set pm_ToolTab = pm_Page.AddTab(1, "Tools", "", 0)

              Set pm_FSTab = pm_Page.AddTab(2, "F/S", "", 0)

              Set pm_ContourTab = pm_Page.AddTab(3, "Contour", "", 0)

              Set pm_DrillTab = pm_Page.AddTab(4, "Drilling", "", 0)

              Set pm_NCTab = pm_Page.AddTab(5, "NC", "", 0)

              Set pm_MirrorTab = pm_Page.AddTab(6, "Mirror", "", 0)

              Set pm_LeadinTab = pm_Page.AddTab(7, "Leadin", "", 0)

             

              pm_MirrorTab.Activate

              activeTab = 10

             

              ' Add group boxes to tabs

              Set pm_GroupTool = pm_ToolTab.AddGroupBox(8, "ToolCrib", 12)

              Set pm_GroupFS = pm_FSTab.AddGroupBox(9, "Feed/Speed Parameters", 12)

              Set pm_GroupContourSide = pm_ContourTab.AddGroupBox(10, "Side Parameters", 12)

              Set pm_GroupContourDepth = pm_ContourTab.AddGroupBox(11, "Depth Parameters", 12)

              Set pm_GroupContourChamfer = pm_ContourTab.AddGroupBox(12, "Chamfer Machining", 5)

              Set pm_GroupContourMethod = pm_ContourTab.AddGroupBox(13, "Cut Method", 12)

              Set pm_GroupDrill = pm_DrillTab.AddGroupBox(14, "Drill Parameters", 12)

              Set pm_GroupNC_Rapid = pm_NCTab.AddGroupBox(93, "Rapid Plane", 12)

              Set pm_GroupNC_Clear = pm_NCTab.AddGroupBox(94, "Clearance Plane", 12)

              Set pm_GroupNC_Feed = pm_NCTab.AddGroupBox(95, "Feed Plane", 12)

              Set pm_GroupNC_Retract = pm_NCTab.AddGroupBox(96, "Retract Between Features", 12)

              Set pm_GroupNC_CNC_Comp = pm_NCTab.AddGroupBox(97, "CNC Compensation", 12)

              Set pm_GroupNC_TP_Comp = pm_NCTab.AddGroupBox(98, "Toolpath Compensation", 12)

              Set pm_GroupMirror = pm_MirrorTab.AddGroupBox(16, "Mirror Parameters", 12)

              Set pm_GroupLeadin = pm_LeadinTab.AddGroupBox(17, "Leadin Parameters", 12)

       

       

      'Tools

       

       

              ' Add a toolcrib list box

              Set pm_ToolcribList = pm_GroupTool.AddControl2(18, swControlType_Listbox, "", 1, 3, tip)

              pm_ToolcribList.Style = swPropMgrPageListBoxStyle_MultipleItemSelect

                     

              ' Add a tool number label & a number box

              Set pm_LabelTool = pm_GroupTool.AddControl2(19, swControlType_Label, "Station Number:", 1, 3, "")

              Set pm_NumberTool = pm_GroupTool.AddControl2(20, swControlType_Numberbox, "", 1, 3, "Enter Station Number")

              pm_NumberTool.SetRange2 swNumberBox_UnitlessInteger, -100, 100, True, 1, 1, 1

         

              ' Add a machine toolList label & a list box

              Set pm_LabelMachineList = pm_GroupTool.AddControl2(21, swControlType_Label, "Machine Tool List", 1, 3, "")

              Set pm_MachineList = pm_GroupTool.AddControl2(22, swControlType_Listbox, "", 1, 3, "")

              pm_MachineList.Style = 2

       

       

      'FS

       

       

              'Add F&S method combobox

              Set pm_LabelFSmethod = pm_GroupFS.AddControl2(23, swControlType_Label, "Defined by:", 1, 3, "")

              Set pm_ComboFSmethod = pm_GroupFS.AddControl2(24, swControlType_Combobox, "", 2, 3, "Select F&S Method")

              pm_ComboFSmethod.AddItems ("Operation")

              pm_ComboFSmethod.AddItems ("Library")

              pm_ComboFSmethod.AddItems ("Tool")

              pm_LabelFSmethod.Top = 10

              pm_ComboFSmethod.Top = 10

              pm_LabelFSmethod.Width = 15

              pm_LabelFSmethod.Style = 4

             

              'Add RPM Label & number box

              Set pm_LabelRPM = pm_GroupFS.AddControl2(25, swControlType_Label, "Spindle Speed (RPM):", 1, 3, "")

              Set pm_NumberRPM = pm_GroupFS.AddControl2(26, swControlType_Numberbox, "", 2, 3, "Enter Spindle Speed")

              pm_NumberRPM.SetRange2 swNumberBox_UnitlessInteger, 0, 12000, True, 1000, 1000, 1000

              pm_LabelRPM.Top = 20

              pm_NumberRPM.Top = 20

              pm_LabelRPM.Width = 15

              pm_LabelRPM.Style = 4

              'pm_NumberRPM.Style = 8

              'pm_LabelRPM.Height = 25

              'pm_LabelRPM.Underline(0, 50) = True

              'pm_LabelRPM.LineOffset(0, 50) = 6

              'pm_LabelRPM.Bold(0, 50) = True

       

       

              'Add XY Feedrate Label & number box

              Set pm_LabelFeed = pm_GroupFS.AddControl2(27, swControlType_Label, "XY Feedrate (inch/min):", 1, 3, "")

              Set pm_NumberFeed = pm_GroupFS.AddControl2(28, swControlType_Numberbox, "", 2, 3, "Enter XY Feedrate")

              pm_NumberFeed.SetRange2 swNumberBox_UnitlessDouble, 0, 1000, True, 5, 5, 5

              pm_LabelFeed.Top = 30

              pm_NumberFeed.Top = 30

              pm_LabelFeed.Width = 15

              pm_LabelFeed.Style = 4

       

       

              'Add Z Feedrate Label & number box

              Set pm_LabelZFeed = pm_GroupFS.AddControl2(29, swControlType_Label, "Z Feedrate:", 1, 3, "")

              Set pm_NumberZFeed = pm_GroupFS.AddControl2(30, swControlType_Numberbox, "", 2, 3, "Enter Z Feedrate")

              pm_NumberZFeed.SetRange2 swNumberBox_Percent, 0, 100, True, 10, 10, 10

              pm_LabelZFeed.Top = 40

              pm_NumberZFeed.Top = 40

              pm_LabelZFeed.Width = 15

              pm_LabelZFeed.Style = 4

       

       

              'Add Leadin Feedrate Label & number box

              Set pm_LabelLeadFeed = pm_GroupFS.AddControl2(31, swControlType_Label, "Leadin Feedrate:", 1, 3, "")

              Set pm_NumberLeadFeed = pm_GroupFS.AddControl2(32, swControlType_Numberbox, "", 2, 3, "Enter Leadin Feedrate")

              pm_NumberLeadFeed.SetRange2 swNumberBox_Percent, 0, 100, True, 10, 10, 10

              pm_LabelLeadFeed.Top = 50

              pm_NumberLeadFeed.Top = 50

              pm_LabelLeadFeed.Width = 15

              pm_LabelLeadFeed.Style = 4

             

              'Add Final Feedrate Label & number box

              Set pm_LabelFinalFeed = pm_GroupFS.AddControl2(33, swControlType_Label, "Finish Pass Feedrate:", 1, 3, "")

              Set pm_NumberFinalFeed = pm_GroupFS.AddControl2(34, swControlType_Numberbox, "", 2, 3, "Enter Final Feedrate")

              pm_NumberFinalFeed.SetRange2 swNumberBox_Percent, 0, 100, True, 10, 10, 10

              pm_LabelFinalFeed.Top = 60

              pm_NumberFinalFeed.Top = 60

              pm_LabelFinalFeed.Width = 15

              pm_LabelFinalFeed.Style = 4

             

      'Side Contour

       

       

              'Add Side Allowance Label & number box

              Set pm_LabelSideAllow = pm_GroupContourSide.AddControl2(35, swControlType_Label, "Allowance:", 1, 7, "")

              Set pm_NumberSideAllow = pm_GroupContourSide.AddControl2(36, swControlType_Numberbox, "", 2, 7, "Enter Side Allowance")

              pm_NumberSideAllow.SetRange2 swNumberBox_Length, -1000, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelSideAllow.Top = 10

              pm_NumberSideAllow.Top = 10

              pm_LabelSideAllow.Width = 15

              pm_LabelSideAllow.Style = 4

             

              'Add Side cut amount Label & number box

              Set pm_LabelSideCutAmt = pm_GroupContourSide.AddControl2(37, swControlType_Label, "Cut Amount:", 1, 7, "")

              Set pm_NumberSideCutAmt = pm_GroupContourSide.AddControl2(38, swControlType_Numberbox, "", 2, 7, "Enter Side Cut Amount")

              pm_NumberSideCutAmt.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelSideCutAmt.Top = 20

              pm_NumberSideCutAmt.Top = 20

              pm_LabelSideCutAmt.Width = 15

              pm_LabelSideCutAmt.Style = 4

             

              'Add Side previous allowance Label & number box

              Set pm_LabelSidePrevAllow = pm_GroupContourSide.AddControl2(39, swControlType_Label, "Previous Allowance:", 1, 7, "")

              Set pm_NumberSidePrevAllow = pm_GroupContourSide.AddControl2(40, swControlType_Numberbox, "", 2, 7, "Enter Previous Allowance")

              pm_NumberSidePrevAllow.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelSidePrevAllow.Top = 30

              pm_NumberSidePrevAllow.Top = 30

              pm_LabelSidePrevAllow.Width = 15

              pm_LabelSidePrevAllow.Style = 4

             

              'Add ZigZag checkbox

              Set pm_LabelSideZigZag = pm_GroupContourSide.AddControl2(90, swControlType_Label, "Zig Zag:", 1, 7, "")

              Set pm_CheckboxSideZigZag = pm_GroupContourSide.AddControl2(41, swControlType_Checkbox, " ", 2, 7, "Both Cutting Direction")

              pm_CheckboxSideZigZag.Checked = False

              pm_LabelSideZigZag.Top = 40

              pm_CheckboxSideZigZag.Top = 40

              pm_LabelSideZigZag.Width = 15

              pm_LabelSideZigZag.Style = 4

             

              'Add Side final cut amount Label & number box

              Set pm_LabelSideFinCutAmt = pm_GroupContourSide.AddControl2(42, swControlType_Label, "Final Cut Amount:", 1, 3, "")

              Set pm_NumberSideFinCutAmt = pm_GroupContourSide.AddControl2(43, swControlType_Numberbox, "", 2, 3, "Enter Final Cut Amount")

              pm_NumberSideFinCutAmt.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelSideFinCutAmt.Top = 50

              pm_NumberSideFinCutAmt.Top = 50

              pm_LabelSideFinCutAmt.Width = 15

              pm_LabelSideFinCutAmt.Style = 4

       

       

              'Add Side spring passes & number box

              Set pm_LabelSideSpringPass = pm_GroupContourSide.AddControl2(44, swControlType_Label, "Spring Passes:", 1, 7, "")

              Set pm_NumberSideSpringPass = pm_GroupContourSide.AddControl2(45, swControlType_Numberbox, "", 2, 7, "Enter Spring Passes")

              pm_NumberSideSpringPass.SetRange2 swNumberBox_UnitlessInteger, 0, 10, True, 1, 1, 1

              pm_LabelSideSpringPass.Top = 60

              pm_NumberSideSpringPass.Top = 60

              pm_LabelSideSpringPass.Width = 15

              pm_LabelSideSpringPass.Style = 4

       

       

              'Add Single cut checkbox

              Set pm_LabelSideSingleCut = pm_GroupContourSide.AddControl2(91, swControlType_Label, "Single Cut Depth:", 1, 7, "")

              Set pm_CheckboxSideSingleCut = pm_GroupContourSide.AddControl2(46, swControlType_Checkbox, " ", 2, 7, "Both Cutting Direction")

              pm_CheckboxSideSingleCut.Checked = True

              pm_LabelSideSingleCut.Top = 70

              pm_CheckboxSideSingleCut.Top = 70

              pm_LabelSideSingleCut.Width = 15

              pm_LabelSideSingleCut.Style = 4

       

       

              'Add Ignore Air Seg checkbox

              Set pm_LabelSideIgnoreAirSeg = pm_GroupContourSide.AddControl2(92, swControlType_Label, "Ignore Air Segment:", 1, 3, "")

              Set pm_CheckboxSideIgnoreAirSeg = pm_GroupContourSide.AddControl2(47, swControlType_Checkbox, " ", 2, 3, "Ignore Air Segments On Open Geometries")

              pm_CheckboxSideIgnoreAirSeg.Checked = True

              pm_LabelSideIgnoreAirSeg.Top = 80

              pm_CheckboxSideIgnoreAirSeg.Top = 80

              pm_LabelSideIgnoreAirSeg.Width = 15

              pm_LabelSideIgnoreAirSeg.Style = 4

       

       

      'Depth contour

             

              'Add Depth Ramp combobox

              Set pm_LabelDepthRamp = pm_GroupContourDepth.AddControl2(57, swControlType_Label, "Ramp:", 1, 7, "")

              Set pm_ComboDepthRamp = pm_GroupContourDepth.AddControl2(58, swControlType_Combobox, "", 2, 7, "Select Ramp Method")

              pm_ComboDepthRamp.AddItems ("Off")

              pm_ComboDepthRamp.AddItems ("Angle")

              pm_ComboDepthRamp.AddItems ("Cut Amount")

              pm_ComboDepthRamp.AddItems ("Leadin Only")

              pm_LabelDepthRamp.Top = 10

              pm_ComboDepthRamp.Top = 10

              pm_LabelDepthRamp.Width = 15

              pm_LabelDepthRamp.Style = 4

             

              'Add Depth Ramp angle Label & number box

              Set pm_LabelDepthRampAngle = pm_GroupContourDepth.AddControl2(80, swControlType_Label, "Ramp Angle:", 1, 7, "")

              Set pm_NumberDepthRampAngle = pm_GroupContourDepth.AddControl2(81, swControlType_Numberbox, "", 2, 7, "Enter Ramp Angle")

              pm_NumberDepthRampAngle.SetRange2 swNumberBox_Angle, 0, 1000, True, 5, 5, 5

              pm_LabelDepthRampAngle.Top = 20

              pm_NumberDepthRampAngle.Top = 20

              pm_LabelDepthRampAngle.Width = 15

              pm_LabelDepthRampAngle.Style = 4

             

              'Add Depth method combobox

              Set pm_LabelDepthMethod = pm_GroupContourDepth.AddControl2(55, swControlType_Label, "Depth Method:", 1, 7, "")

              Set pm_ComboDepthMethod = pm_GroupContourDepth.AddControl2(56, swControlType_Combobox, "", 2, 7, "Select Depth Method")

              pm_ComboDepthMethod.AddItems ("Equal")

              pm_ComboDepthMethod.AddItems ("Exact")

              pm_ComboDepthMethod.AddItems ("Distance Along")

              pm_LabelDepthMethod.Top = 30

              pm_ComboDepthMethod.Top = 30

              pm_LabelDepthMethod.Width = 15

              pm_LabelDepthMethod.Style = 4

             

              'Add Depth Allow Label & number box

              Set pm_LabelDepthAllow = pm_GroupContourDepth.AddControl2(59, swControlType_Label, "Allowance:", 1, 7, "")

              Set pm_NumberDepthAllow = pm_GroupContourDepth.AddControl2(60, swControlType_Numberbox, "", 2, 7, "Enter Depth Allowance")

              pm_NumberDepthAllow.SetRange2 swNumberBox_Length, -1000, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelDepthAllow.Top = 40

              pm_NumberDepthAllow.Top = 40

              pm_LabelDepthAllow.Width = 15

              pm_LabelDepthAllow.Style = 4

             

              'Add 1st cut amt Label & number box

              Set pm_LabelDepthFirstCut = pm_GroupContourDepth.AddControl2(61, swControlType_Label, "First Cut Amount:", 1, 7, "")

              Set pm_NumberDepthFirstCut = pm_GroupContourDepth.AddControl2(62, swControlType_Numberbox, "", 2, 7, "Enter First Cut Amount")

              pm_NumberDepthFirstCut.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelDepthFirstCut.Top = 50

              pm_NumberDepthFirstCut.Top = 50

              pm_LabelDepthFirstCut.Width = 15

              pm_LabelDepthFirstCut.Style = 4

             

              'Add max. cut amt Label & number box

              Set pm_LabelDepthMaxCut = pm_GroupContourDepth.AddControl2(63, swControlType_Label, "Max. Cut Amount:", 1, 7, "")

              Set pm_NumberDepthMaxCut = pm_GroupContourDepth.AddControl2(64, swControlType_Numberbox, "", 2, 7, "Enter Max. Cut Amount")

              pm_NumberDepthMaxCut.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelDepthMaxCut.Top = 60

              pm_NumberDepthMaxCut.Top = 60

              pm_LabelDepthMaxCut.Width = 15

              pm_LabelDepthMaxCut.Style = 4

             

              'Add Final cut amt & number box

              Set pm_LabelDepthFinCut = pm_GroupContourDepth.AddControl2(65, swControlType_Label, "Final Cut Amount:", 1, 7, "")

              Set pm_NumberDepthFinCut = pm_GroupContourDepth.AddControl2(66, swControlType_Numberbox, "", 2, 7, "Enter Final Cut Amount")

              pm_NumberDepthFinCut.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelDepthFinCut.Top = 70

              pm_NumberDepthFinCut.Top = 70

              pm_LabelDepthFinCut.Width = 15

              pm_LabelDepthFinCut.Style = 4

       

       

      'Chamfer contour

       

       

              'Add Chamfer Angle Label & number box

              Set pm_LabelChamferAngle = pm_GroupContourChamfer.AddControl2(49, swControlType_Label, "Angle:", 1, 7, "")

              Set pm_NumberChamferAngle = pm_GroupContourChamfer.AddControl2(50, swControlType_Numberbox, "", 2, 7, "")

              pm_NumberChamferAngle.SetRange swNumberBox_Angle, 0, 90, 0.1, True

              pm_NumberChamferAngle.Enabled = False

              pm_NumberChamferAngle.Style = 8

              pm_LabelChamferAngle.Top = 10

              pm_NumberChamferAngle.Top = 10

              pm_LabelChamferAngle.Width = 15

              pm_LabelChamferAngle.Style = 4

             

              'Add Chamfer Length Label & number box

              Set pm_LabelChamferLength = pm_GroupContourChamfer.AddControl2(51, swControlType_Label, "Length:", 1, 7, "")

              Set pm_NumberChamferLength = pm_GroupContourChamfer.AddControl2(52, swControlType_Numberbox, "", 2, 7, "Enter Chamfer Length")

              pm_NumberChamferLength.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelChamferLength.Top = 50

              pm_NumberChamferLength.Top = 50

              pm_LabelChamferLength.Width = 15

              pm_LabelChamferLength.Style = 4

             

              'Add Chamfer Clearance Label & number box

              Set pm_LabelChamferClear = pm_GroupContourChamfer.AddControl2(53, swControlType_Label, "Clearance:", 1, 7, "")

              Set pm_NumberChamferClear = pm_GroupContourChamfer.AddControl2(54, swControlType_Numberbox, "", 2, 7, "Enter Chamfer Clearance")

              pm_NumberChamferClear.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelChamferClear.Top = 70

              pm_NumberChamferClear.Top = 70

              pm_LabelChamferClear.Width = 15

              pm_LabelChamferClear.Style = 4

             

              'Add Chamfer Feature Edge method combobox

              Set pm_LabelChamferFeatEdge = pm_GroupContourChamfer.AddControl2(55, swControlType_Label, "Method:", 1, 7, "")

              Set pm_ComboChamferFeatEdge = pm_GroupContourChamfer.AddControl2(56, swControlType_Combobox, "", 2, 7, "Select Depth Method")

              pm_ComboChamferFeatEdge.AddItems ("Apex")

              pm_ComboChamferFeatEdge.AddItems ("Outer Edge")

              pm_LabelChamferFeatEdge.Top = 90

              pm_ComboChamferFeatEdge.Top = 90

              pm_LabelChamferFeatEdge.Width = 15

              pm_LabelChamferFeatEdge.Style = 4

             

              'Add Cut Method radio buttons

              Set pm_RadioClimb = pm_GroupContourMethod.AddControl2(67, swControlType_Option, "Climb", 1, 7, "Select Cutting Direction")

              Set pm_RadioConventional = pm_GroupContourMethod.AddControl2(68, swControlType_Option, "Conventional", 2, 7, "SelectCutting Direction")

              pm_RadioClimb.Top = 10

              pm_RadioClimb.Width = 15

              pm_RadioConventional.Top = 10

              pm_RadioClimb.Checked = True

              pm_RadioConventional.Checked = False

      'Drill

              'Add Drill cycle type combobox

              Set pm_LabelDrillCycle = pm_GroupDrill.AddControl2(82, swControlType_Label, "Type:", 1, 3, "")

              Set pm_ComboDrillCycle = pm_GroupDrill.AddControl2(83, swControlType_Combobox, "", 2, 3, "Select Drill Cycle")

              pm_ComboDrillCycle.AddItems ("Drill")

              pm_ComboDrillCycle.AddItems ("Pecking")

              pm_ComboDrillCycle.AddItems ("High Speed Pecking")

              pm_LabelDrillCycle.Top = 10

              pm_ComboDrillCycle.Top = 10

              pm_LabelDrillCycle.Width = 15

              pm_LabelDrillCycle.Style = 4

             

              'Add First Peck Label & number box

              Set pm_LabelDrillFirstPeck = pm_GroupDrill.AddControl2(84, swControlType_Label, "First Peck:", 1, 3, "")

              Set pm_NumberDrillFirstPeck = pm_GroupDrill.AddControl2(85, swControlType_Numberbox, "", 2, 3, "Enter First Peck Amount")

              pm_NumberDrillFirstPeck.SetRange2 swNumberBox_Length, 0, 1000, True, 0.000508, 0.000508, 0.000508

              pm_LabelDrillFirstPeck.Top = 20

              pm_NumberDrillFirstPeck.Top = 20

              pm_LabelDrillFirstPeck.Width = 15

              pm_LabelDrillFirstPeck.Style = 4

       

       

              'Add Sub Peck Label & number box

              Set pm_LabelDrillSubPeck = pm_GroupDrill.AddControl2(86, swControlType_Label, "Sub Peck:", 1, 3, "")

              Set pm_NumberDrillSubPeck = pm_GroupDrill.AddControl2(87, swControlType_Numberbox, "", 2, 3, "Enter Sub Peck Amount")

              pm_NumberDrillSubPeck.SetRange2 swNumberBox_Length, 0, 1000, True, 0.000508, 0.000508, 0.000508

              pm_LabelDrillSubPeck.Top = 30

              pm_NumberDrillSubPeck.Top = 30

              pm_LabelDrillSubPeck.Width = 15

              pm_LabelDrillSubPeck.Style = 4

       

       

              'Add Dwell Label & number box

              Set pm_LabelDrillDwell = pm_GroupDrill.AddControl2(88, swControlType_Label, "Dwell:", 1, 3, "")

              Set pm_NumberDrillDwell = pm_GroupDrill.AddControl2(89, swControlType_Numberbox, "", 2, 3, "Enter Dwell")

              pm_NumberDrillDwell.SetRange2 swNumberBox_Time, 0, 10, True, 0.2, 0.2, 0.2

              pm_LabelDrillDwell.Top = 40

              pm_NumberDrillDwell.Top = 40

              pm_LabelDrillDwell.Width = 15

              pm_LabelDrillDwell.Style = 4

             

      'NC Rapid

       

       

              'Add Rapid parameters combobox

              Set pm_ComboNC_Rapid = pm_GroupNC_Rapid.AddControl2(99, swControlType_Combobox, "", 1, 7, "Select Rapid Method")

              pm_ComboNC_Rapid.AddItems ("Top Of Feature")

              pm_ComboNC_Rapid.AddItems ("Setup Origin")

              pm_ComboNC_Rapid.AddItems ("Clearance Plane")

              pm_ComboNC_Rapid.AddItems ("Top Of Stock")

              pm_ComboNC_Rapid.Top = 10

       

       

              'Add rapid distance Label & number box

              Set pm_LabelNCrapidDist = pm_GroupNC_Rapid.AddControl2(100, swControlType_Label, "Distance:", 1, 7, "")

              Set pm_NumberNCrapidDist = pm_GroupNC_Rapid.AddControl2(101, swControlType_Numberbox, "", 2, 7, "Enter Rapid Distance")

              pm_NumberNCrapidDist.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelNCrapidDist.Top = 20

              pm_NumberNCrapidDist.Top = 20

              pm_LabelNCrapidDist.Width = 15

              pm_LabelNCrapidDist.Style = 4

             

              'Add use setup def checkbox

              Set pm_CheckboxNCrapidUseSetupDef = pm_GroupNC_Rapid.AddControl2(102, swControlType_Checkbox, "Use Setup Definition", 1, 3, "")

       

       

      'NC Clear

       

       

              'Add Rapid parameters combobox

              Set pm_ComboNC_Clear = pm_GroupNC_Clear.AddControl2(103, swControlType_Combobox, "", 1, 7, "Select Clearance Method")

              pm_ComboNC_Clear.AddItems ("Top Of Feature")

              pm_ComboNC_Clear.AddItems ("Setup Origin")

              pm_ComboNC_Clear.AddItems ("Previous Machined Depth")

              pm_ComboNC_Clear.AddItems ("Top Of Stock")

              pm_ComboNC_Clear.AddItems ("Skim Plane")

              pm_ComboNC_Clear.Top = 10

       

       

              'Add rapid distance Label & number box

              Set pm_LabelNCclearDist = pm_GroupNC_Clear.AddControl2(104, swControlType_Label, "Distance:", 1, 7, "")

              Set pm_NumberNCclearDist = pm_GroupNC_Clear.AddControl2(105, swControlType_Numberbox, "", 2, 7, "Enter Feed Distance")

              pm_NumberNCclearDist.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelNCclearDist.Top = 20

              pm_NumberNCclearDist.Top = 20

              pm_LabelNCclearDist.Width = 15

              pm_LabelNCclearDist.Style = 4

       

       

              'Add use setup def checkbox

              Set pm_CheckboxNCclearUseSetupDef = pm_GroupNC_Clear.AddControl2(106, swControlType_Checkbox, "Use Setup Definition", 1, 3, "")

       

       

      'NC Feed

       

       

              'Add Rapid parameters combobox

              Set pm_ComboNC_Feed = pm_GroupNC_Feed.AddControl2(107, swControlType_Combobox, "", 1, 7, "Select Feed Method")

              pm_ComboNC_Feed.AddItems ("Previous Machined Depth")

              pm_ComboNC_Feed.AddItems ("Current Machined Depth")

              pm_ComboNC_Feed.Top = 10

       

       

              'Add rapid distance Label & number box

              Set pm_LabelNCfeedDist = pm_GroupNC_Feed.AddControl2(108, swControlType_Label, "Distance:", 1, 7, "")

              Set pm_NumberNCfeedDist = pm_GroupNC_Feed.AddControl2(109, swControlType_Numberbox, "", 2, 7, "Enter Feed Distance")

              pm_NumberNCfeedDist.SetRange2 swNumberBox_Length, 0, 1000, True, 0.0015875, 0.0015875, 0.0015875

              pm_LabelNCfeedDist.Top = 20

              pm_NumberNCfeedDist.Top = 20

              pm_LabelNCfeedDist.Width = 15

              pm_LabelNCfeedDist.Style = 4

       

       

      'NC Retract

             

              'Add use setup def checkbox

              'Set pm_CheckboxNCfeedUseSetupDef = pm_GroupNC_Feed.AddControl2(102, swControlType_Checkbox, "Use Setup Definition", 1, 3, "")

       

       

      'Mirror

       

       

              ' Add a label & selection box

              Set pm_LabelAxis = pm_GroupMirror.AddControl2(69, swControlType_Label, "Axis:", 1, 3, "")

              tip = "Select an edge, face, sketch segment, plane, or an axis"

              Set pm_Selection = pm_GroupMirror.AddControl2(70, swControlType_Selectionbox, "", 1, 3, tip)

        

              Dim filters(4) As Long

              filters(0) = swSelEDGES

              filters(1) = swSelFACES

              filters(2) = swSelEXTSKETCHSEGS

              filters(3) = swSelDATUMPLANES

              filters(4) = swSelDATUMAXES

       

       

              pm_Selection.AllowMultipleSelectOfSameEntity = False

              pm_Selection.SingleEntityOnly = True

              pm_Selection.Height = 50

              pm_Selection.SetSelectionFilters filters

       

       

              'Add mirror options checkboxes

       

       

              Set pm_CheckboxMaintainClimb = pm_GroupMirror.AddControl2(71, swControlType_Checkbox, "Maintain Climb or Conventional", 1, 3, "Cutting Direction")

              Set pm_CheckboxKeepOriginal = pm_GroupMirror.AddControl2(72, swControlType_Checkbox, "Keep Original", 1, 3, "Keep Original")

              pm_CheckboxMaintainClimb.Checked = True

              pm_CheckboxKeepOriginal.Checked = False

             

              ' Add mirror x offset label & number box

              Set pm_LabelOffsetX = pm_GroupMirror.AddControl2(73, swControlType_Label, "X Offset", 1, 3, "")

              Set pm_NumberOffsetX = pm_GroupMirror.AddControl2(74, swControlType_Numberbox, "X Offset:", 1, 3, "X Offset")

              pm_NumberOffsetX.SetRange2 swNumberBox_Length, -1000, 1000, True, 0.0015875, 0.0015875, 0.0015875

             

              ' Add mirror y offset label & number box

              Set pm_LabelOffsetY = pm_GroupMirror.AddControl2(75, swControlType_Label, "Y Offset", 1, 3, "")

              Set pm_NumberOffsetY = pm_GroupMirror.AddControl2(76, swControlType_Numberbox, "Y Offset:", 1, 3, "Y Offset")

              pm_NumberOffsetY.SetRange2 swNumberBox_Length, -1000, 1000, True, 0.0015875, 0.0015875, 0.0015875

       

       

              ' Add cancel mirror button

              Set pm_ButtonCancelMirror = pm_GroupMirror.AddControl2(77, swControlType_Button, "Cancel Mirror", 1, 3, "Click")

       

       

              ' Check selected items

              If cwDoc.GetDocType = CW_DOCUMENT_ASSEMBLY Then

                  Set setupSelected = cwSelMgr.GetSelectionsOfType(18, 1)

              ElseIf cwDoc.GetDocType = CW_DOCUMENT_PART Then

                  Set setupSelected = cwSelMgr.GetSelectionsOfType(7, 1)

              End If

             

              If setupSelected Is Nothing Then

                  Set Operations = cwSelMgr.GetSelectionsOfType(3, 1)

                  If Operations Is Nothing Then

      '                MsgBox "Please select a setup or operations!"

      '                pm_Page.Close (True)

      '                Set pm = Nothing

      '                Exit Sub

                  Else

                      If Not pm_OperList Is Nothing Then

                          For k = 0 To Operations.Count - 1

                              Set operation = Operations.Item(k)

                              listItems(k) = operation.GetName

                          Next k

                          pm_OperList.Height = Operations.Count * 11.5

                          pm_OperList.AddItems (listItems)

                      End If

                  End If

                  OpsOnly = True

              Else

                  If Not pm_OperList Is Nothing Then

                      For j = 0 To setupSelected.Count - 1

                          Set setup = setupSelected.Item(j)

                          listItems(j) = setup.GetName

                      Next j

                      pm_OperList.Height = setupSelected.Count * 11.5

                      pm_OperList.AddItems (listItems)

                  End If

              End If

       

       

              'Get machine

              If cwDoc.GetDocType = CW_DOCUMENT_ASSEMBLY Then

                  Set machines = cwDoc.IGetEnumMachines

                  Set cwMach = machines.Item(0)

              ElseIf cwDoc.GetDocType = CW_DOCUMENT_PART Then

                  Set cwMach = cwDoc.IGetMachine

              End If

             

              'Get toolcrib

              Set cwTlCrib = cwMach.IGetToolcrib

              Set cwOpSetups = cwMach.IGetEnumOpSetups

              Set cwToolList = cwTlCrib.GetAllTools()

              For i = 0 To cwToolList.Count - 1

                  Set cwTl = cwToolList.Item(i)

                  pm_ToolcribList.AddItems "T" & cwTl.StnNo & "=" & cwTl.Comment

              Next i

              pm_ToolcribList.Height = cwToolList.Count * 8.55

             

              'Machine Current Tooling

              Set objFSO = CreateObject("Scripting.FileSystemObject")

              Set myFile = objFSO.OpenTextFile("D:\Tooling.txt", 1, True)

              i = 0

              Do While Not myFile.AtEndofStream

                  pm_MachineList.AddItems myFile.ReadLine

                  i = i + 1

              Loop

              pm_MachineList.Height = i * 8.5

              myFile.Close

             

              Set helperobject = New UtilityClass             'utility functions

              bAreOperationsSelected = True

             

              'Check if any doc is open

              Dim modelDoc As Object

              Set modelDoc = swApp.activeDoc

              If modelDoc Is Nothing Then

                  GoTo Exit_error

              End If

             

              Set userUnits = modelDoc.GetUserUnit(swLengthUnit)

              If userUnits Is Nothing Then

                  GoTo Exit_error

              End If

              dConversionFactor = userUnits.GetConversionFactor

             

              nNumSelectedOperations = 0

             

              'Get the list of all selected operation

             

              Call helperobject.GetSelectedCWObjects(selectedOperations, nNumSelectedOperations, MW_SELNSET_TYPE_MILL_OPERATIONS, OPPLAN_BROWSER)

              If nNumSelectedOperations = 0 Then

                  bAreOperationsSelected = False

                  'Set pm_FSTab = Nothing

                  'Set pm_MirrorTab = Nothing

              End If

         

              If bAreOperationsSelected = True Then

                  Call GetParametersFromOperations(0)

                  pm_OperList.SetSelectedItem 0, True

              End If

              Exit Sub

         

      Exit_error:

       

       

             strMsg = "No document open or document units error!"

             MsgBox strMsg, vbOKOnly, caption

         

          Else

       

       

              MsgBox "An error occurred while attempting to create the PropertyManager Page", vbCritical

       

       

          End If

            

      End Sub

      'To Get Parameters From Operations

       

       

      Public Function GetParametersFromOperations(SelectedOp As Integer)

         

          Set millOperation = selectedOperations(SelectedOp)

          Set cwNCParams = millOperation.IGetNCParam

         

          m_bLinkToFSLibrary = cwNCParams.GetLinkSFStatus

          m_dSpindleSpeed = cwNCParams.GetSpndlSpeed

          m_dXYFeed = cwNCParams.XYFeed

          Call cwNCParams.GetZFeedrate2(m_dZFeedrate, m_bZFeedrateByPercent)

          Call cwNCParams.GetLeadinFeedrate(m_dLeadinFeedrate, m_bLeadinFeedrateByPercent)

          If m_bZFeedrateByPercent = False Then

             m_dZFeedrate = 100 * (m_dZFeedrate / m_dXYFeed)

          End If

          If m_bLeadinFeedrateByPercent = False Then

             m_dLeadinFeedrate = 100 * (m_dLeadinFeedrate / m_dXYFeed)

          End If

         

          Call SetControlsWithActiveValues

         

      End Function

       

       

      'Apply the Parameters To Operations

       

       

      Public Sub ApplyParametersToOperations()

         

          m_dSpindleSpeed = Val(txtSpindleSpeed.Text)

          m_dXYFeed = Val(txtXYFeedRate.Text)

          m_dLeadinFeedrate = Val(txtLeadinFeedrate.Text)

          m_dZFeedrate = Val(txtZFeedrate.Text)

         

          For i = 0 To nNumSelectedOperations - 1

                     

              Set millOperation = selectedOperations(i)

              Set cwNCParams = millOperation.IGetNCParam

             

              If chkModifySpindleSpeed.Value = True Then

                  cwNCParams.SetSpndlSpeed (m_dSpindleSpeed)

              End If

             

              If chkModifyXYFeedrate.Value = True Then

                  cwNCParams.XYFeed = m_dXYFeed

              End If

             

              If chkModifyZFeedRate.Value = True Then

                  m_bZFeedrateByPercent = True

                  Call cwNCParams.SetZFeedrate(m_dZFeedrate, m_bZFeedrateByPercent)

              End If

             

              If chkModifyLeadinFeedRate.Value = True Then

                  m_bLeadinFeedrateByPercent = True

                  Call cwNCParams.SetLeadinFeedrate(m_dLeadinFeedrate, m_bLeadinFeedrateByPercent)

              End If

         

              If chkAssignTool.Value = True Then

                  Set cwTl = cwToolList(ToolListBox.ListIndex)

                  Call millOperation.SetTool(cwTl)

              End If

             

              If IsNumeric(tlStation.Value) Then

                  cwTl.StnNo = tlStation.Value

                  cwDoc.UpdateCAMWorksTreeViews

              End If

             

              millOperation.GenerateToolpath

          Next i

      End Sub

       

       

      'Set the UI Controls With Active Values

       

       

      Public Sub SetControlsWithActiveValues()

       

       

          pm_NumberRPM.Value = Round(m_dSpindleSpeed, 0)

          pm_NumberFeed.Value = Round(m_dXYFeed, 2)

       

       

          pm_NumberZFeed.Value = m_dZFeedrate

       

       

          pm_NumberLeadFeed.Value = m_dLeadinFeedrate

         

      End Sub

       

       

      Public Function ShowPlanes(ShowThem As Boolean)

       

       

          Dim PlaneArr As Variant

          PlaneArr = Array("Face", "Dessus", "Droite")

       

       

          For i = 0 To UBound(PlaneArr)

              Call swModel.Extension.SelectByID2(PlaneArr(i), "PLANE", 0, 0, 0, False, 0, Nothing, 0)

              If ShowThem = True Then

                  Call swModel.SetUserPreferenceToggle(swUserPreferenceToggle_e.swDisplayPlanes, True)

                  swModel.UnBlankRefGeom

              Else

                  Call swModel.SetUserPreferenceToggle(swUserPreferenceToggle_e.swDisplayPlanes, False)

                  swModel.BlankRefGeom

              End If

          Next i

       

       

          Call swModel.ClearSelection2(True)

      End Function

       

       

      Public Function Mirroring()

       

       

              If OpsOnly = True Then GoTo 0

              blMaintainClimb = pm_CheckboxMaintainClimb.State

              blKeepOriginal = pm_CheckboxKeepOriginal.State

             

              'Mirror selected operations

               For j = 0 To setupSelected.Count - 1

                  Set setup = setupSelected.Item(j)

                  Set Operations = setup.IGetEnumOperations

      0:

                  For k = 0 To Operations.Count - 1

       

       

                      Set currentop = Operations.Item(k)

                      If blDisable = True Then

                          Call currentop.DisableMirrorToolpath

                          If Left(currentop.GetName, 4) = "/|\-" Then currentop.SetName Right(currentop.GetName, (Len(currentop.GetName) - 4))

                          Call currentop.GenerateToolpath

                          GoTo 1

                      End If

       

       

                      Set mirrorAxis = swSelMgr.GetSelectedObject6(1, -1)

       

       

                      If mirrorAxis Is Nothing Then

                          MsgBox "Restart Macro And Select A Mirror Entity!", vbInformation, "Mirror Selected Setup"

                          blDisable = True

                          GoTo 3

                      End If

       

       

                      Call currentop.SetMirrorToolpath(blMaintainClimb, blKeepOriginal, mirrorAxis, True, False, pm_NumberOffsetX.Value * 39.3700787401575, pm_NumberOffsetY.Value * 39.3700787401575)

                      If Left(currentop.GetName, 4) <> "/|\-" Then currentop.SetName "/|\-" & currentop.GetName

                      Call currentop.GenerateToolpath

      1:

                  Next k

              If OpsOnly = True Then GoTo 3

      2:

              Next j

      3:

              Call ShowPlanes(False)

              If blDisable = True Then

                  pm_Page.Close (True)

              End If

       

       

              cwDoc.UpdateCAMWorksTreeViews

      4:

      End Function

       

       

      Public Sub PropertyManagerPage2Handler9_OnClose(ByVal Reason As Long)

       

       

          If Reason = swPropertyManagerPageClose_Cancel Then

       

       

              ' Cancel button clicked

              ClickedCancel = True

              If activeTab = 6 Then

                  Call ShowPlanes(False)

                  cwDoc.UpdateCAMWorksTreeViews

              End If

              pm_Page.Close (True)

       

       

          ElseIf Reason = swPropertyManagerPageClose_Okay Then

       

       

              'OK button clicked

              ClickedCancel = False

              If activeTab = 6 Then

                  Call Mirroring

              End If

         

          End If

       

       

          End

       

       

      End Sub

       

       

      Public Function PropertyManagerPage2Handler9_OnTabClicked(ByVal Id As Long) As Boolean

          activeTab = Id

          If Id = 6 Then Call ShowPlanes(True)

          If Id <> 6 Then Call ShowPlanes(False)

      End Function

       

       

      Public Sub PropertyManagerPage2Handler9_OnNumberboxChanged(ByVal Id As Long, ByVal Value As Double)

         

          If IsNumeric(pm_NumberTool.Value) And Id = 20 Then

              cwTl.StnNo = pm_NumberTool.Value

              cwDoc.UpdateCAMWorksTreeViews

              Set cwToolList = cwTlCrib.GetAllTools()

              pm_ToolcribList.Clear

              For i = 0 To cwToolList.Count - 1

                  Set cwTl = cwToolList.Item(i)

                  pm_ToolcribList.AddItems "T" & cwTl.StnNo & "=" & cwTl.Comment

              Next i

              pm_NumberTool.Value = 0

          End If

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnListboxSelectionChanged(ByVal Id As Long, ByVal Item As Long)

          If Id = 79 Then

              Call GetParametersFromOperations(pm_OperList.IGetSelectedItems(1))

          End If

         

          If Id = 18 Then

              Set cwTl = cwToolList(pm_ToolcribList.IGetSelectedItems(1))

              pm_NumberTool.Value = cwTl.StnNo

          End If

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnButtonPress(ByVal Id As Long)

         

          If Id = 77 Then

              blDisable = True

              Call Mirroring

          End If

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnGainedFocus(ByVal Id As Long)

        

         Dim varArray As Variant

       

       

         Debug.Print "Control box " & Id & " gained focus"

       

       

         varArray = pm_List.GetSelectedItems

       

       

         pm_Combo.CurrentSelection = varArray(0)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnSelectionboxListChanged(ByVal Id As Long, ByVal Count As Long)

         

          pm_Page.SetCursor (swPropertyManagerPageCursors_Advance)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_AfterClose()

       

       

          ' Destroy the class

          Set pm = Nothing

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_AfterActivation()

       

       

      End Sub

       

       

      Public Function PropertyManagerPage2Handler9_OnActiveXControlCreated(ByVal Id As Long, ByVal Status As Boolean) As Long

       

       

      End Function

       

       

      Public Sub PropertyManagerPage2Handler9_OnCheckboxCheck(ByVal Id As Long, ByVal Checked As Boolean)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnComboboxEditChanged(ByVal Id As Long, ByVal Text As String)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnComboboxSelectionChanged(ByVal Id As Long, ByVal Item As Long)

       

       

      End Sub

       

      Public Sub PropertyManagerPage2Handler9_OnGroupCheck(ByVal Id As Long, ByVal Checked As Boolean)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnGroupExpand(ByVal Id As Long, ByVal Expanded As Boolean)

       

       

      End Sub

       

       

      Public Function PropertyManagerPage2Handler9_OnHelp() As Boolean

       

       

      End Function

       

       

      Public Function PropertyManagerPage2Handler9_OnKeystroke(ByVal Wparam As Long, ByVal Message As Long, ByVal Lparam As Long, ByVal Id As Long) As Boolean

       

       

      End Function

       

       

      Public Function PropertyManagerPage2Handler9_OnNextPage() As Boolean

       

       

      End Function

       

       

      Public Sub PropertyManagerPage2Handler9_OnOptionCheck(ByVal Id As Long)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnPopupMenuItem(ByVal Id As Long)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnPopupMenuItemUpdate(ByVal Id As Long, retVal As Long)

       

       

      End Sub

       

       

      Public Function PropertyManagerPage2Handler9_OnPreview() As Boolean

       

       

      End Function

       

       

      Public Function PropertyManagerPage2Handler9_OnPreviousPage() As Boolean

       

       

      End Function

       

       

      Public Sub PropertyManagerPage2Handler9_OnRedo()

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnSelectionboxCalloutCreated(ByVal Id As Long)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnSelectionboxCalloutDestroyed(ByVal Id As Long)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnSelectionboxFocusChanged(ByVal Id As Long)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnSliderPositionChanged(ByVal Id As Long, ByVal Value As Double)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnSliderTrackingCompleted(ByVal Id As Long, ByVal Value As Double)

       

       

      End Sub

       

       

      Public Function PropertyManagerPage2Handler9_OnSubmitSelection(ByVal Id As Long, ByVal Selection As Object, ByVal SelType As Long, ItemText As String) As Boolean

       

       

          PropertyManagerPage2Handler9_OnSubmitSelection = True

       

       

      End Function

       

       

      Public Sub PropertyManagerPage2Handler9_OnTextboxChanged(ByVal Id As Long, ByVal Text As String)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnUndo()

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnWhatsNew()

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnLostFocus(ByVal Id As Long)

       

       

      End Sub

       

       

      Public Sub PropertyManagerPage2Handler9_OnListBoxRMBUp(ByVal Id As Long, ByVal posX As Long, ByVal posY As Long)

       

       

      End Sub

       

       

      Public Function PropertyManagerPage2Handler9_OnWindowFromHandleControlCreated(ByVal Id As Long, ByVal Status As Boolean) As Long

       

       

      End Function

       

      Public Sub PropertyManagerPage2Handler9_OnNumberboxTrackingCompleted(ByVal Id As Long, ByVal Value As Double)

       

       

      End Sub