FastFiber

opgelost Onderlijnde tekst (%%u) uit meerdere block's met attriburen halen.

Gestart door VDZS, wo 25 11 2015, 10:17:09

Vorige topic - Volgende topic

VDZS

Hoi

Ik heb een tekening met verschillende block's met tekstattributen die onderlijnd (%%u) zijn.
Is er een mogelijkheid om deze onderlijning op een snelle manier te verwijderen?
Dus niet handmatig block per block opendoen en telkens deze onderlijning (%%u) wissen.

Alvast Bedankt!

J.

hulpje

Niet getest, maar kun je niet met FIND, teksten zoeken en vervangen?
HELAAS BESTAAT CADToppers.com niet meer
ACP-er (AutoDesk Certified Professional)

delangstevandestraat

Je zou kunnen een lispje schrijven die dit voor u doet...
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

delangstevandestraat

ik kon het niet laten

onderstaande code als .lsp save, appload en gas geven...

; This routine will take out the underline part of en entity
; until the user break's
; 25.11.2015

(defun c:unout (/ ent str cntr strpart newstr chkstr str cch ch
                 modtxt txtormtxt dimormtxt seldimt strdimedit el mt selatt)
  (setq cntr 10)
  (while (> cntr 0)
    (progn
      (setq ent (nentselp "Select source Text: " ))
      (if ent
        (progn                                                    ;1
          (setq str (cdr(assoc 1 (entget (car ent ))))) 
          (setq strPart "" newstr "" chkStr str         ;variabelen initialiseren
                tailpart "" )                      ;extra voor tailprt
          (while(/= chkStr "")                                  ;zolang chkstr niet leeg is doe
            (setq ch (substr chkstr 1 1) cch (substr chkStr 1 3))            ;Get the last character in the string
            (if (/= cch "%%U")
              (setq newstr (strcat newstr ch) chkstr (substr chkstr 2) cch (substr chkstr 1 3))
              (setq newstr (strcat newstr (substr chkstr 4)) chkstr "")
            ) 
          ) 
          (setq str newstr)            ;voeg alles weer samen
          (setq modtxt ent)
          (if modtxt
            (progn                                              ;4
              (setq txtormtxt (cdr(assoc 0 (entget (car modtxt ))))) 
              (cond                                             ;afvraging
                ((or (= txtormtxt "TEXT")(= txtormtxt "MTEXT")) ;optie 1 is het text of is het mtext
                  (progn                                        ;5
                    (setq dimormtxt (cdr(assoc 42 (entget (car modtxt ))))) 
                    (if (/= dimormtxt nil)                      ;if
                      (progn                                    ;then 6
                        (setq seldimt (cdr (assoc -1 (entget (car modtxt )))))
                        (setq strdimedit (substr str 5 (strlen str)))
                        (command "dimedit" "n" strdimedit seldimt "")
                      )                                         ;progn6
                      (progn                                    ;else 7
                        (setq el (entget (car modtxt )))         
                        (setq mt (subst (cons 1 str) (assoc 1 EL) EL))
                        (entmod mt)
                      )                                         ;progn7
                    )                                           ;if dimortxt
                  )                                             ;progn5
                )                                               ;cond or optie1
                ((= txtormtxt "ATTRIB")                         ;optie 2 is het attrib
                  (progn                                        ;8
                    (setq selatt (cdr (assoc -1 (entget (car modtxt ))))) ;naam van de geselecteerde entity
                    (command "-attedit" "" "" "" "" selatt "v" "r" str "");de waarde in voegen in deze entity
                  )                                             ;progn8
                )                                               ;cond or optie 2
              )                                                 ;end cond
            )                                                   ;progn4
          )                                                     ;if modtxt
        )                                                       ;progn1
      )                                                         ;end if ent
    )                                                           ;progn
  ) ;while
  (princ)
)                                                             ;defun



veel plezier
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

hulpje

Citaat van: delangstevandestraat op wo 25 11 2015, 13:20:59
ik kon het niet laten

onderstaande code als .lsp save, appload en gas geven...

; This routine will take out the underline part of en entity
; until the user break's
; 25.11.2015

(defun c:unout (/ ent str cntr strpart newstr chkstr str cch ch
                 modtxt txtormtxt dimormtxt seldimt strdimedit el mt selatt)
  (setq cntr 10)
  (while (> cntr 0)
    (progn
      (setq ent (nentselp "Select source Text: " ))
      (if ent
        (progn                                                    ;1
          (setq str (cdr(assoc 1 (entget (car ent ))))) 
          (setq strPart "" newstr "" chkStr str         ;variabelen initialiseren
                tailpart "" )                      ;extra voor tailprt
          (while(/= chkStr "")                                  ;zolang chkstr niet leeg is doe
            (setq ch (substr chkstr 1 1) cch (substr chkStr 1 3))            ;Get the last character in the string
            (if (/= cch "%%U")
              (setq newstr (strcat newstr ch) chkstr (substr chkstr 2) cch (substr chkstr 1 3))
              (setq newstr (strcat newstr (substr chkstr 4)) chkstr "")
            ) 
          ) 
          (setq str newstr)            ;voeg alles weer samen
          (setq modtxt ent)
          (if modtxt
            (progn                                              ;4
              (setq txtormtxt (cdr(assoc 0 (entget (car modtxt ))))) 
              (cond                                             ;afvraging
                ((or (= txtormtxt "TEXT")(= txtormtxt "MTEXT")) ;optie 1 is het text of is het mtext
                  (progn                                        ;5
                    (setq dimormtxt (cdr(assoc 42 (entget (car modtxt ))))) 
                    (if (/= dimormtxt nil)                      ;if
                      (progn                                    ;then 6
                        (setq seldimt (cdr (assoc -1 (entget (car modtxt )))))
                        (setq strdimedit (substr str 5 (strlen str)))
                        (command "dimedit" "n" strdimedit seldimt "")
                      )                                         ;progn6
                      (progn                                    ;else 7
                        (setq el (entget (car modtxt )))         
                        (setq mt (subst (cons 1 str) (assoc 1 EL) EL))
                        (entmod mt)
                      )                                         ;progn7
                    )                                           ;if dimortxt
                  )                                             ;progn5
                )                                               ;cond or optie1
                ((= txtormtxt "ATTRIB")                         ;optie 2 is het attrib
                  (progn                                        ;8
                    (setq selatt (cdr (assoc -1 (entget (car modtxt ))))) ;naam van de geselecteerde entity
                    (command "-attedit" "" "" "" "" selatt "v" "r" str "");de waarde in voegen in deze entity
                  )                                             ;progn8
                )                                               ;cond or optie 2
              )                                                 ;end cond
            )                                                   ;progn4
          )                                                     ;if modtxt
        )                                                       ;progn1
      )                                                         ;end if ent
    )                                                           ;progn
  ) ;while
  (princ)
)                                                             ;defun



veel plezier

GOED BEZIG  :vreegoe: :vreegoe: :vreegoe: :vreegoe:
HELAAS BESTAAT CADToppers.com niet meer
ACP-er (AutoDesk Certified Professional)

VDZS

@ hulpje: nope, dit werkt enkel voor txt en mtxt, voor zover ik weet...
@ delangstevandestraat: bedankt! al bedoel ik eigenlijk of dit ook mogelijk is in block's waarin de de waarden in het attribuut ook onderlijnt is.
Voorbeeldje in bijlage.
Grts

J.

delangstevandestraat

#6
lap, gepakt in snelheid...

ik ging er van uit dat de U altijd caps was,
en soms is die dus ook geen caps

vandaar deze aanpassing in de eerste IF van het programma,... probeer het anders eens te lezen en te snappen ;-)

kwestie van er allemaal minder blond van te worden ;-))

This routine will take out the underline part of en entity
; until the user break's
; 25.11.2015

(defun c:unout (/ ent str cntr strpart newstr chkstr str cch ch
                 modtxt txtormtxt dimormtxt seldimt strdimedit el mt selatt)
  (setq cntr 10)
  (while (> cntr 0)
    (progn
      (setq ent (nentselp "Select source Text: " ))
      (if ent
        (progn                                                    ;1
          (setq str (cdr(assoc 1 (entget (car ent ))))) 
          (setq strPart "" newstr "" chkStr str)     ;variabelen initialiseren
          (while(/= chkStr "")                              ;zolang chkstr niet leeg is doe
            (setq ch (substr chkstr 1 1) cch (substr chkStr 1 3)) ;Get the character(s)
            (if (or (= cch "%%u") (= cch "%%U"))
              (setq chkstr (substr chkstr 4))
              (setq newstr (strcat newstr ch) chkstr (substr chkstr 2))
            ) 
          ) 
          (setq str newstr)            ;voeg alles weer samen
          (setq modtxt ent)
          (if modtxt
            (progn                                              ;4
              (setq txtormtxt (cdr(assoc 0 (entget (car modtxt ))))) 
              (cond                                             ;afvraging
                ((or (= txtormtxt "TEXT")(= txtormtxt "MTEXT")) ;text of is het mtext
                  (progn                                        ;5
                    (setq dimormtxt (cdr(assoc 42 (entget (car modtxt ))))) 
                    (if (/= dimormtxt nil)                      ;if
                      (progn                                    ;then 6
                        (setq seldimt (cdr (assoc -1 (entget (car modtxt )))))
                        (setq strdimedit (substr str 5 (strlen str)))
                        (command "dimedit" "n" strdimedit seldimt "")
                      )                                         ;progn6
                      (progn                                    ;else 7
                        (setq el (entget (car modtxt )))         
                        (setq mt (subst (cons 1 str) (assoc 1 EL) EL))
                        (entmod mt)
                      )                                         ;progn7
                    )                                           ;if dimortxt
                  )                                             ;progn5
                )                                               ;cond or optie1
                ((= txtormtxt "ATTRIB")                         ;optie 2 is het attrib
                  (progn                                        ;8
                    (setq selatt (cdr (assoc -1 (entget (car modtxt ))))) ;naam van de entity
                    (command "-attedit" "" "" "" "" selatt "v" "r" str ""); waarde in voegen in entity
                  )                                             ;progn8
                )                                             ;cond or optie 2
              )                                             ;end cond
            )                                             ;progn4
          )                                            ;if modtxt
        )                                           ;progn1
      )                                          ;end if ent
    )                                        ;progn
  )               ;while
  (princ)
)                                     ;defun




Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

hulpje

Beste VDZS,

FIND werkt wel degelijk op blocken, ik heb het ondertussen zelf getest  :D
Alleen kun je niet met FIND onderstreepte teksten selecteren  :roll:
HELAAS BESTAAT CADToppers.com niet meer
ACP-er (AutoDesk Certified Professional)

VDZS

Inderdaad Hulpje, blijkbaar toch op block's tenzij de att onderlijnd is...maar dat is nu opgelost!  :D
Merci delangstevandestraat!! :vreegoe: :vreegoe: :vreegoe: :D

VDZS

Hoi,

Kan men dit ook uitbreiden dan men de block's kan selecteren met selectiekader?

Thx

J.

delangstevandestraat

#10
zie onderstaande, veel plezier ermee

ik heb ondertussen nog een extra aanpassing gedaan aan het originele programma voor het geval er gedeeltelijke onderlijningen zouden in uw texten zitten bvb azzeardfhkjezr
dan worden deze er allemaal uitgewipt.
zie het gekleurde stuk in de originele code


onderstaande code opslaan als .lsp appload en gas geven
of unoutw.lsp in de suite plaatsen kan ook natuurlijk



; This routine will take out the underline part of en entity
; until the user break's selection method window
; 25.11.2015


