Makro do dodawania właściwości zgodnie z grubością arkusza

Cze wszystkim

Będę potrzebował pomocy, pracuję nad tym od dłuższego czasu, ale nie udaje mi się ruszyć do przodu.

Chciałbym utworzyć makro, które automatycznie wypełniałoby właściwości listy spawanych części pewnymi określonymi właściwościami. Oto algorytm, który chciałbym, aby makro wykonało.

- Wykryj na liście spawanych części, które są arkuszami

- Jeśli jest to blacha, odzyskaj grubość blachy i materiału.

- Utwórz dwie właściwości "CODE" i "DETAIL", których wartości będą się różnić w zależności od grubości blachy i materiału (np. dla blachy 2mm ze stali S235: CODE = 02156 i DETAIL=blacha o grubości 2mm - dla blachy 5mm ze stali nierdzewnej: CODE = 02582 i DETAIL=Blacha ze stali nierdzewnej o grubości 5mm.

Dziś mogę zrobić makro, które tworzy te właściwości tylko w pierwszym artykule, ale bez przypisywania wartości zmiennej (niewiele mogę zrobić w skrócie).

Wiem, że dużo pytam, ale zaoszczędziłoby mi to dużo czasu.

Z góry dzięki,

Moe

Dla twojej informacji, nadal korzystam z SolidWorks 2012

2 polubienia

Dobry wieczór, bez makro trudno będzie to poprawić! Czy możesz opublikować to w pliku tekstowym?

Myślę jednak, że rozsądniej byłoby rozłożyć swoje problemy na czynniki pierwsze, aby zadać kilka pytań: będzie to jaśniejsze dla wszystkich i będziesz miał o wiele więcej odpowiedzi, zamiast prosić o kompletne gotowe makro!

Pierwsze pytanie brzmi: jak sprawdzić,  czy część jest wykonana z blachy za pomocą sterowników PLC?

1 polubienie

Witam

Tak, wyślij nam już wykonane makro, abyśmy mogli łatwiej prowadzić.

A celem forum jest też prosić o wiele, a potem dużo dawać :)

Dziękujemy za Twoją opinię.

Tutaj jest dołączone makro w tym momencie.

Wsparcie Mycad właśnie mi powiedziało, że nie ma możliwości filtrowania według tego, czy jest to blacha, czy element spawany mechanicznie. Myślę jednak, że musi być możliwe filtrowanie według innej właściwości (przykład: gdy tworzysz arkusz, SW tworzy właściwość "Folds", której nie tworzy w innych przypadkach).


20160125_-_copie.swp

Witam

Staram się robić dokładnie to samo.

W rzeczywistości posiadamy arkusze wykonane ze stali nierdzewnej 304L, SUROWEJ STALI NIERDZEWNEJ 304L, stali nierdzewnej 316L i stali nierdzewnej 316L RAW o grubości 1, 1,5, 2, 3 i 5 mm z określonym KODEM dla każdego arkusza.

Chciałbym mieć możliwość uruchomienia makra, które automatycznie  dodaje właściwość "CODE" do korpusu "Arkusza" na podstawie wybranej grubości i materiału.

Czy od tego czasu udało Ci się uruchomić makro?

Z góry dzięki,

Lionel

Witam. Wypróbuj poniższy kod.

Uwaga: Mam skonfigurowany SolidWorks w języku angielskim, więc konieczne będzie zastąpienie "Grubość blachy" i "Materiał" grubościami i właściwościami materiału części .

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swFeat As SldWorks.Feature
    Dim custPrpMgr As SldWorks.CustomPropertyManager
    Dim myThickness As String
    Dim myMaterial As String
    Dim myCode As String
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    If swModel Is Nothing Then Exit Sub
    Set swFeat = swModel.FirstFeature
    While Not swFeat Is Nothing
        If swFeat.GetTypeName2 = "CutListFolder" Then
            Set custPrpMgr = swFeat.CustomPropertyManager
            custPrpMgr.Get2 "Sheet Metal Thickness", "", myThickness
            Debug.Print "Epaisseur: " & myThickness
            custPrpMgr.Get2 "Material", "", myMaterial
            Debug.Print "Materiel: " & myMaterial
            Select Case myMaterial
                Case "INOX 304L"
                    Select Case myThickness
                        Case "1"
                            myCode = "0001"
                        Case "1.5"
                            myCode = "0002"
                        Case "2"
                            myCode = "0003"
                        Case "3"
                            myCode = "0004"
                        Case "5"
                            myCode = "0005"
                    End Select

                Case "INOX 304L BRUT"
                    Select Case myThickness
                        Case "1"
                            myCode = "0011"
                        Case "1.5"
                            myCode = "0012"
                        Case "2"
                            myCode = "0013"
                        Case "3"
                            myCode = "0014"
                        Case "5"
                            myCode = "0015"
                    End Select
                Case "INOX 316L"
                    Select Case myThickness
                        Case "1"
                            myCode = "0021"
                        Case "1.5"
                            myCode = "0022"
                        Case "2"
                            myCode = "0023"
                        Case "3"
                            myCode = "0024"
                        Case "5"
                            myCode = "0025"
                    End Select
                
                Case "INOX 316L BRUT"
                    Select Case myThickness
                        Case "1"
                            myCode = "0031"
                        Case "1.5"
                            myCode = "0032"
                        Case "2"
                            myCode = "0033"
                        Case "3"
                            myCode = "0034"
                        Case "5"
                            myCode = "0035"
                    End Select
            End Select
            Debug.Print "Code: " & myCode
            Debug.Print
            custPrpMgr.Delete "CODE"
            custPrpMgr.Add2 "CODE", swCustomInfoType_e.swCustomInfoText, myCode
        End If
        Set swFeat = swFeat.GetNextFeature
    Wend
End Sub

 

 

 

Dzięki, próbowałem... Stworzył moją właściwość "CODE", ale nic wartościowego.

Moje nieruchomości to:

Nazwa właściwości: "Grubość blachy" dla grubości

Nazwa właściwości: "Materiał" dla materiału

I chciałbym, aby utworzył właściwość, której nazwa brzmiałaby "GPAO_BRUT" z moimi różnymi kodami jako wartością.

Z góry dzięki,

Lionel

W porządku, to działa... Wybrałem złą zmienną dla mojego tematu.

Dziękuję bardzo.