Con las siguientes Funciones API para movimientos ratón sera mas facil acceder a realizar macros. las Funciones API para movimientos del ratón son las siguientes:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swModelView As SldWorks.ModelView
Dim mouse As Object
Dim TheDate As Date
Dim WithEvents TheMouse As SldWorks.mouse
Dim X, Y As Double
Dim i, j, ii As Integer
______________________________________________________________________________________
‘Zoom to Area button
Private Sub Command1_Click()
Set swApp = CreateObject(“SldWorks.Application”)
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelView = swModel.GetFirstModelView
Set TheMouse = swModelView.GetMouse
X = 0
swModelDocExt.RunCommand swCommands_Front, “”
swModelDocExt.RunCommand swCommands_ZoomToFit, “”
swModelDocExt.RunCommand swCommands_ZoomToArea, “”
TheMouse.MoveXYZ -0.0257, 0.021, 0.025, swMouse_MouseMove + swMouse_LeftDown
For i = 1 To 20
TheMouse.Move 5, 5, swMouse_MouseMove
Next
TheMouse.MoveXYZ -2.19101587210489E-02, 1.60006957747979E-02, 2.49999999999773E-02, swMouse_MouseMove + swMouse_LeftUp
timeout 1
swModelDocExt.RunCommand swCommands_ZoomToArea, “”
timeout 1
End Sub
______________________________________________________________________________________
Sub timeout(PauseTime As Integer)
Dim Start, Finish, TotalTime
Start = Timer ‘ Set start time
Do While Timer < Start + PauseTime
DoEvents ‘ Yield to other processes
Loop
End Sub
______________________________________________________________________________________
‘Rotate View button
Private Sub Command2_Click()
Set swApp = CreateObject(“SldWorks.Application”)
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelView = swModel.GetFirstModelView
Set TheMouse = swModelView.GetMouse
j = 1
swModelDocExt.RunCommand swCommands_Front, “”
swModelDocExt.RunCommand swCommands_ZoomToFit, “”
While j <> 0
swModelDocExt.RunCommand swCommands_RotateView, “”
TheMouse.MoveXYZ -1.94809781021641E-02, 1.36614848084644E-02, 2.49999999999773E-02, swMouse_MouseMove + swMouse_LeftDown
ii = 0
For i = 1 To 40
If Check1.Value = 1 Then
ii = ii + 1
If ii = 8 Then
timeout 1
ii = 0
End If
End If
TheMouse.Move 5, 5, swMouse_MouseMove + swMouse_LeftDown
Next
TheMouse.Move 0, 0, swMouse_LeftUp
j = j – 1
timeout 1
swModelDocExt.RunCommand swCommands_RotateView, “”
Wend
End Sub
______________________________________________________________________________________
‘Fillet button
Private Sub Command3_Click()
Set swApp = CreateObject(“SldWorks.Application”)
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelView = swModel.GetFirstModelView
Set TheMouse = swModelView.GetMouse
swModelDocExt.RunCommand swCommands_Front, “”
swModelDocExt.RunCommand swCommands_ZoomToFit, “”
swModelDocExt.RunCommand swCommands_Fillet, “API Fillet”
timeout 1
TheMouse.MoveXYZ 0.02572736767983, -0.00820741159683, 0.02499999999998, swMouse_MouseMove + swMouse_LeftDown
TheMouse.MoveXYZ 0.02572736767983, -0.00820741159683, 0.02499999999998, swMouse_LeftUp
timeout 1
TheMouse.MoveXYZ -2.54189751705491E-02, 7.6335180875281E-03, 2.49999999998636E-02, swMouse_MouseMove + swMouse_LeftDown
TheMouse.MoveXYZ -2.54189751705491E-02, 7.6335180875281E-03, 2.49999999998636E-02, swMouse_LeftUp
timeout 1
TheMouse.MoveXYZ 4.81082808668361E-03, 1.85198460462339E-02, 2.49999999999773E-02, swMouse_MouseMove + swMouse_LeftDown
TheMouse.MoveXYZ -2.54189751705491E-02, 7.6335180875281E-03, 2.49999999998636E-02, swMouse_LeftUp
timeout 1
TheMouse.MoveXYZ 4.84461095740582E-02, 9.97272905386159E-03, 2.49999999999773E-02, swMouse_MouseMove + swMouse_LeftDown
TheMouse.MoveXYZ -2.54189751705491E-02, 7.6335180875281E-03, 2.49999999998636E-02, swMouse_LeftUp
timeout 1
swModelDocExt.RunCommand swCommands_PmOK, “”
End Sub
______________________________________________________________________________________
‘Undo button
Private Sub Command4_Click()
Set swApp = CreateObject(“SldWorks.Application”)
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelView = swModel.GetFirstModelView
Set TheMouse = swModelView.GetMouse
swModelDocExt.RunCommand swCommands_Front, “”
swModelDocExt.RunCommand swCommands_ZoomToFit, “”
swModelDocExt.RunCommand swCommands_Undo, “”
End Sub
______________________________________________________________________________________
‘Exit dialog box
Private Sub Command5_Click()
End
End Sub
______________________________________________________________________________________
‘Model Coordinates’ Go to XYZ button
Private Sub Command6_Click()
Dim X As Double
Dim Y As Double
Dim z As Double
X = Val(Xw.Text)
Y = Val(Yw.Text)
z = Val(Zw.Text)
TheMouse.MoveXYZ X, Y, z, swMouse_MouseMove + swMouse_LeftDown
timeout 1
TheMouse.Move 0, 0, swMouse_LeftUp
End Sub
______________________________________________________________________________________
‘Go to XY button
Private Sub Command7_Click()
Dim X As Integer
Dim Y As Integer
X = Val(Xs.Text)
Y = Val(Ys.Text)
TheMouse.Move X, Y, swMouse_Absolute + swMouse_MouseMove + swMouse_LeftDown
TheMouse.Move X, Y, swMouse_Absolute + swMouse_LeftUp
End Sub
______________________________________________________________________________________
‘Screen Coordinates Go to XY button
Private Sub Command8_Click()
X = Val(Xg.Text)
Y = Val(Yg.Text)
TheMouse.Move X, Y, swMouse_Absolute + swMouse_MouseMove + swMouse_LeftDown
End Sub
______________________________________________________________________________________
Private Sub Form_Load()
Set swApp = CreateObject(“SldWorks.Application”)
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelView = swModel.GetFirstModelView
Set TheMouse = swModelView.GetMouse
End Sub
______________________________________________________________________________________
Private Function TheMouse_MouseMoveNotify(ByVal X As Long, ByVal Y As Long, ByVal WParam As Long) As Long
Xs.Text = Str$(X)
Ys.Text = Str$(Y)
End Function
______________________________________________________________________________________
Private Function TheMouse_MouseSelectNotify(ByVal Ix As Long, ByVal Iy As Long, ByVal X As Double, ByVal Y As Double, ByVal z As Double) As Long
Xw.Text = Str$(X)
Yw.Text = Str$(Y)
Zw.Text = Str$(z)
Xg.Text = Str$(Ix)
Yg.Text = Str$(Iy)
End Function
————————————————————————————–
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swModelView As SldWorks.ModelView
Dim swMouse As SldWorks.mouse
Dim TheDate As Date
Dim TheMouse As SldWorks.mouse
Dim obj As New Class1
Dim i, j As Integer
Dim X As Double
______________________________________________________________________________________
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swModelView = swModel.GetFirstModelView
Set TheMouse = swModelView.GetMouse
obj.init TheMouse
X = 0
swModelDocExt.RunCommand swCommands_ZoomToFit, “”
swModelDocExt.RunCommand swCommands_ZoomToArea, “”
TheMouse.Move 50, 150, swMouse_Absolute + swMouse_MouseMove + swMouse_LeftDown
For i = 1 To 20
DoEvents
TheMouse.Move 5, 5, swMouse_MouseMove
Next
TheMouse.Move 5, 5, swMouse_LeftUp
swModelDocExt.RunCommand swCommands_ZoomToArea, “”
j = 4
While j <> 0
swModelDocExt.RunCommand swCommands_RotateView, “”
TheMouse.MoveXYZ 0.03720615681732, 0.0316583060694, 0.04991700841805, swMouse_LeftDown
For i = 1 To 20
DoEvents
TheMouse.Move 5, 5, swMouse_MouseMove
Next
TheMouse.Move 0, 0, swMouse_LeftUp
j = j – 1
timeout 1
swModelDocExt.RunCommand swCommands_Front, “”
swModelDocExt.RunCommand swCommands_RotateView, “”
Wend
DoEvents
TheMouse.MoveXYZ 0.026048951048951, 1.63412004662006E-02, 5.00000000000114E-02, swMouse_MouseMove + swMouse_LeftDown
DoEvents
TheMouse.MoveXYZ 0.026048951048951, 1.63412004662006E-02, 5.00000000000114E-02, swMouse_MouseMove + swMouse_LeftDown
End Sub
______________________________________________________________________________________
Sub timeout(PauseTime As Integer)
Dim Start, Finish, TotalTime
Start = Timer ‘ Set start time
Do While Timer < Start + PauseTime
DoEvents ‘ Yield to other processes
Loop
End Sub
______________________________________________________________________________________
Class module: Class1
‘————————————————————————————–
Dim WithEvents ms As SldWorks.mouse
______________________________________________________________________________________
Private Sub Class_Initialize()
End Sub
______________________________________________________________________________________
Public Sub init(mouse As Object)
Set ms = mouse
End Sub
______________________________________________________________________________________
Private Function ms_MouseNotify(ByVal Message As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print “Event Message= ” & Message & ” wParam= ” & wParam & ” lParam= “; lParam
End Function
______________________________________________________________________________________
Private Function ms_MouseSelectNotify(ByVal ix As Long, ByVal iy As Long, ByVal X As Double, ByVal Y As Double, ByVal Z As Double) As Long
Debug.Print “Mouse loc ix = ” & ix & ” iy = ” & iy & ” x= ” & X; ” y= ” & Y; ” z= ” & Z
End Function
Para mas información sobre macros accede a: tutorialsolidworks.es api-macros
Para la asyuda de solidworks accede a : help.solidworks.com