To makro pobiera szablon użyty w rysunku, a także włączoną konfigurację komponentu
Otwarcie pobiera właściwość testową związaną z konfiguracją
i zapisuje plan jako plik PDF w tej samej ścieżce, co komponent z wartością właściwości
Mam nadzieję, że odpowiedziałem na Twoją prośbę
Opcja jawna Dim swApp jako SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDraw jako SldWorks.DrawingDoc Dim cusPropMgr As SldWorks.CustomPropertyManager Dim swView As SldWorks.View Dim swModelDocExt As SldWorks.ModelDocExtension Przyciemnij konfigurację jako SldWorks.Configuration Dim namewłaściwości jako ciąg Ciemne błędy tak długo Przyćmione ostrzeżenia tak długo Dim configname jako ciąg Dim lRetVal tak długo Dim ValOut As String (Ciąg sygnałowy) Dim ResolvedValOut As String Dim wasResolved As Boolean Dim strRefModelPath As String (Ciąg znaków) Dim NamePlan As Ciąg Przyciemnij ścieżkę jako ciąg
Sub main() Ustaw swApp = Application.SldWorks Ustaw swModel = swApp.ActiveDoc Jeśli swModel.GetType = 3, to Ustaw swDraw = swModel Ustaw swView = swDraw.GetFirstView NamePlan = swModel.GetTitle PĘTLA, ABY POBRAĆ MODEL Zrób Póki Nie SwView To Nic strRefModelPath = swView.GetReferencedModelName 'pobiera pełną ścieżkę do pliku configname = swView.ReferencedConfiguration 'pobiera konfigurację widoku Jeśli strRefModelPath <> "" , to path = Left(strRefModelPath, InStrRev(strRefModelPath, "\") - 1) 'pobiera ścieżkę bez nazwy pliku swApp.ActivateDoc (strRefModelPath) Ustaw swModel = swApp.ActiveDoc swModel.ShowConfiguration2 (configname) wyświetla konfigurację planu Set config = swModel.GetActiveConfiguration 'pobiera aktywną konfigurację komponentu Ustaw cusPropMgr = config. CustomPropertyManager Nameproperties = CopyCustProps("TEST") pobiera wartość właściwości testu, która jest specyficzna dla konfiguracji Wyjdź z Do Zakończ jeżeli: Ustaw swView = swView.GetNextView Pętla
Inaczej MsgBox "Proszę włączyć rysunek", vbInformation, "Błąd typu dokumentu" Zakończ jeżeli: Ponowna aktywacja planu swApp.ActivateDoc NamePlan Ustaw swModel = swApp.ActiveDoc Ustaw swModelDocExt = swModel.Extension Definicja nazwy rejestracyjnej noma NamePlan=ścieżka&\"&WłaściwościNazwy&".pdf" Rejestracja w formacie PDF wasResolved = swModelDocExt.SaveAs(NamePlan, 0, swSaveAsOptions_e.swSaveAsOptions_Silent, Nothing, Lerrors, Lwarnings) Koniec subwoofera
Funkcja CopyCustProps(PropertyName) jako ciąg znaków lRetVal = cusPropMgr.Get5(PropertyName, False, ValOut, ResolvedValOut, wasResolved) CopyCustProps = ResolvedValOut Zakończ funkcję
Taka sama prośba jak d.roger. Jeśli właściwość jest używana w planie, łatwiej jest zapętlić notatki kartusza niż pobrać informacje za pomocą widoku i dołączonego do niego 3D (tak długo, jak istnieją różne widoki z dołączonymi różnymi modelami, szybko się komplikuje).
Hurt:
Const cProp = "$PRPSHEET:""ENREGISTREMENT"""
Dim sFilename as string
Set swDraw = swModel
Set swView = swDraw.GetFirstView 'Active le fond de plan
Set swNote = swView.GetFirstNote
swModel.ClearSelection2 (True)
Do While Not swNote Is Nothing
Set swAnn = swNote.GetAnnotation
If swNote.PropertyLinkedText = cProp Then
sFilename = swNote.GetText 'ajouter le traitement pour formater correctement le nom d'enregistrement
End If
Set swNote = swNote.GetNext
Loop
gdm Mam błąd "kompilacja: zmienna nie zdefiniowana" z "swSaveAsOptions_e"
Oczywiście d.roger poniżej części kodu do rejestracji.
Cyril.f tak właściwość i użyta na rysunku, utworzyłem notatkę z nazwą atrybutu "INFO_QUALITE05"
Ustaw swApp = Application.SldWorks Ustaw część = swApp.ActiveDoc ' Dodano kontrolę nad poprawnym plikiem Jeśli część jest niczym, to MsgBox "Żadne pliki nie są obecnie otwarte." Wyjdź Sub ' Jeśli żaden model nie jest aktualnie załadowany, wyjdź Zakończ jeżeli: ' Określ typ dokumentu. Jeśli dokument jest rysunkiem, wyślij wiadomość do użytkownika. If (Part.GetType <> 3) then '1Part 2Assembly 3Document MsgBox "To makro ma zastosowanie tylko do rysunku" Wyjdź z subwoofera Zakończ jeżeli: Plik = Part.GetPathName if plik = "" to MsgBox "To makro wymaga wcześniejszego zapisania pliku" Wyjdź z subwoofera Zakończ jeżeli:
Ustaw swModelDocExt = Part.Extension Ustaw swExportPDFData = swApp.GetExportFileData(1) Ustaw swdraw = Część vSheetNames = swdraw. GetSheetNames (Nazwy arkuszy) Słońce i tak długo Słońce j tak długo j = 0 ReDim strSheetName(UBound(vSheetNames)) Dla i = 0 Do UBound(vSheetNames) Jeśli InStr(vSheetNames(i), "Plan") <> 0, to strSheetName(j) = vSheetNames(i) j = d + 1 Zakończ jeżeli: Następny varSheetName = strSheetName Jeśli swExportPDFData to nic, to MsgBox "nic" boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, nazwa_zmiennej_arkusza)
'Dodawanie do właściwości części Ustaw swApp = Application.SldWorks Ustaw swModel = swApp.ActiveDoc Ustaw swdraw = swModel Ustaw swview = swdraw. Pobieranie pierwszego widoku Ustaw swview = swview. GetNextView (Pobieranie następnego) v = swview. GetVisibleComponents (PobieranieWidocznych) Ustaw kompozycję = v(0) Ustaw swmod = komp. Pobierz dokument ModelDoc2 Nazwa produktu = swmod. GetCustomInfoNames (DostaćCustomInfoNames) Ustaw swCustPropMgr = swModel.Extension.CustomPropertyManager("") Debug.Print swmod. GetCustomInfoValue(config, "OPIS")
Dziękuję gdm, jest OK dla tego fragmentu, zastępując go przez 1 w kodzie, w którym jestem pod Solidworks 2013.
Istnieje inny błąd w czasie wykonywania "438": Właściwość lub metoda nie jest obsługiwana ^przez ten obiekt na poziomie RetVal = cusPropMgr.Get5(PropertyName, False, ValOut, ResolvedValOut, wasResolved)