yoin

DanAi

Kan iemand mij met het volgende helpen?
Ik heb een x-aantal tekeningen waarin een bepaalde text (single line)
staat. Deze moet in elke tekening vervangen/aangepast worden met een andere text.
Normaal zou ik dat met "find/replace text" doen. Maar om dat telkens weer op elke tekening te doen..........
Bestaat er hiervoor geen lisp routine?
Of weet iemand een manier om de "dialog box" van het commando "find/replace text" te omzeilen zodat ik een script kan maken?

Kenny H

Ik heb zitten zoeken in de help van AutoCAD maar heb daar niets in gevonden om die find/replace te kunnen programmeren in een lisp of script.
Ik heb dan ook een aantal zaken uitgeprobeert maar zonder enog succes.

Tot mijn spijt kan ik u niet helpen.  :(
8) Volvo 4 Life 8)

WebRacer

Ook ik heb even heel snel een blik geworpen in mijn databank onder mijn hersenpan, en kom blijkbaar tot het besluit dat dit een VBA-applicatie is die in autcad is ingeprogrameerd.

Wij kunnen u eventueel wel helpen met een lisp-routine, die wel nog moet geschreven worden.

Indien dit nuttig blijkt, zal dat ook geen probleem zijn om dat te doen, van zo snel dat we tijd hebben....
?

Dnereb

Volgens mij kan je dit vrij eenvoudig schrijven in VBA.
Is er een reden voor dat je LISP wenst te gebruiken?

DanAi

Citaat van: DnerebVolgens mij kan je dit vrij eenvoudig schrijven in VBA.
Is er een reden voor dat je LISP wenst te gebruiken?

Ik heb geen ervaring met VBA. Vandaar.
Met Lisp gaat het iets beter. Ik weet ongeveer hoe het werkt maar
weet nog niet hoe ik een Lisp moet schrijven.
Ben er wel mee bezig
Maar als iemand voor mij zoiets kan schrijven zou dat fijn zijn.

Dnereb

Als je moet investreren in het leren van een taal kies dan voor VBA.
Waarom?
VBA kan je ook in Word,Excel,Outlook en Acess gebruiken en sommige cad programma's zoals Autocad en Mcrostation.

op www.cadvault.com in het code Archive staat code om bestanden met een bepaalde extensie te vinden in VBA
er zijn daar ook heel wat voorbeelden van het doorzoeken van een tekening in VBA en (V)LISP
Het is in het engels maar dat moet geen bezwaar zijn als je serieus wilt automatiseren.

voorzover ik jouw probleem begrijp, zou ik alle DWG's in een directory zetten en dan via VBA doorzoeken en de teksten wijzigen.

O en als je thuis bent in VBA dan is de stap naar VB erg klein

Joop

Om in meerdere tekeningen dezelfde handelingen (b.v. het varvangen van een tekst) kun je op deze site de nieuwe versie van BaBe.lsp dowloaden.

De routine van het wijzigen moet je zelf nog schrijven.
B.v.:
(setq TextToSearch jouw tekst)
(setq TextToChange (ssget "X" '((1 . TextToSearch))))
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

DanAi

Citaat van: JoopOm in meerdere tekeningen dezelfde handelingen (b.v. het varvangen van een tekst) kun je op deze site de nieuwe versie van BaBe.lsp dowloaden.

De routine van het wijzigen moet je zelf nog schrijven.
B.v.:
(setq TextToSearch jouw tekst)
(setq TextToChange (ssget "X" '((1 . TextToSearch))))


Waar kan ik de nieuwe BaBe.lsp downloaden?

Kenny H

Aangezien ik iets heb gevonden bij VBA om die tekst te wijzigen post ik het hierbij.

CiteerPrivate Sub CommandButton1_Click()
Dim zoektekst As Double
Dim vervangtekst As Double

Dim zoek_tekst As AcadText

If txt1 = "" Or txt2 = "" Then
           MsgBox " U vergat een waarde in te geven", vbQuestion, "AANDACHT GEVRAAGD !!!"
   Else
   zoektekst = Val(txt1)'via dialoogbox eerste invulling door gebruiker, waarachter hij zoekt/ of zou moeten zoeken :p
   vervangtekst = Val(txt2)'via dialoogbox tweede invulling door gebruiker, tekst die zoektest vervangt

'Uit de Help:

   'Replace(expression, find, replace[, start[, count[, compare]]])

'The Replace function syntax has these named arguments:

'Part Description
'expression Required. String expression containing substring to replace.
'find Required. Substring being searched for.
'replace Required. Replacement substring.
'start Optional. Position within expression where substring search is to begin. If omitted, 1 is assumed.
'count Optional. Number of substring substitutions to perform. If omitted, the default value is â€"1, which means make all possible substitutions.
'compare Optional. Numeric value indicating the kind of comparison to use when evaluating substrings. See Settings section for values.



txt1 = "" 'dient om die invoer terug te wissen
txt2 = ""
End If


End Sub

Private Sub CommandButton2_Click()
Unload Me

End Sub


Nu is het probleem het volgende:

'   Replace(?????, zoektekst, replace,,,)

Het is al een TIJD gelden dat ik vba gebruikte maar die expression wat moet er daar ingevuld worden. En zeg nu niet "iets" hé.
Ik heb zitten zoeken in help en daar raak ik niet wijs uit.
Aangezien men daar met cijfers werkt voor een expression.
Iemand met VBA kennis, die dit kan/wil oplossen ??
8) Volvo 4 Life 8)

Kenny H

Het programma is af en ziet er als volgt uit:

laad het programma,
geef de tekst in die hij moet zoeken om te vervangen,
geef de vervangende tekst in,
druk op vervang om de tekening te doorzoeken en de tekst te wijzigen,
druk op cancel om te stoppen,
Infeite werkt het op de zelfde manier als find replace maar er is 1 groot voordeel:
Hij blijft de invoer onthouden, dus als je een andere tekening opend en de het programma terug laat lopen komt de tekst die hij moet zoeken en de vervangde tekst reeds ingevuld voor. Gewoon dan nog op vervang klikken.
Je kan de invoer wissen door op reset te klikken.

Het programma werd geschreven door Hautekeete Olivier en Habils Kenny
Je kunt het verkijgen door ons te mailen of het hier te vragen  :wink:
8) Volvo 4 Life 8)