| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Erfolgreiches CAD-Datenmanagement: Weniger suchen, mehr konstruieren., ein Webinar am 29.07.2025
|
Autor
|
Thema: Problem mit Makro zum Änderungsindizes löschen (1651 / mal gelesen)
|
Conrad Mitglied Dipl.-Ing. (FH)
 
 Beiträge: 282 Registriert: 20.12.2002 Windows 11 SolidWorks 2023/Sp5.0 12th Gen Intel(R) Core(TM) i7-12700 2.10 GHz 32 GB RAM 64-Bit proALPHA 9.3<P>Linux basierte file server
|
erstellt am: 19. Mai. 2017 11:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo, nach meinem SWX-API Kurs, habe ich das bei uns vorhandene Makro zum Löschen der Änderungsindices auf der Zeichnung erweitert. jetzt wird auch das Änderungs-Schriftfeld geleert! Jetzt zum Problem: Ab und zu kommt es vor, das das Makro nichts macht. Sprich als ob es gar nicht ausgeführt wird. Es kommt keine Fehlermeldung vom Debugger oder ähnliches. Es ist auch kein Muster erkennbar z.B. immer bei einer mehrseitigen Zeichnung, usw. tritt das Problem auf) Führ ich das Makro in Einzelschritten aus, funktioniert es, und danach auch wieder problemlos über die Schaltfläche in SWX! Ich steh vor einem Rätsel  Vielleicht weiß ja jemand an was es liegen kann. Hier der Code:
Code: 'Dieses Makro löscht Änderungsindices auf der Zeichnung und leert die Änderungszeilen im Schriftkopf! 'Dies funtioniert auch bei mehreren Zeichnungsblättern!Option Explicit Public Const Leer = " " Dim swApp As SldWorks.SldWorks 'Anwendung Dim swDraw As SldWorks.DrawingDoc 'Zeichnungsdokument Dim swView As SldWorks.View 'Ansicht Dim boolstatus As Boolean Dim Textelement As SldWorks.Annotation Dim Text As String 'Änderungsnummer Dim Umrandung As Long 'Kreis um die Änderungsnummer Dim swNote As SldWorks.Note 'Text (hier die zu löschenden Indices) Dim BlattnamenArr As Variant 'Array mit den Blattnamen Sub main() Set swApp = Application.SldWorks Set swDraw = swApp.ActiveDoc 'Ermitteln der vorhandenen Ansichten und Durchlauf durch diese Dim ib As Long 'ib = Zähl-Nummer des Arrays der Zeichnungsblätter BlattnamenArr = swDraw.GetSheetNames() For ib = LBound(BlattnamenArr) To UBound(BlattnamenArr) boolstatus = swDraw.ActivateSheet(BlattnamenArr(ib)) 'Erst werden die Indices gelöscht. 'Holt erste Ansicht: swDraw.EditSheet Set swView = swDraw.GetFirstView Do While Not swView Is Nothing 'Durchsucht die Ansicht nach Texten mit Kreisumrandung und markiert sie. Set swNote = swView.GetFirstNote Do While Not swNote Is Nothing Umrandung = swNote.GetBalloonStyle Text = swNote.GetText If Umrandung = 1 Then Select Case Text Case "A" To "Z", "a" To "z" 'Erfasst auch zweistellige Indices und überschriebene ohne $PRP Set Textelement = swNote.GetAnnotation() boolstatus = Textelement.Select2(True, 1) End Select End If swDraw.RemoveGroups 'Löst Gruppen auf, in denen Indices enthalten sind Set swNote = swNote.GetNext Loop 'Löscht alle markierten Texte und springt zur nächsten Ansicht, bis keine mehr übrig ist swDraw.EditDelete Set swView = swView.GetNextView Loop Next 'Jetzt beginnt der Teil der das "Änderungs"-Schriftfeld leert! Dim CusPropMgr As SldWorks.CustomPropertyManager Dim EigenschaftsnameArr As Variant 'Array für alle Dokumenteigenschaften Dim Addstatus As Long 'Rückgabewert für das Schreiben der Dateieigenschaft Dim i As Long 'i = Zähl-Nummer des Arrays der Dok.-Eigenschften Set CusPropMgr = swDraw.Extension.CustomPropertyManager("") 'CusPropMgr erst mal auf "Null" setzen EigenschaftsnameArr = CusPropMgr.GetNames() 'Auslesen der Dateieigenschaften For i = LBound(EigenschaftsnameArr) To UBound(EigenschaftsnameArr) 'Ahnzahl der Dateieigenschaften If InStr(EigenschaftsnameArr(i), "Aenderungs") Then 'Prüft ob Aenderung in der Eigenschaft steht ' Löschen der "alten Einträge" --> überschreiben mit Leerzeichen Addstatus = CusPropMgr.Add3(EigenschaftsnameArr(i), swCustomInfoText, Leer, swCustomPropertyReplaceValue) End If Next 'Aktiviern von Blatt1 boolstatus = swDraw.ActivateSheet(BlattnamenArr(0)) 'Neuaufbau der Zeichnung boolstatus = swDraw.ForceRebuild3(False) End Sub
------------------ Grüße aus dem Allgäu Conrad
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau

 Beiträge: 2800 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 19. Mai. 2017 14:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Conrad
