CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: designer68 op wo 02 06 2010, 10:52:36

Titel: find tekst - opgelost
Bericht door: designer68 op wo 02 06 2010, 10:52:36
kan ik uit de tekeningen een lijstje genereren met alle getallen die bijv -99.00 bevatten?
liefst met hun x en y coordinaat?


werk met autocad 2004 en kan alleen extracten als iets een block is.




dat werkt dus helaas niet

Groet, Jan-Pieter
Titel: Re:find tekst
Bericht door: HofCAD op wo 02 06 2010, 11:49:25
Beste Jan-Pieter,

Zoiets:

(defun C:Ftxt(/ ss2 i ed Txt)
(setq ss2 nil SS2 (ssget "_X" '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>"))))
(setq i 0)
(repeat (sslength ss2)
(setq ed (entget (ssname ss2 i)) Txt (cdr (assoc 1 ed)))
(if (wcmatch Txt "*-99.00*")
(progn
(setq p (cdr (assoc 10 ed)))
(princ (strcat "\nX=" (rtos (car p) 2 8) " Y= " (rtos (cadr p) 2 8) " Z= " (rtos (caddr p) 2 8) " Tekst= " Txt))
))
(setq i (1+ i))
)
(textpage)
(princ)
)


Met vriendelijke groet, HofCAD CSI.
Titel: Re:find tekst
Bericht door: roy_043 op wo 02 06 2010, 11:53:13
Iets anders opgebouwd dan het voorstel van HofCAD. Maar met in principe dezelfde werking:(defun c:FindTxt ( / str ss i lst)
 (if
   (and
     (setq str (getstring "\nZoektekst: "))
     (setq ss (ssget "_X" (list '(0 . "TEXT") (cons 1 (strcat "*" str "*")))))
   )
   (progn
     (setq i -1)
     (repeat (sslength ss)
       (setq lst (cons (cdr (assoc 10 (entget (ssname ss (setq i (1+ i)))))) lst))
     )
     (princ lst)
   )
   (princ "\nNiets gevonden ")
 )
 (princ)
)


<EDIT>Bij tekeningen met veel teksten zal deze functie sneller zijn dan die van HofCAD</EDIT>
Titel: Re:find tekst
Bericht door: designer68 op wo 02 06 2010, 21:41:34
Allebeide bedankt maar voor mijn werk voldoet die van Roy momenteel het beste, alleen zou ik graag de coordinaten in excel willen plakken voor het overzicht in een x en een y kolom, maar anders moet ik maar wat meer knippen en plakken.


Dank in elk geval.


Groet  Jan-Pieter
Titel: Re:find tekst
Bericht door: roy_043 op wo 02 06 2010, 22:30:53
Bij deze variant hoef je maar 1x te knippen en te plakken.
Scheidingsteken "cellen" en decimaal teken naar wens aanpassen.
Omdat ik zelf Open Office gebruik kan ik je niet helpen met een directe koppeling naar Excel.

(defun c:FindTxt ( / str ss i lst sep dec)
  (vl-load-com)
  (setq
    sep ";" ; scheidingsteken "cellen"
    dec "," ; decimaal teken
  )
  (if
    (and
      (setq str (getstring "\nZoektekst: "))
      (setq ss (ssget "_X" (list '(0 . "*TEXT") (cons 1 (strcat "*" str "*")))))
    )
    (progn
      (setq i -1)
      (repeat (sslength ss)
        (setq lst (cons (cdr (assoc 10 (entget (ssname ss (setq i (1+ i)))))) lst))
      )
      (princ (strcat "\nX" sep "Y"))
      (mapcar
        '(lambda (a)
          (princ
            (strcat
              "\n"
              (vl-string-subst dec "." (rtos (car a) 2 8))
              sep
              (vl-string-subst dec "." (rtos (cadr a) 2 8))
            )
          )
        )
        lst
      )
      (textpage)
    )
    (princ "\nNiets gevonden ")
  )
  (princ)
)
Titel: Re:find tekst
Bericht door: designer68 op do 03 06 2010, 09:20:32
Dank jullie wel.
werkt goed voor mij.



Groet,


Jan-Pieter




OPGELOST