Erstellen eines Makros zum Ändern der Größe von Skizzenbildern

Genau das habe ich auch auf meiner Seite beobachten können.

Wenn ich in die SW-Hilfe schaue, enthält sie nichts! Das erste Mal, dass ich darauf stoße.

Also habe ich einen Umweg genommen:

So ändern Sie die Größe:

Sie müssen die setsize-Methode verwenden.

Im width-Parameter, dann der height-Parameter und schließlich true oder false, um das Seitenverhältnis zu blockieren

 

 

Haha^^

Ja, es hat funktioniert, ich hatte es kurz zuvor gefunden, und ich habe auch herausgefunden, warum mein Code nichts geändert hat. Die Werte an den richtigen Stellen zu platzieren hilft sehr xD.

Hier möchte ich mit dem Namen des Bildes umbenennen:

- Ich suche nach dem Befehl, um den Namen des letzten Bildes insert/use/ abzurufen, das vor meinen Augen liegt xD

- Für die Schleife: Ist es der Dir-Befehl, um alle Bilder eines Ordners nacheinander in einer Schleife hinzuzufügen?

Frage: Ich habe gesehen, dass es möglich ist, nur die *.ini, *bmp aufzulisten, aber ist es möglich, nur den Anfang zu berücksichtigen? wie KT*?

Nochmals vielen Dank für Ihre Zeit^^

Für den Namen mal so:;-)

swSketchPicture.GetFeature.SetImportedFileName ("Name")

 

Was die Liste der Dateien nach Erweiterung betrifft.

Ich komme etwas später zurück...

Für die Schleife habe ich diesen Code ausprobiert, aber er stürzt solidworks ab :'(

MyImage = Dir("C:\Benutzer\ad36aaen\Dokumente\P01\HO\")

Für i = 1 bis 3

..

Set SkPicture = Part.SketchManager.InsertSketchPicture(MyImage)

..

MyImage = Verzeichnis
Weiter i

Ich füge eine Makrodatei an, die die Dateien in einem Verzeichnis auflistet, dessen Name mit KT beginnt.

Ich denke, wir sollten einige Tests durchführen, um zu überprüfen, ob es sich um ein Bild handelt, indem  wir die Methode verwenden: oFl.Type


Makro1.swp

Großartig, danke.

Hallo

Ich habe vergessen: Sie müssen die Microsoft Scripting Runtime Referenz zum Projekt in Tools / Referenzen hinzufügen

Guten Tag.

Es geht gut voran,

-Größe ändern ok,

-Schlaufe ok,

-Der Name ist fast ok:

Wenn ich den Punkt nicht bis zum Ende belasse, wird Nom_EsquisseAP nicht berücksichtigt, es funktioniert nur, wenn es den Punkt gibt...

 

Ich schaue mir die von xD abgeleiteten Konfigurationen an

 

Mein Code:

Dimmen swApp als Objekt
Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
SkBild als Objekt dimmen
Dim-Instanz als ISketchPicture
Dim-Breite als Doppelt
Dim Höhe als Doppelt
Dim AspectRatioLocked als boolescher Wert
Dimmwert: Als boolescher Wert
Dim X Ace Doppelt
Dim Y As Double
System als Objekt          dimmen ' Dateisystem
Dim-Ordner als Objekt          ' Verzeichnis
Dim Files As Object          'Sammlung von Dateien aus dem Verzeichnis
Dim File As Object          ' File (Teil der Files-Sammlung)
Dim Nom_Dossier As String      ' Verzeichnisname
Dim Nom_Fichier As String      ' Dateiname
Dim Nom_EsquisseAV As String     ' Name der Frontskizze
Dimmen Nom_EsquisseAP als Zeichenfolge     ' Skizzenname nach
Dim k Als Ganzzahl

Sub main()

swApp = _ setzen
Anwendung.SldWorks

Set Part = swApp.OpenDoc6("C:\Benutzer\ad36aaen\Dokumente\Verwendung\Design SdC\1300\Grundstrukturen\Strukturen\Hardware\Hardware.SLDPRT", 1, 0, "", longstatus, longwarnings)
swApp.ActivateDoc2 "Hardware.SLDPRT", False, longstatus
Set Part = swApp.ActiveDoc

k = 1

'Lesen des Verzeichnisses
Nom_Dossier = "C:\Benutzer\ad36aaen\Dokumente\Nutzung\Design SdC\1300\Grundstrukturen\Strukturen\Hardware\Hardware-Fotos\P01\HO\Test"
Systemsatz = CreateObject("Scripting.FileSystemObject")
Set Folder = System.GetFolder(Nom_Dossier)
Set Files = Ordner.Dateien

'Schleife
Für jede Datei in Dateien
    "Namen erstellen
    Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
    Nom_EsquisseAV = "Skizze" & k
    Nom_EsquisseAP = Links(Fichier.Name, Len(Fichier.Name) - 3)
   

    "Auswahlplan
    boolstatus = Part.Extension.SelectByID2("Plan bis 4mm", "PLANE", 0, 0, 0, Falsch, 0, Nichts, 0)
    

    'Skizzenbild erstellen
    Part.SketchManager.InsertSketch True
    Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
    

    'Größe ändern
    SkPicture.SetSize 50 / 1000, 60 / 1000, False
    SkPicture.SetOrigin -25/1000, -20/1000
    
    Part.ClearSelection2 Wahr
    

    Wählen Sie Skizze + Namen ändern
    boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAV, "SKETCH", 0, 0, 0, Falsch, 0, Nichts, 0)
    boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
    

    Löschen Sie den Skizzenstatus = > wird heller, wenn wir bei der 1000. Skizze sind
    boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SKETCH", 0, 0, 0, Falsch, 0, Nichts, 0)
    Teil.BearbeitenUnterdrücken2
    
    Part.ClearSelection2 Wahr

    k = k + 1
    
Nächste Datei
Ende Sub

Das war's, ich bin fertig,

Trotz dieses Problems des Stickens direkt nach dem Nomp funktioniert alles \o/

 

Code für Personen, die sehen / haben möchten:

Dimmen swApp als Objekt
Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
SkBild als Objekt dimmen
Dim-Instanz als ISketchPicture
Dim-Breite als Doppelt
Dim Höhe als Doppelt
Dim AspectRatioLocked als boolescher Wert
Dimmwert: Als boolescher Wert
Dim X Ace Doppelt
Dim Y As Double
System als Objekt          dimmen ' Dateisystem
Dim-Ordner als Objekt          ' Verzeichnis
Dim Files As Object          'Sammlung von Dateien aus dem Verzeichnis
Dim File As Object          ' File (Teil der Files-Sammlung)
Dim Nom_Dossier As String      ' Verzeichnisname
Dim Nom_Fichier As String      ' Dateiname
Dim Nom_EsquisseAV As String     ' Name der Frontskizze
Dimmen Nom_EsquisseAP als Zeichenfolge     ' Skizzenname nach

Sub main()

swApp = _ setzen
Anwendung.SldWorks

Set Part = swApp.OpenDoc6("C:\Benutzer\Hardware\Hardware.SLDPRT", 1, 0, "", longstatus, longwarnings)
swApp.ActivateDoc2 "Hardware.SLDPRT", False, longstatus
Set Part = swApp.ActiveDoc

k = 2

'Lesen des Verzeichnisses
Nom_Dossier = "C:\Benutzer\Hardware\Hardware-Fotos\P01\HO\Test"
Systemsatz = CreateObject("Scripting.FileSystemObject")
Set Folder = System.GetFolder(Nom_Dossier)
Set Files = Ordner.Dateien

'Kontrollieren Sie jede Datei im Verzeichnis
Für jede Datei in Dateien
    Erstellen eines Skizzenbilds und Aktualisieren der Bemaßungen
    Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
    Nom_EsquisseAP = Links(Fichier.Name, Len(Fichier.Name) - 3)
    
    boolstatus = Part.Extension.SelectByID2("Plan bis 4mm", "PLANE", 0, 0, 0, Falsch, 0, Nichts, 0)
    
    Part.SketchManager.InsertSketch True
    Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
    
    SkPicture.SetSize 50 / 1000, 60 / 1000, False
    SkPicture.SetOrigin -25/1000, -20/1000
    
    Part.ClearSelection2 Wahr
    
    boolstatus = Part.Extension.SelectByID2("Skizze1", "SKIZZE", 0, 0, 0, Falsch, 0, Nichts, 0)
    boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
    
    boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SKETCH", 0, 0, 0, Falsch, 0, Nichts, 0)
    Teil.BearbeitenUnterdrücken2
    
    boolstatus = Part.Extension.SelectByID2("AM_P01_HO", "KONFIGURATIONEN", 0, 0, 0, Falsch, 0, Nichts, 0)
    boolstatus = Part.AddConfiguration2("AM_" & Nom_EsquisseAP, "", "", Falsch, Falsch, Falsch, Wahr, 256)
    
    Part.ClearSelection2 Wahr
    
Nächste Datei
Ende Sub

Ich verstehe nicht, warum es am Anfang zwei Mal Set Part gibt. Bei mir öffnest du den Raum und füllst die Variable Part aus. Dann sagen Sie ihm, dass die Variable Part gleich der aktuellen Datei ist.

