Batch-Text "Suchen/Ersetzen durch" in einem Planordner

Hallo an alle

Ich habe einen Ordner mit vielen Zeichnungen und möchte einen Teil eines Textes (wie M6x30 auf M6x30 - 8.8) in Notizen ändern.

Ich wollte wissen, ob Sie wie in Word ein "Suchen / Ersetzen nach" für einen Zeichnungsordner durchführen können.

Makro, Mycadtool, ...

(Ich habe eine Suche im Forum durchgeführt, aber ohne Erfolg)

Vielen Dank im Voraus

Hallo

Ich kenne keine vorhandenen Tools, um dies zu tun, aber es ist sicherlich über ein Programm möglich, das automatisch aus einer Liste von Plänen erstellen sollte:

- Öffnen Sie den SLDDRW-Plan.

- Analysieren Sie alle Notizen in diesem Plan.

- Ändern Sie die Note, wenn = xxxxxxx.

- Speichern Sie diesen Plan.

- Fahren Sie mit dem nächsten Plan fort.

-etc...

Im Anhang finden Sie ein kleines Beispiel für ein Programm, das nach dem Start der SW und dem Laden eines SLDDRW-Plans gestartet werden soll. Mit diesem Programm können Sie nach allen Anmerkungen und Bemaßungen suchen, die auf einer Ebene vorhanden sind (jedoch nicht nach allen Toleranzen).

Herzliche Grüße


test-search.zip
2 „Gefällt mir“

Danke d.roger!

Ich habe mir Ihre ausführbare Datei angesehen.

Es funktioniert gut, um alles aufzulisten.

Zwei Bemerkungen:

  • Schade, dass wir nicht scrollen können, einige Informationen waren am unteren Rand des Ergebnisfensters nicht zugänglich
  • Wir können den Text nicht auswählen

Aber speziell für meine Bewerbung müsste ich alle Pläne (200) nacheinander öffnen. Sie können es genauso gut von Hand mit SW / Tools / Suchen/Ändern machen.

Ich hätte mir etwas Automatischeres gewünscht, aber ich glaube nicht, dass es so etwas gibt.

Ich muss in VB einsteigen.

Schönen Tag

Der Makrorekorder bietet dies

Dim swApp As Object

Dim Part As Object
Dim longstatus As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
'--------------------Find and Replace Annotations--------------------
Set swUtil = swApp.GetAddInObject("Utilities.UtilitiesApp")
Set swUtilFindReplaceAnnotations = swUtil.FindReplaceAnnotations
longstatus = swUtilFindReplaceAnnotations.InitPMPage()
'--------------------Block Recording--------------------
#If 0 Then
#End If
'--------------------UnBlock Recording------------------
swUtilFindReplaceAnnotations.FindText = "M6x30"
swUtilFindReplaceAnnotations.ReplaceText = "M6x30 - 8.8"
swUtilFindReplaceAnnotations.options = gtFraMatchCase Or gtFraWholeWord Or gtFraIncludeHiddenAnnotation
swUtilFindReplaceAnnotations.AnnotationFilter = gtFraAllTypes
Part.ClearSelection2 True
longstatus = swUtilFindReplaceAnnotations.ReplaceAll()
'--------------------Block Recording--------------------
#If 0 Then
#End If
'--------------------UnBlock Recording------------------
longstatus = swUtilFindReplaceAnnotations.Close()
End Sub

Um es in ein Programm einzufügen, das auf allen Ebenen eines Ordners schleift, stört mich andererseits das Dialogfeld, das am Ende des Makros erscheint :/

1 „Gefällt mir“

Hallo

Dieses Programm ist nur ein Beispiel, um nach den Notizen und Abmessungen eines Schusses zu suchen, Sie müssen das Öffnen und Schließen von SLDDRWs automatisieren, Notizen oder Abmessungen automatisch ändern, das Ergebnis in einer Protokolldatei verfolgen, usw.

Ihr Bedarf erfordert ein wenig Programmierkenntnisse (vba, vb.net oder C#), ist aber machbar. Um 200 Pläne zu verarbeiten, entspricht dies am Ende einer Bearbeitungszeit von etwa 20 bis 30 Minuten, aber vorher dauert es etwa 2 Stunden, um das Programm zu schreiben.

Herzliche Grüße

Hier gibt es bereits eine Funktion (in C#), um alle Noten eines Clips aufzulisten und den Wert "M6x30" durch "M6x30 - 8.8" zu ersetzen:

private void ListeAnnotations()
{

            DrawingDoc swDraw;
            langes j;
            lange Zählung;
            SolidWorks.Interop.sldworks. swView anzeigen ;
            swDraw = (DrawingDoc)swApp. ActiveDoc;
            swView = (SolidWorks.Interop.sldworks.View)swDraw. GetFirstView();
           
            while ((swView != null))
            {
                count = swView. GetNoteCount();
                if (Zählung > 0)
                {
                    object[] notes = (Objekt[])swView. GetNotes();
                    für (j = 0; j <= Noten.GetUpperBound(0); j++)
                    {
                        Hinweis swNote;
                        swNote = (Notiz)Notizen[j];
                        ZeichenfolgenwertNote = swNote. GetText();
                        Zeichenfolge newValueNote = WertNote;
                        if (valueHinweis.Enthält(M6x30))
                        {
                            newValueNote = newValueNote. Ersetzen(M6x30, M6x30 - 8.8);
                            swNote. SetText(newValueNote);
                        }
                    }
                }
                swView = (SolidWorks.Interop.sldworks.View)swView. GetNextView();
            }

}

Herzliche Grüße

1 „Gefällt mir“

Vielen Dank für Ihr Feedback und Ihr Engagement!

Ich schaue nach meinen mageren Programmierkenntnissen und meiner Verfügbarkeit.

Ich bin mit VB vertrauter, weil ich viele Makros für Excel gemacht habe, für C++ habe ich es in den 2000er Jahren in der Schule gesehen, also bin ich überhaupt nicht auf dem neuesten Stand, aber es bietet andere Möglichkeiten.

Ich werde mich von Ihrem Code inspirieren lassen, um eine Wahl zu treffen.

Schönes Wochenende

Hallo

Hier ist eine Programmversion, die es Ihnen ermöglicht:

- Beim Laden einer CSV-Datei, die eine Liste der zu analysierenden Dateien enthält, beachten Sie bitte, dass diese Liste wie die Datei formatiert sein muss, die mit dem Programm angehängt liste.csv.

- Öffnen Sie jede Datei in Solidworks.

- Analysieren Sie alle Notizen in jeder geladenen 2D-Datei.

- Ersetzen Sie den "Zu ändernden Text" durch den "Neuen Notiztext"

- Speichern Sie den geänderten Plan.

Es ist am besten, mit einer kleinen Menge an 2D-Dateikopien zu testen, um loszulegen.

Am Ende der Verarbeitung wird eine résultat.csv Datei im ausführbaren Ordner erstellt, die angibt, ob die Dateien verarbeitet oder verlegt wurden.

Wie beim Start des Programms angegeben, ist es unerlässlich , vor der Verarbeitung eine Sicherungskopie aller zu verarbeitenden Dateien zu erstellen.

Ich mag es nicht, eine Backup-Funktion von SolidWorks Dateien für andere Personen zu erstellen, weil ich als externe Person das Gefühl habe, dass ich im Änderungsmodus nicht in sie eingreifen muss, aber für den Betrieb dieses Programms war ich ein wenig dazu verpflichtet, also arbeiten Sie bitte an Kopien der Dateien und nicht an den Originalen.

Herzliche Grüße


modif-notes.zip
1 „Gefällt mir“

Danke d.roger,

Leider erlauben mir die Einschränkungen meiner Organisation nicht mehr, ausführbare Dateien zu verwenden (die erste wurde bestanden, die zweite jedoch nicht)

Also werde ich mich für VBA SW + Aufgabenplaner entscheiden.

Hut ab vor der Arbeit! Ich bin mir sicher, dass es 100% meines Bedarfs erfüllt hätte

Schönen Tag!

Andernfalls gibt es das Integrationstool in mycadtools, das Sie in einem Ordner installieren und starten können, ändern Sie einfach die angehängte Regel.

Und dafür sind keine Programmierkenntnisse notwendig.

Ändern Sie einfach die Bedingung, die ich hier für alle Dokumente vom Typ Gliederung gesetzt habe.

Dann, um den Vorgang hier zu ändern, um den Text einer Notiz durch eine andere Notiz zu ersetzen. Notiz in angehängter Regel gesucht M6x30 Alt-Text M6x30 -8.8

Und Auswahl der Blätter Ich habe alle Blätter ausgewählt.

Sie können es sehr einfach anpassen und diese Regel dann auf eine ganze Datei, auf eine ganze Baugruppe oder ein anderes anwenden, je nach Ihren Bedürfnissen.

 


modification_de_note.mcact
1 „Gefällt mir“