FastFiber

Meerdere teksten tegelijkertijd aanpassen met 1 klik

Gestart door Arjen, vr 03 02 2017, 12:12:51

Vorige topic - Volgende topic

gery

Citaat van: Arjen op di 07 02 2017, 10:40:26
Na 'defun' heb ik nog C: gezet, krijg de volgende melding:

; error: too few arguments
Dan moet je de laatste 2 regels ook aanpassen naar
(command "TRC" "..." "...")
AutoCAD 2020 - Windows 10

roy_043


EddyBeerke

zonder de "C:" na defun is het een functie die je aanroept met:
(TRC "aanbrengen" "aangebracht")

Je kunt dan dit in een knop zetten.
Als je er wel c:trc van maakt kan dat ook maar is minder handig, je roep tenslotte een functie aan geen commando!

Het zou dan ook dit moeten worden:
(C:TRC "YYY" "XXX")
i.p.v.
Citaat van: roy_043 op di 07 02 2017, 11:29:30
(command "TRC" "..." "...")
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

#18
Citaat van: roy_043 op di 07 02 2017, 11:29:30
:shock:
(vl-load-com)

(defun c:TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(c:TRC "aanbrengen" "aangebracht")
(c:TRC "herplaatsen" "herplaatst")
AutoCAD 2020 - Windows 10

gery

Citaat van: EddyBeerke op di 07 02 2017, 11:43:00
Het zou dan ook dit moeten worden:
(C:TRC "YYY" "XXX")
Klopt, ik werk normaal op een nog iets andere manier, vandaar mijn vergissing.
AutoCAD 2020 - Windows 10

Arjen

Citaat van: gery op di 07 02 2017, 12:16:05
Citaat van: roy_043 op di 07 02 2017, 11:29:30
:shock:
(vl-load-com)

(defun c:TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(c:TRC "aanbrengen" "aangebracht")
(c:TRC "herplaatsen" "herplaatst")


hmm, heb blijkbaar nog veel te leren ;)

Hij geeft alleen nog steeds dezelfde error...

roy_043

Ik denk dat je zoiets zoekt:
(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(defun c:Test ()
  (TRC "aanbrengen" "aangebracht")
  (TRC "herplaatsen" "herplaatst")
  (TRC "abc" "def")
  ; ... etc.
  (princ)
)

EddyBeerke

Citaat van: Arjen op do 09 02 2017, 07:27:04
...
Hij geeft alleen nog steeds dezelfde error...

Ik weet niet wat voor error lisp geeft maar bij mij werkt het goed.
Misschien zijn het de hoofdletters in de teksten?
Je moet echt een exacte waarde opgeven.
Dus:
(c:TRC "Aanbrengen" "Aangebracht")
Is echt iets anders dan:
(c:TRC "aanbrengen" "aangebracht")
Porbeer de "oude" CHT eens... komt nog van AutoCAD R14...:
Zie bijlage "CHTEXT.LSP"

Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

Arjen

Citaat van: roy_043 op do 09 02 2017, 09:36:27
Ik denk dat je zoiets zoekt:
(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(defun c:Test ()
  (TRC "aanbrengen" "aangebracht")
  (TRC "herplaatsen" "herplaatst")
  (TRC "abc" "def")
  ; ... etc.
  (princ)
)


BRUUT! Superbedankt!

Zou het ook kunnen als er meerdere woorden in één tekst staan?

EddyBeerke

Wat dacht je van dit:
(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(defun c:Test ()
  (TRC "dit is een tekstregel" "dit zijn meerdere woorden")
  ; ... etc.
  (princ)
)


Nogmaals... de string moet exact overeen komen om gevonden te worden... type-fouten zijn niet toegestaan
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

Citaat van: EddyBeerke op do 09 02 2017, 09:59:59
Citaat van: Arjen op do 09 02 2017, 07:27:04
...
Hij geeft alleen nog steeds dezelfde error...

Ik weet niet wat voor error lisp geeft maar bij mij werkt het goed.
Hier idem.
AutoCAD 2020 - Windows 10

gery

Citaat van: Arjen op do 09 02 2017, 10:05:57
Zou het ook kunnen als er meerdere woorden in één tekst staan?
Zoals reeds eerder gezegd: "Werkt enkel voor volledige strings."
AutoCAD 2020 - Windows 10

Arjen

Citaat van: gery op do 09 02 2017, 10:57:06
Citaat van: Arjen op do 09 02 2017, 10:05:57
Zou het ook kunnen als er meerdere woorden in één tekst staan?
Zoals reeds eerder gezegd: "Werkt enkel voor volledige strings."

daarom vraag ik het ook  :wink:

gery

AutoCAD 2020 - Windows 10

Arjen

Citaat van: EddyBeerke op do 09 02 2017, 10:22:28
Wat dacht je van dit:
(vl-load-com)

(defun TRC ( %from %to / #tss )
  (if (setq #tss (ssget "X" (list (cons 1 %from))))
    (mapcar '(lambda (j)
       (vla-put-textstring (vlax-ename->vla-object j) %to))
       (mapcar 'cadr (ssnamex #tss)))
  )
  (princ)
)

(defun c:Test ()
  (TRC "dit is een tekstregel" "dit zijn meerdere woorden")
  ; ... etc.
  (princ)
)


Nogmaals... de string moet exact overeen komen om gevonden te worden... type-fouten zijn niet toegestaan

hahaha ja dat snap ik haha

Ik bedoel:

Als ik een tekening heb met 'aanbrengen betonverharding' en 'aanbrengen trottoirtegels' en 'aanbrengen trottoirband' en 'aanbrengen asfaltverharding' etc. Is het dan mogelijk in de lisp alleen het woord 'aanbrengen' te vervangen. Want als ik dus één van de bovenstaande voorbeelden heb, vervangt deze het woord niet, dan doet de lisp het niet.