Batch "zoeken/vervangen door" tekst in een planmap

Hallo allemaal,

Ik heb een map met veel tekeningen en ik wil graag een deel van een tekst (zoals M6x30 naar M6x30 - 8.8) in notities veranderen.

Ik wilde weten of je, net als in Word, een "zoeken / vervangen door" kunt doen op een tekenmap?

Macro, Mycadtool, ...

(Ik heb een zoekopdracht op het forum, maar zonder succes)

Bij voorbaat dank

Hallo

Ik weet niet van een bestaande tools om dit te doen, maar het is zeker mogelijk via een programma dat automatisch uit een lijst met plannen:

- Open het SLDDRW-abonnement.

- Analyseer alle notities in dit plan.

- Wijzig het cijfer als = xxxxxxx.

- Sla dit plan op.

- Ga verder met het volgende plan.

-enz...

Bijgevoegd is een klein voorbeeld van een programma, dat moet worden gestart na het starten van SW en het laden van een SLDDRW-plan. Met dit programma kunt u zoeken naar alle noten en alle afmetingen die op een vlak aanwezig zijn (echter niet alle toleranties).

Vriendelijke groeten


test-search.zip
2 likes

Dank je wel d.roger!

Ik heb naar je uitvoerbare bestand gekeken.

Het werkt goed om alles op te sommen.

Twee opmerkingen:

  • Jammer dat we niet kunnen scrollen, sommige informatie was niet toegankelijk onder aan het resultatenvenster
  • We kunnen de tekst niet selecteren

Maar vooral voor mijn applicatie zou ik alle plannen (200) één voor één moeten openen. Je kunt het net zo goed met de hand doen met SW / tools / Search/modify.

Ik had graag iets automatischers gehad, maar ik denk niet dat het bestaat.

Ik zal in VB moeten komen.

Fijne dag

De macrorecorder geeft dit

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

om te zien om het in een programma te zetten dat op alle vlakken van een map loopt aan de andere kant heb ik last van het dialoogvenster dat aan het einde van de macro verschijnt :/

1 like

Hallo

Dit programma is slechts een voorbeeld om te zoeken naar de notities en afmetingen van een opname, je moet het openen en sluiten van SLDDRW's automatiseren, notities of afmetingen automatisch wijzigen, het resultaat traceren in een logbestand, enz ....

Je behoefte vereist een beetje programmeerkennis (vba, vb.net of C#) maar is goed te doen. Om 200 plannen te verwerken, komt dit uiteindelijk neer op een verwerkingstijd van ongeveer 20 tot 30 minuten, maar daarvoor duurt het ongeveer 2 uur om het programma te schrijven.

Vriendelijke groeten

Hier is al een functie (in C#) om alle noten van een clip weer te geven en de waarde "M6x30" te vervangen door "M6x30 - 8.8":

private void ListeAnnotations()
{

            TekenDoc swDraw;
            lange j;
            lange telling;
            SolidWorks.Interop.sldworks. Bekijk swView;
            swDraw = (DrawingDoc)swApp. ActiveDoc;
            swView = (SolidWorks.Interop.sldworks.Bekijken)swDraw. GetFirstView();
           
            terwijl ((swView != null))
            {
                aantal = swView. GetNoteCount();
                als (tel > 0)
                {
                    Object[] Opmerkingen = (Object[])swView. GetNotes();
                    voor (j = 0; j <= Opmerkingen.GetUpperBound(0); j++)
                    {
                        Let op : swNote;
                        swNote = (Opmerking)Opmerkingen[j];
                        string valueNote = swNote. GetText();
                        tekenreeks newValueNote = valueNote;
                        als ( waardeOpmerking.Bevat (M6x30))
                        {
                            newValueNote = newValueNote. Vervangen (M6x30, M6x30 - 8.8);
                            swOpmerking. SetText(newValueNote);
                        }
                    }
                }
                swView = (SolidWorks.Interop.sldworks.Weergave)swView. GetNextView();
            }

}

Vriendelijke groeten

1 like

Bedankt voor je feedback en je betrokkenheid!

Ik zal kijken op basis van mijn magere programmeervaardigheden en mijn beschikbaarheid.

Ik ben meer bekend met VB omdat ik veel macro heb gedaan voor Excel, voor C++ zag ik het op school in de jaren 2000, dus ik ben helemaal niet up-to-date, maar het biedt andere mogelijkheden.

Ik zal me laten inspireren door jouw code om een keuze te maken.

Fijn weekend

Hallo

Hier is een programmaversie waarmee u:

- Als u een CSV-bestand laadt met de lijst met bestanden die moeten worden geanalyseerd, moet u er rekening mee houden dat deze lijst moet worden geformatteerd zoals het bestand dat liste.csv bij het programma heeft bijgevoegd.

- Open elk bestand in Solidworks.

- Analyseer alle notities in elk geladen 2D-bestand.

- Vervang de "Te wijzigen tekst" door de "Nieuwe noottekst"

- Sla het gewijzigde plan op.

Het is het beste om te testen op een kleine hoeveelheid 2D-bestandskopie om aan de slag te gaan.

Aan het einde van de verwerking wordt een résultat.csv bestand aangemaakt in de uitvoerbare map waarin wordt aangegeven of de bestanden zijn verwerkt of zoekgeraakt.

Zoals aangegeven bij het starten van het programma, is het absoluut noodzakelijk om een back-up te maken van alle bestanden die moeten worden verwerkt voordat ze worden verwerkt.

Ik hou er niet van om een back-upfunctie van SolidWorks-bestanden voor andere mensen te maken, omdat ik als externe persoon het gevoel heb dat ik er niet op hoef in te grijpen in de wijzigingsmodus, maar voor de werking van dit programma was ik een beetje verplicht om dit te doen, dus werk alsjeblieft aan kopieën van de bestanden en niet aan de originelen.

Vriendelijke groeten


modif-notes.zip
1 like

Dank je wel d.roger,

Helaas staan de beperkingen van mijn organisatie me niet meer toe om uitvoerbare bestanden te gebruiken (de eerste is geslaagd, maar de tweede niet)

Dus ik ga voor VBA SW + taakplanner.

Petje af voor het werk! Ik weet zeker dat het aan 100% van mijn behoefte zou hebben voldaan

Fijne dag!

Anders is er de integratietool in mycadtools die u kunt installeren en starten op een map, wijzig gewoon de bijgevoegde regel.

En daarvoor zijn geen programmeervaardigheden nodig.

Verander hier gewoon de voorwaarde die ik heb geplaatst voor alle overzichtsdocumenten.

Vervolgens wijzigt u hier de bewerking om de tekst van een notitie te vervangen door een andere notitie. Opmerking gezocht in bijgevoegde regel M6x30 alt tekst M6x30 -8.8

En keuze van bladeren, ik heb alle bladeren gekozen.

U kunt het heel eenvoudig aanpassen en deze regel vervolgens toepassen op een heel bestand, op een hele assemblage of iets anders, afhankelijk van uw behoeften.

 


modification_de_note.mcact
1 like