Was den Namen angeht, verstehe ich das Problem nicht. Sie müssen den Punkt verlassen, wo?

Ich habe ein bisschen Hausarbeit gemacht. ;-)

Seien Sie vorsichtig, Sie müssen Objektvariablendeklarationen mit Vorsicht verwenden.

Im Grunde genommen passt es, im Programm zu sagen, ich weiß nicht, was es sein wird, es kann von einem Bolzen zu einem Elefanten werden, es liegt an Ihnen, es zu managen...

Probieren Sie das aus: ZUM TESTEN

Dimmen swApp als Objekt
Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
SkBild als Objekt dimmen
Dim System As Scripting.FileSystemObject       'Dateisystem
Dim-Ordner als Ordner                            'Verzeichnis'
Dim-Datei als Datei                              ' Datei (Teil der Dateisammlung)
Dim Nom_Dossier As String                      ' Verzeichnisname
Dim Nom_Fichier As String                      ' Dateiname
Dim Nom_EsquisseAV As String                     ' Name der Frontskizze
Dim Nom_EsquisseAP As String                     ' Skizzenname nach

Sub main()
    Legen Sie swApp = Application.SldWorks fest
    Set Part = swApp.OpenDoc6("C:\Benutzer\Hardware\Hardware.SLDPRT", 1, 0, "", longstatus, longwarnings)

    'Lesen des Verzeichnisses
    Nom_Dossier="C:\Benutzer\Hardware\Hardware-Fotos\P01\HO\Test"
    Systemsatz = CreateObject("Scripting.FileSystemObject")
    Set Folder = System.GetFolder(Nom_Dossier)

    'Kontrollieren Sie jede Datei im Verzeichnis
    k = 2
    Für jede Datei in Folder.Files
        Erstellen eines Skizzenbilds und Aktualisieren der Bemaßungen
        Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
        Nom_EsquisseAP = Links(Fichier.Name, Länge(Fichier.Name) - 3)
        
        boolstatus = Part.Extension.SelectByID2("Plan bis 4mm", "PLANE", 0, 0, 0, Falsch, 0, Nichts, 0)
        
        Part.SketchManager.InsertSketch True
        Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
        
        SkPicture.SetSize 50 / 1000, 60 / 1000, False
        SkPicture.SetOrigin -25/1000, -20/1000
        
        Part.ClearSelection2 Wahr
        
        boolstatus = Part.Extension.SelectByID2("Skizze1", "SKIZZE", 0, 0, 0, Falsch, 0, Nichts, 0)
        boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
        
        boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SKETCH", 0, 0, 0, Falsch, 0, Nichts, 0)
        Teil.BearbeitenUnterdrücken2
        
        boolstatus = Part.Extension.SelectByID2("AM_P01_HO", "KONFIGURATIONEN", 0, 0, 0, Falsch, 0, Nichts, 0)
        boolstatus = Part.AddConfiguration2("AM_" & Nom_EsquisseAP, "", "", Falsch, Falsch, Falsch, Wahr, 256)
        
        Part.ClearSelection2 Wahr
        
    Nächste Datei
Ende Sub

Mein Name: KT211.bmp

Wenn ich KT211(.bmp)

Meine Nom_EsquisseAP ist gleich KT211 (vgl. MsgBox)

Aber genau darin liegt das Problem, der Name der Skizze ändert sich nicht

boolstatus = Part.Extension.SelectByID2("Skizze1", "SKIZZE", 0, 0, 0, Falsch, 0, Nichts, 0)
boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)

 

Auf der anderen Seite, wenn ich den KT211-Punkt verlasse, dann funktioniert es, der Sketch-Name wird tatsächlich geändert.

 

Bei den Änderungen handelt es sich nur um den Double-Set-Teil und die "Dateien", die Sie direkt durch folder.files (anstelle von folder.files?) ersetzen, um zu vermeiden, dass ein Satz von Dateien erstellt wird, der nur einmal verwendet wird. Ich habe noch keinen gesehen xD

Können Sie mir die Teiledatei sowie den Ordner mit einigen Bildern zusenden?

Damit ich testen kann

Das wird also nicht möglich sein xD. Ich bin Nuklearingenieur.

 

Zu Ihrer Information: In meinem Zimmer ist alles im gelöschten Zustand, wenn es also keine Räume gibt, ist es dasselbe.

Erstellen Sie schnell einen Ordner mit 3 Bildern und es funktioniert auf die gleiche Weise.

1 „Gefällt mir“

In der Tat funktioniert es, indem es einen Plan erstellt.

Bei mir funktioniert das perfekt. Der Name der Skizze ist von der Konfiguration, die nicht den Punkt hat.

 

Der Code:

Dimmen swApp als Objekt
Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
SkBild als Objekt dimmen
Dim System As Scripting.FileSystemObject       'Dateisystem
Dim-Ordner als Ordner                           'Verzeichnis'
Dim-Datei als Datei                            ' Datei (Teil der Dateisammlung)
Dim Nom_Dossier As String                      ' Verzeichnisname
Dim Nom_Fichier As String                      ' Dateiname
Dim Nom_EsquisseAV As String                   ' Name der vorderen Skizze
Sun Nom_EsquisseAP As String                   ' Skizzenname nach

Sub main()
    Legen Sie swApp = Application.SldWorks fest
    Set Part = swApp.OpenDoc6("C:\Users\rmorel\Desktop\Part1.SLDPRT", 1, 0, "", longstatus, longwarnings)

    'Lesen des Verzeichnisses
    Nom_Dossier = "C:\Benutzer\rmorel\Desktop\Test"
    Systemsatz = CreateObject("Scripting.FileSystemObject")
    Set Folder = System.GetFolder(Nom_Dossier)

    'Kontrollieren Sie jede Datei im Verzeichnis
    k = 2
    Für jede Datei in Folder.Files
        Erstellen eines Skizzenbilds und Aktualisieren von Bemaßungen
        Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
        Nom_EsquisseAP = Links(Fichier.Name, Len(Fichier.Name) - 4)
        
        boolstatus = Part.Extension.SelectByID2("Plan bis 4mm", "PLANE", 0, 0, 0, Falsch, 0, Nichts, 0)
        
        Part.SketchManager.InsertSketch True
        Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
        
        SkPicture.SetSize 50 / 1000, 60 / 1000, False
        SkPicture.SetOrigin -25/1000, -20/1000
        
        Part.ClearSelection2 Wahr
        
        boolstatus = Part.Extension.SelectByID2("Skizze1", "SKIZZE", 0, 0, 0, Falsch, 0, Nichts, 0)
        boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
        
        boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SKIZZE", 0, 0, 0, Falsch, 0, Nichts, 0)
        Teil.BearbeitenUnterdrücken2
        
        boolstatus = Part.Extension.SelectByID2("AM_P01_HO", "KONFIGURATIONEN", 0, 0, 0, Falsch, 0, Nichts, 0)
        boolstatus = Part.AddConfiguration2("AM_" & Nom_EsquisseAP, "", "", Falsch, Falsch, Falsch, Wahr, 256)
        
        Part.ClearSelection2 Wahr
        
    Nächste Datei
Ende Sub

 

Hier habe ich übrigens einen Fehler gefunden.

Es hängt mit meiner Variablen k zusammen, um zu dem anderen Sketch überzugehen, den ich angehoben habe, weil er nicht mehr nützlich war.

Der BUG

- Erstellt eine Skizze

- Umbenannt in

- Erstelle einen neuen Sketch => er wird sketch2 genannt

 

- Erstellt eine Skizze

- Umbenannt in

- Erstellt eine Konfiguration

- Erstelle einen neuen Sketch => er wird sketch1 genannt

 

Einfach ausgedrückt ermöglicht die Konfiguration ein Update, so dass Sie bei einem skizzierten Code berücksichtigen müssen, ob Sie Konfigurationen erstellen oder nicht.

Ich für meinen Teil brauchte ohne ein Inkrement k und um die "Skizzen" & k aufzurufen

Bei der Konfiguration muss ich nur noch den "sketch1" aufrufen

 

Xd

Azrod

Hallo

Das ist eine große Sache. Viel Glück demjenigen, der es schafft:)

Ich kann mir vorstellen, dass nicht alle Fotos die gleichen Abmessungen haben?

 

\o/  \o/  \o/  \o/  \o/  \o/ \o/ \o/   \ o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/  \o/ \o/ \o/ \o/  \o/ \o  /  \o/ \o/ \o/ \o/     \o  

Entschlossen

1 „Gefällt mir“

Wie und mit welchen Mitteln???

1 „Gefällt mir“

Den gesamten Code finden Sie in den Diskussionen...

Wenn es darum geht, ein Detail zu besprechen, zögern Sie nicht, Ihre Frage zu stellen. Versuchen Sie, ein wenig präziser zu sein, als Sie es gemacht haben xD.

 

Zur Erinnerung:

- Fügen Sie ein Skizzenbild ein

- Ändern der Dimension des Skizzenbildes nach dem Einfügen

- Bemaßung entsprechend der Art des Materials

- Sketch Name = Materialname

- Erstellen einer Konfiguration

- Konfigurationsname = Name der Hardware

- Schlaufe auf alle Materialien in einer Datei