Hallo Conrad, kannst du auch eine Beispielzeichnung Anhänge an Hand dieser man es nachstellen kann? Weil wenn ich mir den Code so anschaue sieht er nicht so aus als ob er bei jedem beliebigen Zeichnungsdokument irgendetwas macht sonder schon sehr speziel auf euere Dokumente / Vorgehensweisen ausgelegt ist. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Conrad Mitglied Dipl.-Ing. (FH)
 
 Beiträge: 282 Registriert: 20.12.2002 Windows 11 SolidWorks 2023/Sp5.0 12th Gen Intel(R) Core(TM) i7-12700 2.10 GHz 32 GB RAM 64-Bit proALPHA 9.3<P>Linux basierte file server
|
erstellt am: 22. Mai. 2017 08:16 <-- editieren / zitieren --> Unities abgeben:         
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau

 Beiträge: 2800 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 23. Mai. 2017 10:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Conrad
Hallo Conrad, also ich konnte bis jetzt auf den ersten Blick keinen groben Fehler im Ablauf endecken, nur das dein Select Case etwas sinnfrei ist, da er alle Texte mit der Umrandung Kreis die mit einem Buchstaben beginnen löscht. Wenn du also auch andere Texte hättest die mit Kreis umrandet sind würde er diese auch löschen. Wenn er dir die Symbole nicht löscht kannst du mal prüfen ob die Bezugshinweise die Umrandung haben oder nur die Texte in den Bezugshinweisen, weil wenn die Texte in den Bezugshinweisen natürlich die Umrandung haben löscht er diese nicht. OT: Hast du mal überlegt mit der Versionstabelle zu arbeiten, weil hier könntest du dir dann das Macro sparen. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Conrad Mitglied Dipl.-Ing. (FH)
 
 Beiträge: 282 Registriert: 20.12.2002 Windows 11 SolidWorks 2023/Sp5.0 12th Gen Intel(R) Core(TM) i7-12700 2.10 GHz 32 GB RAM 64-Bit proALPHA 9.3<P>Linux basierte file server
|
erstellt am: 29. Mai. 2017 08:02 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd, das Problem ist das er ja wie oben beschrieben: Zitat: Ab und zu kommt es vor, das das Makro nichts macht. Sprich als ob es gar nicht ausgeführt wird......Führ ich das Makro in Einzelschritten aus, funktioniert es, und danach auch wieder problemlos über die Schaltfläche in SWX!
Zur Versionstabelle: hab ich mal probiert passt aber mit unserem PDM/ Arbeitsweise nicht ganz zusammen ------------------ Grüße aus dem Allgäu Conrad
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
  
 Beiträge: 729 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. Mai. 2017 08:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Conrad
Keine Ahnung, ob es was hilft, aber probiere mal, am Ende von deinem Makro dieses Makro-Entlade-Sub aufzurufen: Code:
Sub Unload_me() Dim swApp As Object Dim boolstatus As Boolean Dim myMacroPathName As String Dim runMacroError As Long Set swApp = CreateObject("SldWorks.Application") myMacroPathName = swApp.GetCurrentMacroPathName boolstatus = swApp.RunMacro2(myMacroPathName, "tools", "ciao", swRunMacroUnloadAfterRun, runMacroError)End Sub Sub ciao() 'nix tun ausser verschwinden ... End Sub
Gruß, Jens ------------------ CSWA, CSWP, CSWPA-SM & -SU =) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau

 Beiträge: 2800 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 29. Mai. 2017 09:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Conrad
Hallo, noch eine allgemeine Frage zu deinem Problem, ist das Problem evtl. rechnergebunden oder tritt das auf mehreren Rechnern auf? Du könntest auch mal ein paar Debug.Print einbauen und wenn er mal "nichts" macht in den Macroeditor wechseln und schauen ob du so die Problemstelle lokalisieren kannst. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Conrad Mitglied Dipl.-Ing. (FH)
 
 Beiträge: 282 Registriert: 20.12.2002 Windows 11 SolidWorks 2023/Sp5.0 12th Gen Intel(R) Core(TM) i7-12700 2.10 GHz 32 GB RAM 64-Bit proALPHA 9.3<P>Linux basierte file server
|
erstellt am: 29. Mai. 2017 09:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo, das Problem tritt sporadisch bei mehreren Rechnern auf. Zitat: Debug.print
das werde ich mal bei Gelegenheit einbauen. melde mich wieder wenn ich was herausgefunden habe. ------------------ Grüße aus dem Allgäu Conrad
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |