| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| 3DEXPERIENCE Conference 2024 | München, eine Veranstaltung am 16.10.2024
|
Autor
|
Thema: Größe von Abwicklung und Blechstärke auslesen (Makro) (1515 / mal gelesen)
|
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 26. Nov. 2021 14:53 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich bin seit einigen Tagen dabei ein Makro zu schreiben welches die Bauteil/Baugruppengröße automatisch ausliest und über eine Eigenschaft an die Zeichnung übergibt. Funktioniert soweit alles einwandfrei, außer das ich noch keinen Weg gefunden habe das Ganze auch für Blechteile umzusetzen. Bei Baugruppen oder "normalen" Einzelteilen bediene ich mich des Begrenzungsrahmens von SWX was auch gut funktioniert. Bei Blechteilen kann ich diesen aber nicht verwenden, da mich die Größe der Abwicklung interessiert und nicht des gekanteten Teils. Meine Idee war nun entweder, die Blechstärke aus dem Blech-Feature auszulesen und die Größe der Abwicklung über die "Rahmen1" Skizze zu holen oder alternativ könnte ich auch versuchen die Eigenschaften aus dem Zuschnitt auszulesen z.B.: "SW-Rahmenlänge@@@Sheet<1>@Blech.SLDPRT". Leider hab ich für beides noch keinen vernüftigen Weg gefunden. Kleine Info am Rand. In unserer Firma gibt es immer nur einen Blechkörper pro sldprt. Vielen Dank für eure Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
goofy_ac Mitglied Produktentwickler
Beiträge: 1144 Registriert: 20.06.2006 Dell Precision 7740; i7/9850@2,6GHz Quadro RTX5000; 32GB; Win10x64 prof. SWX2022 SP5; dbWorks R20
|
erstellt am: 26. Nov. 2021 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für R3vo
hi R3vo ich bin in Makros nicht unterwegs, aber: Wenn Du ins Blechteil gehst, die Abwicklung startest, bekommst Du einen umschreibenden Rahmen als minimale Zuschnittgröße angezeigt. Dafür müsssen die Skizzen eingeblendet sein - sollte also möglich sein - ich kann Dir nur nicht sagen, hinter welchen Variablen / Parametern sich diese Daten verstecken... Viele Grüße - Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 26. Nov. 2021 17:09 <-- editieren / zitieren --> Unities abgeben:
Das ist richtig. Leider finde ich keinen Weg auf die Skizze zuzugreifen. Ich werde jetzt vorläufig mit den Eigenschaften der Zuschnittsliste arbeiten. Code: If (flatPatternFolder.GetFlatPatternCount = 1) Then ' For SWX to evaluate the strings they need to be wrapped in two quotes e.g. Chr(34) propertyLengthSheetConfigName = Chr(34) & "SW-Rahmenlänge@@@Sheet<1>@Blech.SLDPRT" & Chr(34) propertyWidthSheetConfigName = Chr(34) & "SW-Rahmenbreite@@@Sheet<1>@Blech.SLDPRT" & Chr(34) propertyThicknessSheetConfigName = Chr(34) & "SW-Blechdicke@@@Sheet<1>@Blech.SLDPRT" & Chr(34) ' Add custom property defined in propertyDimensionConfigName and propertyLengthConfigName status = swPropManager.Add3(propertyDimensionConfigName, swCustomInfoText, propertyThicknessSheetConfigName & "x" & propertyWidthSheetConfigName & "x" & propertyLengthSheetConfigName, swCustomPropertyDeleteAndAdd) status = swPropManager.Add3(propertyLengthConfigName, swCustomInfoText, propertyThicknessSheetConfigName, swCustomPropertyDeleteAndAdd) Exit Sub End If
Die trage ich dann als Bauteileigenschaften ein. Nicht wirklich flexible aber es funktioniert erstmal. [Diese Nachricht wurde von R3vo am 26. Nov. 2021 editiert.] [Diese Nachricht wurde von R3vo am 26. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tjaard Mitglied
Beiträge: 26 Registriert: 14.06.2021
|
erstellt am: 26. Nov. 2021 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für R3vo
Moin R3vo, mir fällt da noch ganz spontan - sogar ohne Makro - folgender Weg ein: Rechtsklick in die Zeichnungsansicht -> Beschriftung -> Zuschnittslisteneigenschaften Dort wird dann unter anderem auch die Blechstärke, Rahmenlänge und -breite in einem Bezugshinweis angegeben. So kannst Du auf die Zuschnittslisteneigenschaften zugreifen, ohne dass Du diese Informationen zunächst in die Dateieigenschaften trägst. Ich weiß natürlich nicht, inwiefern ihr das Ganze automatisieren wollt oder Ähnliches - das aber nur als Info, falls Du die Funktion noch nicht kennst. Schönen Abend noch!
------------------ Mit besten Grüßen aus Ostfriesland, Tjaard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 27. Nov. 2021 09:31 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
Beiträge: 727 Registriert: 17.01.2007 SWX 2023 SP5 Draftsight 2023 Win 11 Enterprise Intel i7-13700 2.10 GHz 64GB RAM Nvidia RTX A2000 12GB SWx EPDM AP+ CSWE 2018
|
erstellt am: 29. Nov. 2021 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für R3vo
Schau mal, ob dir das was hilft: Gruß, Jens Code: Sub main()Dim swApp As SldWorks.SldWorks Dim swDrawing As ModelDoc2 Dim swPart As ModelDoc2 Dim swCustPropMgr As CustomPropertyManager Dim Feature As Feature Dim swView As View Dim str_RefModelName As String Dim str_Desc As String Dim str_Value As String Dim str_ResolvedValue As String Dim str_Rahmenlänge As String Dim str_Rahmenbreite As String Dim arr_BlechProps(3) As String Set swApp = Application.SldWorks Set swDrawing = swApp.ActiveDoc Set swView = swDrawing.GetFirstView Set swView = swView.GetNextView 'Modell holen und Blecheigenschaften schreiben str_RefModelName = swView.GetReferencedModelName Set swPart = swApp.OpenDoc(str_RefModelName, swPart.GetType) swApp.ActivateDoc swPart.GetTitle Set swCustPropMgr = swPart.Extension.CustomPropertyManager(Empty) 'Eigenschaftsarray füllen arr_BlechProps(0) = "Biegeradius" arr_BlechProps(1) = "Blechdicke" arr_BlechProps(2) = "Biegezugabe" arr_BlechProps(3) = "Biegungen" 'Zuschnittsliste suchen Set Feature = swPart.FirstFeature Do While Not Feature Is Nothing If Feature.GetTypeName() = "CutListFolder" Then 'Elemente vom Typ Zuschnittliste If Feature.CustomPropertyManager.GetType2("Rahmenbreite") > 0 Then 'Benutzerdefinierte Eigenschaft Rahmenbreite ist vorhanden = Blechelement For i = 0 To UBound(arr_BlechProps) Feature.CustomPropertyManager.Get2(arr_BlechProps(i), str_Value, str_ResolvedValue) swCustPropMgr.Delete arr_BlechProps(i) swPart.AddCustomInfo2 arr_BlechProps(i), swCustomInfoText, str_Value Next i 'Zuschnittsmaße Feature.CustomPropertyManager.Get2("Rahmenlänge", str_Rahmenlänge, str_ResolvedValue) Feature.CustomPropertyManager.Get2("Rahmenbreite", str_Rahmenbreite, str_ResolvedValue) swCustPropMgr.Delete "Zuschnittsmaße" swPart.AddCustomInfo2 "Zuschnittsmaße", swCustomInfoText, str_Rahmenlänge & " x " & str_Rahmenbreite End If End If Set Feature = Feature.GetNextFeature Loop 'Speichern swPart.Save swApp.ActivateDoc swDrawing.GetTitle End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 29. Nov. 2021 16:23 <-- editieren / zitieren --> Unities abgeben:
|
Locke79 Mitglied Arbeitsvorbereitung
Beiträge: 12 Registriert: 08.03.2022
|
erstellt am: 18. Mrz. 2022 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für R3vo
Hallo Jens, ich wollte dieses Makro nun auch mal ausprobieren, aber bei mir zeigt es immer Fehler an in diesem Bereich: Feature.CustomPropertyManager.Get2 Ich kenne mich halt echt wenig aus mit VBA was muss man da ändern? Grüße Locke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
R3vo Mitglied staatl. gepr. Techniker, Konstrukteur
Beiträge: 125 Registriert: 03.11.2021 CAD: SOLIDWORKS 2024 SP3.1 PDM: SpeedyPDM 7.5.7 ------------------------ CPU: Intel Core i7-10700 @ 2.90GHz GPU: NVIDIA Quadro RTX4000 RAM: 64 GB Datenträger: SSD
|
erstellt am: 18. Mrz. 2022 18:12 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Locke79: Hallo Jens,ich wollte dieses Makro nun auch mal ausprobieren, aber bei mir zeigt es immer Fehler an in diesem Bereich: Feature.CustomPropertyManager.Get2 Ich kenne mich halt echt wenig aus mit VBA was muss man da ändern? Grüße Locke
Code: Sub main() Dim swApp As SldWorks.SldWorks Dim swDrawing As ModelDoc2 Dim swPart As ModelDoc2 Dim swCustPropMgr As CustomPropertyManager Dim Feature As Feature Dim str_Value As String Dim str_ResolvedValue As String Dim str_Rahmenlänge As String Dim str_Rahmenbreite As String Dim status As Boolean Dim status_int As Integer Dim arr_BlechProps(3) As String Set swApp = Application.SldWorks Set swPart = swApp.ActiveDoc Set swCustPropMgr = swPart.Extension.CustomPropertyManager(Empty) 'Eigenschaftsarray füllen arr_BlechProps(0) = "Biegeradius" arr_BlechProps(1) = "Blechdicke" arr_BlechProps(2) = "Biegezugabe" arr_BlechProps(3) = "Biegungen" 'Zuschnittsliste suchen Set Feature = swPart.FirstFeature Do While Not Feature Is Nothing If Feature.GetTypeName() = "CutListFolder" And Feature.CustomPropertyManager.GetType2("Rahmenbreite") > 0 Then 'Elemente vom Typ Zuschnittliste For i = 0 To UBound(arr_BlechProps) status_int = Feature.CustomPropertyManager.Get6(arr_BlechProps(i), False, str_Value, str_ResolvedValue, status, False) swCustPropMgr.Delete arr_BlechProps(i) swPart.AddCustomInfo2 arr_BlechProps(i), swCustomInfoText, str_Value Next i 'Zuschnittsmaße status_int = Feature.CustomPropertyManager.Get6("Rahmenlänge", False, str_Rahmenlänge, str_ResolvedValue, status, False) status_int = Feature.CustomPropertyManager.Get6("Rahmenbreite", False, str_Rahmenbreite, str_ResolvedValue, status, False) swCustPropMgr.Delete "Abmessung" swPart.AddCustomInfo2 "Abmessung", swCustomInfoText, str_Rahmenbreite & " x " & str_Rahmenlänge End If Set Feature = Feature.GetNextFeature Loop End Sub
Versuchs mal hiermit. Voraussetzung ist ein geöffnetes und aktives Blechbauteil. Die Werte siehst du dann im Eigenschaftenfenster. [Diese Nachricht wurde von R3vo am 18. Mrz. 2022 editiert.] [Diese Nachricht wurde von R3vo am 18. Mrz. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Locke79 Mitglied Arbeitsvorbereitung
Beiträge: 12 Registriert: 08.03.2022
|
erstellt am: 19. Mrz. 2022 08:14 <-- editieren / zitieren --> Unities abgeben: Nur für R3vo
|
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 23. Mrz. 2022 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für R3vo
|