Flux
Level-1
- Beiträge
- 314
- Reaktionspunkte
- 11
-> Hier kostenlos registrieren
Hallo Leute,
ich stehe vor der Aufgabe ca. 400 Bilder zu editieren, d.h. alle sich darin befindlichen Bildelemente um genau 400 px nach rechts zu verschieben. Das kann man manuell machen
oder aber skripten. Dazu habe ich mir aus ein Paar Codeschnipseln ein halbwegs funktionierendes Skript zusammengebastelt.
Probleme entstehen bei gruppierten Elementen, da dann der doppelte Offset (2 x 400 px) auf die gruppierten Elemente addiert wird (einmal auf alle HMIObjects und einmal auf das HMIGroup-Object). Ich suche nun nach einem Kriterium (siehe KEIN_GROUP_OBJECT im Code), welches mir sagt, ob das Element Group-Object oder "normales" HMIObject ist, um abhängig davon den Offset aufzuaddieren.
MfG Flux
ich stehe vor der Aufgabe ca. 400 Bilder zu editieren, d.h. alle sich darin befindlichen Bildelemente um genau 400 px nach rechts zu verschieben. Das kann man manuell machen
Probleme entstehen bei gruppierten Elementen, da dann der doppelte Offset (2 x 400 px) auf die gruppierten Elemente addiert wird (einmal auf alle HMIObjects und einmal auf das HMIGroup-Object). Ich suche nun nach einem Kriterium (siehe KEIN_GROUP_OBJECT im Code), welches mir sagt, ob das Element Group-Object oder "normales" HMIObject ist, um abhängig davon den Offset aufzuaddieren.
MfG Flux
Code:
Sub MoveAllObjects400PX()
'*******************************
Dim objGDApplication As grafexe.Application
Dim fso As FileSystemObject
Dim ofolder As Folder
Dim ofiles As Files
Dim ofile As File
Dim oColObjects As HMIObjects
Dim oHmiObject As HMIObject
'*******************************
Set objGDApplication = Application
Set fso = New FileSystemObject
Set ofolder = fso.GetFolder(objGDApplication.ApplicationDataPath)
Set ofiles = ofolder.Files
For Each ofile In ofiles
If UCase(Right(ofile.Name, 3)) = "PDL" Then 'Bild?
objGDApplication.Documents.Open ofile.Name, hmiOpenDocumentTypeVisible 'Bild öffnen
Set oColObjects = ActiveDocument.HMIObjects 'Bildelemente
For Each oHmiObject In oColObjects
If oHmiObject.[COLOR=#ff0000][B]KEIN_GROUP_OBJECT [/B][/COLOR]Then
oHmiObject.Left = oHmiObject.Left + 400 'Bildelement um 400 px nach rechts verschieben
End If
Next oHmiObject
Application.Documents.SaveAll 'speichern
Application.Documents.Close (Application.ApplicationDataPath & ofile.Name) 'schließen
End If
Next ofile
Set fso = Nothing
End Sub
Zuletzt bearbeitet: