Naja habe mir einen anderen Weg überlegt wie ich diese Problematik lösen kann!
Könnte für Intelligente Feature unter SWX2006 interessant sein.
In einer Baugruppe einen Skizzenpunkt wählen auf dem ein anderes Element (in unserem Fall ein Normteil) positioniert werden soll und ein Normteil wählen, dann Makro starten!
Der Positionierpunkt des Normteils wird automatisch mit dem ausgewählten Skizzenpunkt deckungsgleich gesetzt!
Hier mal der Quelltext:
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swComp As SldWorks.Component2
Dim Part As Object
Dim c As String
Dim d As String
Dim TeilName As String
Dim retval As Boolean
Dim boolstatus As Boolean
Dim SelMgr As Object
Dim longstatus As Long, longwarnings As Long
Dim Skizzenpunkt As Boolean
Dim Normteil As Boolean
Dim BGname As String
'------------------------------------------------------------------------------
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
BGname = Part.GetTitle
c = StrReverse(BGname) ' dreht string um um und löscht Dateibezeichnung
d = Mid(c, InStr(c, ".") + 1)
BGname = StrReverse(d)
Set swSelMgr = Part.SelectionManager
For i = 1 To swSelMgr.GetSelectedObjectCount
If swSelMgr.GetSelectedObjectType(i) = swSelEXTSKETCHPOINTS _
Or swSelMgr.GetSelectedObjectType(i) = swSelVERTICES _
Or swSelMgr.GetSelectedObjectType(i) = swSelSKETCHPOINTS Then
Skizzenpunkt = True
Else
j = i
Set swcomp11 = swSelMgr.GetSelectedObjectsComponent3(j, 0)
TeilName = "Punkt1@Positionierskizze@" + swcomp11.Name + "@" + BGname
Normteil = True
End If
Next
swSelMgr.DeSelect (j) 'delselektiert das Normteil, damit nicht 3 Auswahlen existieren
If (Skizzenpunkt = False And Normteil = False) Then
MsgBox "Bitte einen Positionierpunkt auf dem Bauteil und ein Normteil wählen!"
End
End If
If i > 3 Then
MsgBox "Zu viele Auswahlen, bitte nur einen Punkt und ein Normteil auswählen!"
End
End If
boolstatus = Part.Extension.SelectByID2(TeilName, "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
Set Feature = Part.AddMate2(0, -1, False, 0.02464807137666, 0, 0, 1, 1, 0.5235987755983, 0.5235987755983, 0.5235987755983, longstatus)
Part.ClearSelection2 True
retval = Part.EditRebuild3()
End Sub
Viele Grüße und danke,
Sebastian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP