AnsweredAssumed Answered

MacroFeature - SelectByID2 problem

Question asked by Laurent Franco Sánchez on Jun 27, 2018
Latest reply on Jul 14, 2018 by Laurent Franco Sánchez

Dear all,


I've a small macro that works perfectly (the macro change the size of a sketch text). I try to put this macro in a macro feature, but the selection of the sketch doesn't work any more when it's inside a Function.

 

To be honest, I just copy past part of code I found. I'm really bad une VBA. If you have any clue for me, I take it. I'm pretty sure that the problem is somewhere at the "SelectByID2" and at the "Rebuilt", because If I manually select the Text Sketch, it works.

 

Thanks already !

 

The Working Code :

Dim App     As SldWorks.SldWorks
Dim Doc     As SldWorks.ModelDoc2
Dim SelMgr  As SelectionMgr
Dim text    As SketchText
Dim format  As TextFormat

Sub main()

Set A = Application.SldWorks

Set Doc = App.ActiveDoc
Set SelMgr = Doc.SelectionManager


Doc.Extension.SelectByID2 "Sketch7", "SKETCH", 0, 0, 0, False, 0, Nothing, 0
Doc.EditSketch
Doc.Extension.SelectByID2 "SketchText1", "SKETCHTEXT", 0, 0, 0, False, 0, Nothing, 0
Set text = SelMgr.GetSelectedObject6(1, -1)
Set format = text.GetTextFormat
format.CharHeight = Doc.Parameter("D1@Fillet3").SystemValue / 1.5
text.SetTextFormat False, format
Doc.EditRebuild3


End Sub

 

 

The not Working Code :

Dim App             As SldWorks.SldWorks
Dim Doc             As SldWorks.ModelDoc2
Dim FeatureMgr      As SldWorks.FeatureManager
Dim Methods(8)      As String
Dim Names           As Variant
Dim Types           As Variant
Dim Values          As Variant
Dim ThisFile        As String
Dim Options         As Long
Dim MacroFeature    As Feature


Function swmRebuild(vrApp As Variant, vrPart As Variant, vrFeature As Variant) As Variant

Dim SelMgr          As SelectionMgr
Dim text            As SketchText
Dim format          As TextFormat

'Set App = Application.SldWorks
'Set Doc = App.ActiveDoc
Set SelMgr = Doc.SelectionManager

Doc.Extension.SelectByID2 "Sketch7", "SKETCH", 0, 0, 0, False, 0, Nothing, 0
Doc.EditSketch
Doc.Extension.SelectByID2 "SketchText1", "SKETCHTEXT", 0, 0, 0, False, 0, Nothing, 0
Set text = SelMgr.GetSelectedObject6(1, -1)
Set format = text.GetTextFormat
format.CharHeight = Doc.Parameter("D1@Fillet3").SystemValue / 1.5
text.SetTextFormat False, format
Doc.EditRebuild3

End Function


Sub main()


    Set App = Application.SldWorks
    Set Doc = App.ActiveDoc
    
    
    If Doc Is Nothing Then
        App.SendMsgToUser2 "Il n'y a pas de document actif. P'tit con !", swMbWarning, swMbOk
        Exit Sub
    End If
    

    ThisFile = App.GetCurrentMacroPathName
    Methods(0) = ThisFile: Methods(1) = "Main_Programme": Methods(2) = "swmRebuild"
    Methods(3) = ThisFile: Methods(4) = "Main_Programme": Methods(5) = "swmEditDefinition"
    Methods(6) = "": Methods(7) = "": Methods(8) = ""  'A security routine is optional
    
    
    Names = Empty
    Types = Empty
    Values = Empty
    
        
    Options = swMacroFeatureByDefault
    
    Set FeatureMgr = Doc.FeatureManager
    Set MacroFeature = FeatureMgr.InsertMacroFeature("Text size", "", (Methods), Names, Types, Values, Nothing, Options)

End Sub


Function swmEditDefinition(varApp As Variant, varDoc As Variant, varFeat As Variant) As Variant
    
End Function

Outcomes