5 Replies Latest reply on Mar 9, 2018 9:52 PM by Jason Corl

    Help with Macro to rebuild after running.

    Jason Corl

      I've written the following macro to replace the standard "add revision symbol" button. SW currently will not allow you to save a default layer for Revision Symbols, yes for tables, clouds, dimensions etc, but not revision symbols. So this macro sets the layer and starts the revision symbol command then resets the active layer to "per-standard". Thus this macro has to have a layer named "rev" to run (no error handling on this).

       

      We also have changed the revision symbol from triangle to box so I added the code to change the default in the document before placing the symbol.

       

      The issue I'm having is the screen will not refresh/rebuild leaving a final rev symbol artifact up near the PropertyManager where I select the check mark to complete the operation. It disappears on a Control + Q.

       

      When I added the rebuild code it simply exited out of the command before I could place symbols. Seems like I need add an event handler to detect when the check mark is selected or completed by RMB but I don't have experience doing this. I've done some reading and saw where you can use a non-modal dialog box to pause but thinking that will get clunky. Any ideas how to do it cleanly?

      [code]

      Sub RevSymbols_OnRevLayer()

       

       

      Dim swApp As SldWorks.SldWorks

      Dim swDwg As SldWorks.ModelDoc2

      Dim sLayer As Boolean

       

       

      Set swApp = Application.SldWorks

      Set swDwg = swApp.ActiveDoc

       

       

      If swDwg.GetType = swDocDRAWING Then

       

       

          swDwg.Extension.SetUserPreferenceInteger _

              swUserPreferenceIntegerValue_e.swRevisionTableSymbolShape, _

              swUserPreferenceOption_e.swDetailingNoOptionSpecified, _

              swRevisionTableSymbolShape_e.swRevisionTable_SquareSymbol

         

          sLayer = swDwg.SetCurrentLayer("REV")

         

              swDwg.Extension.RunCommand SwCommands.swCommands_RevisionSymbol, ""

             

              'Pause

         

          sLayer = swDwg.SetCurrentLayer("-Per Standard-")

         

          'bRet = swDwg.ForceRebuild3(False)

       

       

      Else

          MsgBox ("Please open a drawing to use this feature.")

         

      End If

       

       

      End Sub

      [/code]

       

       

      Thanks,