Hallo KraBBy,
danke für deine Antwort.
Da ich die VBA-Makros für eine andere Abteilung bei mir in der Firma schreibe, werde ich lieber die Finger von der Registry lassen.
Einfach um des Frieden willen, sollte dort einmal der ein oder andere Rechner Probleme machen.
Meine Kollegen haben die Vorstellung, eine VBA-Makro soll möglichst viel automatisieren und gleichzeitig flexibel bleiben.
Meiner Ansicht nach nicht leicht zu kombinieren. So nutze ich hin und wieder das im ersten Beitrag geschriebene Codegerüst um eine Art Halbautomation zustande zu bringen.
Hier mal ein Beispiel:
Ein bestimmtes iFeature muss immer auf einen Skizzenpunkt einer bestimmten Skizze eingefügt werden.
Das Makro sucht die Skizze, wenn sie nicht gefunden wird kann der Anwender eine vorhandene Skizze umbenennen.
Danach bekommt er genau sein benötigtes iFeature, in dem Fall ein tabellengesteuertes iFeature,
und kann nun selbst entscheiden, wie er es verbaut.
Zum Schluss benennt das Makro bzw. der Call anhand der iFeature-Tabelle das iFeature um.
Code:
Sub Versteifung_einfuegen()
Dim oApp As Application
Set oApp = ThisApplication
If oApp.Documents.Count = 0 Then Exit Sub
If Not oApp.ActiveDocument.DocumentType = kPartDocumentObject Then Exit Sub
Dim oPartDoc As PartDocument
Set oPartDoc = oApp.ActiveDocument
Dim oPartDef As PartComponentDefinition
Set oPartDef = oPartDoc.ComponentDefinition
'Skizze suchen
Dim oSketch As PlanarSketch
Dim sSketchname As String
sSketchname = "SK_Versteifung"
Set oSketch = GetSketchByNameNEW(sSketchname)
If oSketch Is Nothing Then
Dim sAntwort As String
sAntwort = MsgBox("Skizze 'SK_Versteifung' nicht gefunden! Vorhandene Skizze umbenennen?", vbYesNo, "Skizze 'SK_Versteifung'")
If sAntwort = vbNo Then
MsgBox "Es wird kein iFeature eingefügt!"
Exit Sub
End If
'MsgBox "Bitte Skizze zum umbenennen auswählen!"
Dim oCmdMgr As CommandManager
Set oCmdMgr = ThisApplication.CommandManager
Set oSketch = oCmdMgr.Pick(kSketchObjectFilter, "Bitte Skizze auswählen")
If oSketch Is Nothing Then
Exit Sub
End If
oSketch.Name = "SK_Versteifung"
End If
oSketch.Visible = True
Dim cm As CommandManager
Set cm = ThisApplication.CommandManager
Call cm.PostPrivateEvent(kFileNameEvent, "x:\IFeature\Versteifung.ide") Dim cd As ControlDefinition
Set cd = cm.ControlDefinitions("PartiFeatureInsertCmd")
Call cd.Execute2(True)
Call Versteifungen_identifizieren
End Sub
Darum auch meine Interesse an den Möglichkeiten des PostPrivateEvent.
Bei meinem Anfangs beschriebenen Problem werde ich nun versuchen, mittels VBA iMates in den gewünschten Bauteilen zu setzen und den Code
durch einen simplen Einzeiler ersetzen.
Code:
Call ThisApplication.ActiveDocument.ComponentDefinition.Occurrences.AddUsingiMates("e:\Arbeitsverzeichnis\Bauteil Einsatz.ipt", False)
Schöne Grüße
Helmut
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP