Utwórz makro, aby zmienić rozmiar obrazów szkicu

To jest dokładnie to, co udało mi się zaobserwować również po swojej stronie.

Jak zajrzę do SW help to nic nie zawiera! Pierwszy raz się z tym spotykam.

Użyłem więc okrężnej drogi:

Oto jak zmienić rozmiar:

Musisz użyć metody setsize.

W parametrze width, następnie parametr height, a na końcu true lub false, aby zablokować współczynnik proporcji

 

 

Haha^^

Tak, to zadziałało, znalazłem to tuż wcześniej, a także dowiedziałem się, dlaczego mój kod niczego nie zmienia. Umieszczanie wartości w odpowiednich miejscach bardzo pomaga xD.

Tutaj szukam zmiany nazwy na nazwę obrazu:

- Szukam komendy do pobrania nazwy ostatniego obrazka wstaw/użycia/który ma mi się przed oczami xD

- Dla pętli: Czy jest to polecenie Dir, aby dodać wszystkie obrazy folderu jeden po drugim w pętli?

Pytanie: Widziałem, że można wymienić tylko *.ini, *bmp, ale czy można wziąć pod uwagę tylko początek? jak KT*?

Jeszcze raz dziękuję za poświęcony czas^^

Dla nazwy spróbuj tego:;-)

swSketchPicture.GetFeature.SetImportedFileName ("Nazwa")

 

Jeśli chodzi o listę plików według rozszerzenia.

Wrócę tu trochę później...

Dla pętli próbowałem tego kodu, ale wywala solidworks :'(

MyImage = Katalog("C:\Użytkownicy\ad36aaen\Dokumenty\P01\HO\")

Dla i = 1 do 3

..

Set SkPicture = Part.SketchManager.InsertSketchPicture(MyImage)

..

MyImage = Katalog
Dalej i

Załączam plik makra, który zawiera listę plików w katalogu, którego nazwa zaczyna się od KT.

Myślę, że powinniśmy zrobić kilka testów, aby zweryfikować, czy jest to obraz za pomocą  metody: oFl.Type


makro1.swp

Świetnie, dziękuję.

Witam

Zapomniałem: Musisz dodać odniesienie do Microsoft Scripting Runtime do projektu w Narzędzia / Referencje

Dzień dobry.

Idzie dobrze,

-Zmień rozmiar ok,

-Pętla ok,

-Nazwa prawie ok:

Jeśli nie zostawię punktu na koniec, Nom_EsquisseAP nie jest brane pod uwagę, działa tylko wtedy, gdy jest sens...

 

Przyglądam się konfiguracjom pochodnym xD

 

Mój kod:

Dim swApp As Object
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim SkPicture As Obiekt
Przyciemniona instancja jako ISketchPicture
Przyciemnij szerokość jako podwójne
Przyciemnij wysokość jako podwójne
Dim AspectRatioLocked jako wartość logiczna
Wartość przyciemniona Jako wartość logiczna
Dim X Ace Podwójny
Przyciemnij jako podwójne
Dim System As Object          ' System plików
Przyciemnij folder jako katalog obiektu          
Dim Files As Object          'Kolekcja plików z katalogu
Dim File As Object          ' File (część kolekcji Files)
dim Nom_Dossier As String      ' Nazwa katalogu
dim Nom_Fichier As String      ' Nazwa pliku
Dim Nom_EsquisseAV As String     ' Nazwa szkicu frontowego
Dim Nom_EsquisseAP As String     ' Nazwa szkicu po
Dim k As liczba całkowita

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.OpenDoc6("C:\Users\ad36aaen\Documents\Usage\Design SdC\1300\Basic Structures\Structures\Hardware\Hardware.SLDPRT", 1, 0, "", longstatus, longwarnings)
swApp.ActivateDoc2 "Hardware.SLDPRT", Fałsz, longstatus
Ustaw część = swApp.ActiveDoc

k = 1

'Czytanie katalogu
Nom_Dossier = "C:\Użytkownicy\ad36aaen\Dokumenty\Użycie\Design SdC\1300\Podstawowe Struktury\Struktury\Sprzęt\Sprzęt/Zdjęcia\P01\HO\Test"
Zestaw systemowy = CreateObject("Scripting.FileSystemObject")
Ustaw folder = System.GetFolder(Nom_Dossier)
Set Files = Folder.Files

'Pętla
Dla każdego pliku w plikach
    "Tworzenie imion
    Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
    Nom_EsquisseAV = "Szkic" & k
    Nom_EsquisseAP = Lewo(Fichier.Name, Len(Fichier.Name) - 3)
   

    "Plan wyboru
    boolstatus = Part.Extension.SelectByID2("Planuj do 4mm", "PŁASZCZYZNA", 0, 0, 0, Fałsz, 0, Nic, 0)
    

    "Utwórz obraz szkicu
    Part.SketchManager.InsertSketch Prawda
    Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
    

    'Zmień rozmiar
    SkPicture.SetSize 50 / 1000, 60 / 1000, Fałsz
    SkPicture.SetOrigin -25/1000, -20/1000
    
    Part.ClearSelection2 Prawda
    

    Wybierz Szkic + Zmień nazwę
    boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAV, "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
    

    Usuń stan szkicu => rozjaśni się, gdy będziemy na 1000. szkicu
    boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
    Part.EditSuppress2
    
    Part.ClearSelection2 Prawda

    k = k + 1
    
Następny plik
Koniec subwoofera

To wszystko, skończyłem,

Mimo tego problemu z szyciem tuż po nompie, wszystko działa \o/

 

Kod dla osób, które chciałyby zobaczyć/mieć:

Dim swApp As Object
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim SkPicture As Obiekt
Przyciemniona instancja jako ISketchPicture
Przyciemnij szerokość jako podwójne
Przyciemnij wysokość jako podwójne
Dim AspectRatioLocked jako wartość logiczna
Wartość przyciemniona Jako wartość logiczna
Dim X Ace Podwójny
Przyciemnij jako podwójne
Dim System As Object          ' System plików
Przyciemnij folder jako katalog obiektu          
Dim Files As Object          'Kolekcja plików z katalogu
Dim File As Object          ' File (część kolekcji Files)
dim Nom_Dossier As String      ' Nazwa katalogu
dim Nom_Fichier As String      ' Nazwa pliku
Dim Nom_EsquisseAV As String     ' Nazwa szkicu frontowego
Dim Nom_EsquisseAP As String     ' Nazwa szkicu po

Sub main()

Ustaw swApp = _
Aplikacja.SldWorks

Ustaw część = swApp.OpenDoc6("C:\Users\Hardware\Hardware.SLDPRT", 1, 0, "", longstatus, longwarnings)
swApp.ActivateDoc2 "Hardware.SLDPRT", Fałsz, longstatus
Ustaw część = swApp.ActiveDoc

k = 2

'Czytanie katalogu
Nom_Dossier = "C:\Użytkownicy\Sprzęt\Zdjęcia sprzętowe\P01\HO\Test"
Zestaw systemowy = CreateObject("Scripting.FileSystemObject")
Ustaw folder = System.GetFolder(Nom_Dossier)
Set Files = Folder.Files

'Kontroluj każdy plik w katalogu
Dla każdego pliku w plikach
    Tworzenie obrazu szkicu i aktualizowanie wymiarów
    Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
    Nom_EsquisseAP = Lewo(Fichier.Name, Len(Fichier.Name) - 3)
    
    boolstatus = Part.Extension.SelectByID2("Planuj do 4mm", "PŁASZCZYZNA", 0, 0, 0, Fałsz, 0, Nic, 0)
    
    Part.SketchManager.InsertSketch Prawda
    Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
    
    SkPicture.SetSize 50 / 1000, 60 / 1000, Fałsz
    SkPicture.SetOrigin -25/1000, -20/1000
    
    Part.ClearSelection2 Prawda
    
    boolstatus = Part.Extension.SelectByID2("Szkic1", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
    
    boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
    Part.EditSuppress2
    
    boolstatus = Part.Extension.SelectByID2("AM_P01_HO", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
    boolstatus = Part.AddConfiguration2("AM_" & Nom_EsquisseAP, "", "", False, False, False, True, 256)
    
    Part.ClearSelection2 Prawda
    
Następny plik
Koniec subwoofera

Nie rozumiem, dlaczego na początku są dwa razy Set Part. Dla mnie otwierasz pokój i wypełniasz zmienną Część. Następnie mówisz mu, że zmienna Part jest równa bieżącemu plikowi.

Co do nazwy, to nie rozumiem problemu. Musisz zostawić punkt gdzie?

Trochę posprzątałam. ;-)

Należy zachować ostrożność, ponieważ należy używać deklaracji zmiennych obiektu z ostrożnością.

Zasadniczo pasuje to do powiedzenia w programie, nie wiem, co to będzie, może przejść od pioruna do słonia, to od ciebie zależy, czy sobie poradzisz...

Spróbuj tego: TESTOWAĆ

Dim swApp As Object
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim SkPicture As Obiekt
Dim System As Scripting.FileSystemObject       'System plików
Przyciemnij folder jako folder                            "Katalog"
Dim file As File                              ' file (część kolekcji plików)
dim Nom_Dossier As String                      ' Nazwa katalogu
dim Nom_Fichier As String                      ' Nazwa pliku
Przyciemnij Nom_EsquisseAV Jako ciąg                     ' Nazwa szkicu przedniego
Przyciemnij Nom_EsquisseAP Jako ciąg                     ' Nazwa szkicu po

Sub main()
    Ustaw swApp = Application.SldWorks
    Ustaw część = swApp.OpenDoc6("C:\Users\Hardware\Hardware.SLDPRT", 1, 0, "", longstatus, longwarnings)

    'Czytanie katalogu
    Nom_Dossier="C:\Użytkownicy\Sprzęt\Zdjęcia sprzętu\P01\HO\Test"
    Zestaw systemowy = CreateObject("Scripting.FileSystemObject")
    Ustaw folder = System.GetFolder(Nom_Dossier)

    'Kontroluj każdy plik w katalogu
    k = 2
    Dla każdego pliku w folderze Folder.Files
        Tworzenie obrazu szkicu i aktualizowanie wymiarów
        Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
        Nom_EsquisseAP = Lewo(Fichier.Name, Len(Fichier.Name) - 3)
        
        boolstatus = Part.Extension.SelectByID2("Planuj do 4mm", "PŁASZCZYZNA", 0, 0, 0, Fałsz, 0, Nic, 0)
        
        Part.SketchManager.InsertSketch Prawda
        Ustaw SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
        
        SkPicture.SetSize 50 / 1000, 60 / 1000, Fałsz
        SkPicture.SetOrigin -25/1000, -20/1000
        
        Part.ClearSelection2 Prawda
        
        boolstatus = Part.Extension.SelectByID2("Szkic1", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
        boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
        
        boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
        Part.EditSuppress2
        
        boolstatus = Part.Extension.SelectByID2("AM_P01_HO", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
        boolstatus = Part.AddConfiguration2("AM_" & Nom_EsquisseAP, "", "", False, False, False, True, 256)
        
        Part.ClearSelection2 Prawda
        
    Następny plik
Koniec subwoofera

Nazywam się: KT211.bmp

Jeśli wezmę KT211(.bmp)

Mój Nom_EsquisseAP jest równy KT211 (por. MsgBox)

Ale w tym właśnie tkwi problem, nazwa szkicu się nie zmienia

boolstatus = Part.Extension.SelectByID2("Szkic1", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)

 

Z drugiej strony, jeśli zostawię punkt KT211, to działa, nazwa szkicu jest rzeczywiście zmodyfikowana.

 

Modyfikacje to tylko część podwójnego zestawu i "pliki", które zastępujesz bezpośrednio folder.files (zamiast folder.files?), aby uniknąć tworzenia zestawu plików, który jest używany tylko raz. Innego nie widziałem xD

Czy możesz przesłać mi plik części, a także folder zawierający kilka obrazów?

Żebym mógł przetestować

Więc to nie będzie możliwe xD. Jestem inżynierem jądrowym.

 

Dla Twojej informacji wszystko jest w stanie usuniętym w moim pokoju, więc jeśli nie ma żadnych pokoi, jest tak samo.

Szybko utwórz folder z 3 obrazami i będzie działać w ten sam sposób.

1 polubienie

Rzeczywiście, działa poprzez stworzenie planu.

U mnie działa idealnie. Nazwa szkicu jest konfiguracją nie ma sensu.

 

Kod:

Dim swApp As Object
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim SkPicture As Obiekt
Dim System As Scripting.FileSystemObject       'System plików
Przyciemnij folder jako folder                           "Katalog"
Dim file As File                            ' file (część kolekcji plików)
dim Nom_Dossier As String                      ' Nazwa katalogu
dim Nom_Fichier As String                      ' Nazwa pliku
Dim Nom_EsquisseAV As String                   ' Nazwa szkicu frontowego
słońce Nom_EsquisseAP jako ciąg                   znaków ' nazwa szkicu po

Sub main()
    Ustaw swApp = Application.SldWorks
    Ustaw część = swApp.OpenDoc6("C:\Users\rmorel\Desktop\Part1.SLDPRT", 1, 0, "", longstatus, longwarnings)

    'Czytanie katalogu
    Nom_Dossier = "C:\Użytkownicy\rmorel\Pulpit\Test"
    Zestaw systemowy = CreateObject("Scripting.FileSystemObject")
    Ustaw folder = System.GetFolder(Nom_Dossier)

    'Kontroluj każdy plik w katalogu
    k = 2
    Dla każdego pliku w folderze Folder.Files
        Tworzenie obrazu szkicu i aktualizowanie wymiarów
        Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
        Nom_EsquisseAP = Lewo(Fichier.Name, Len(Fichier.Name) - 4)
        
        boolstatus = Part.Extension.SelectByID2("Planuj do 4mm", "PŁASZCZYZNA", 0, 0, 0, Fałsz, 0, Nic, 0)
        
        Part.SketchManager.InsertSketch Prawda
        Set SkPicture = Part.SketchManager.InsertSketchPicture(Nom_Fichier)
        
        SkPicture.SetSize 50 / 1000, 60 / 1000, Fałsz
        SkPicture.SetOrigin -25/1000, -20/1000
        
        Part.ClearSelection2 Prawda
        
        boolstatus = Part.Extension.SelectByID2("Szkic1", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
        boolstatus = Part.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, 1, 0, Nom_EsquisseAP)
        
        boolstatus = Part.Extension.SelectByID2(Nom_EsquisseAP, "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)
        Part.EditSuppress2
        
        boolstatus = Part.Extension.SelectByID2("AM_P01_HO", "KONFIGURACJE", 0, 0, 0, Fałsz, 0, Nic, 0)
        boolstatus = Part.AddConfiguration2("AM_" & Nom_EsquisseAP, "", "", Fałsz, Fałsz, Fałsz, Prawda, 256)
        
        Part.ClearSelection2 Prawda
        
    Następny plik
Koniec subwoofera

 

Nawiasem mówiąc, tutaj znalazłem błąd.

Jest to powiązane z moją zmienną k, aby przejść do innego szkicu, który podniosłem, ponieważ nie był już przydatny.

BŁĄD

- Tworzy szkic

- Zmieniono nazwę na

- Utwórz nowy szkic => będzie się on nazywał sketch2

 

- Tworzy szkic

- Zmieniono nazwę na

- Tworzy konfigurację

- Utwórz nowy szkic => będzie się on nazywał sketch1

 

Mówiąc prościej, konfiguracja pozwala na aktualizację, więc w przypadku szkicowanego kodu będziesz musiał wziąć pod uwagę, czy tworzysz konfiguracje, czy nie.

Ze swojej strony, bez przyrostu k i do nazywania "szkiców" & k

Z konfiguracją muszę tylko wywołać "sketch1"

 

Xd

Azrod

Witam

To wielka rzecz. Powodzenia każdemu, kto to zrobi :)

Wyobrażam sobie, że nie wszystkie zdjęcia mają takie same wymiary?

 

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

Zdecydowany

1 polubienie

W jaki sposób i w jaki sposób???

1 polubienie

Cały kod można znaleźć w dyskusjach...

Jeśli chodzi o omówienie jakiegoś szczegółu, nie wahaj się zadać pytania. Postaraj się być trochę bardziej precyzyjny niż to zrobiłeś xD.

 

Dla przypomnienia:

- Wstawianie obrazu szkicu

- Zmiana wymiaru obrazu szkicu po jego wstawieniu

- Wymiarowanie w zależności od rodzaju materiału

- Nazwa szkicu = Nazwa materiału

- Tworzenie konfiguracji

- Nazwa konfiguracji = nazwa sprzętu

- Pętla na wszystkich materiałach w pliku