(defun c:unoutw (/ ent str ctr cntr strpart newstr chkstr str cch ch olddynmode bl tr
                 selset modtxt txtormtxt dimormtxt seldimt strdimedit el mt selatt)
  (setq cntr 10 ctr 0)
  (setq olddynmode (getvar "dynmode")) 
  (while (> cntr 0)
   (progn ;01
    (setq bl (getpoint "Window selection\nSelect bottomleft:"))
    (setq tr (getpoint bl "Window selection\nSelect topright:"))
    (setq selset (ssget "w" bl tr))
     (while (< ctr (sslength selset))
      (progn ;02
      (setq ent (ssname selset ctr) ctr (+ ctr 1))
      (if ent
        (progn                                                    ;1
          (setq str (cdr(assoc 1 (entget ent)))) 
          (setq strPart "" newstr "" chkStr str         ;variabelen initialiseren
                tailpart "" )                      ;extra voor tailprt
          (while(/= chkStr "")                                  ;zolang chkstr niet leeg is doe
            (setq ch (substr chkstr 1 1) cch (substr chkStr 1 3))            ;Get the last character in the string
            (if (or (= cch "%%u") (= cch "%%U"))
              (setq chkstr (substr chkstr 4))
      (setq newstr (strcat newstr ch) chkstr (substr chkstr 2))
            ) 
          ) 
          (setq str newstr)            ;voeg alles weer samen
          (setq modtxt ent)
          (if modtxt
            (progn                                              ;4
              (setq txtormtxt (cdr(assoc 0 (entget modtxt)))) 
              (cond                                             ;afvraging
                ((or (= txtormtxt "TEXT")(= txtormtxt "MTEXT")) ;optie 1 is het text of is het mtext
                  (progn                                        ;5
                    (setq dimormtxt (cdr(assoc 42 (entget modtxt)))) 
                    (if (/= dimormtxt nil)                      ;if
                      (progn                                    ;then 6
                        (setq seldimt (cdr (assoc -1 (entget modtxt))))
                        (setq strdimedit (substr str 5 (strlen str)))
                        (command "dimedit" "n" strdimedit seldimt "")
                      )                                         ;progn6
                      (progn                                    ;else 7
                        (setq el (entget modtxt))         
                        (setq mt (subst (cons 1 str) (assoc 1 EL) EL))
                        (entmod mt)
                      )                                         ;progn7
                    )                                           ;if dimortxt
                  )                                             ;progn5
                )                                               ;cond or optie1
                ((= txtormtxt "ATTRIB")                         ;optie 2 is het attrib
                  (progn                                        ;8
                    (setq selatt (cdr (assoc -1 (entget modtxt)))) ;naam van de geselecteerde entity
                    (command "-attedit" "" "" "" "" selatt "v" "r" str "");de waarde in voegen in deze entity
                  )                                             ;progn8
                )                                               ;cond or optie 2
              )                                                 ;end cond
            )                                                   ;progn4
          )                                                     ;if modtxt
        )                                                       ;progn1
      )                                                         ;end if ent
     ) ;progn02
    ) ;while ctr
   )                                                            ;progn01
  ) ;while cntr
  (princ)
)                                                             ;defun


Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

VDZS

Hoi Delangstevandestraat,

alvast merci!

Het werkt perfect bij text. :)
Kan je dit ook uitbreiden naar block's met text attributen, bvb met een crossing window?


Grts,

Jochen

delangstevandestraat

Normaal gezien werkt het ook bij attributen, en ik heb het opgemaakt voor window ik heb iegenlijk niet geprobeerd hoe en of het programma reageert op crossing

Mijn eerste ingeving zou zijn selecteer eens rechts links misschien doet hij het wel ?
of anders de "w" wijzigen in een "c" dan zou het ook moeten lukken denk ik

al vind ik wel dat windows veiliger zijn om een selectie te maken en dan een programma door te jagen...

ik kan zelf nu niet veel tijd in steken want verlof ;-) dat moet ook hé

wordt vervolgd...
Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

VDZS

@ delangste

Bij attributen werkt het niet.
Ik krijg dan de volgende melding:

command: UNOUTW
Window selection
Select bottomleft:Window selection
Select topright:
Error: bad argument type: stringp nilAutoCAD variable setting rejected: "osmode" nil

Grts,

Jochen

yoin