FastFiber

find tekst - opgelost

Gestart door designer68, wo 02 06 2010, 10:52:36

Vorige topic - Volgende topic

designer68

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

HofCAD

#1
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.
ACADcadabra

roy_043

#2
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>

designer68

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

roy_043

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)
)

designer68

Dank jullie wel.
werkt goed voor mij.



Groet,


Jan-Pieter




OPGELOST

yoin