TheSwamp

Code Red => AutoLISP (Vanilla / Visual) => Topic started by: cadplayer on September 06, 2012, 08:10:25 AM

Title: Search "CODE" in list
Post by: cadplayer on September 06, 2012, 08:10:25 AM
Hi

I have two lists
1) (setq CL '("VK" "SK" "TR" "DI" "K" "NB" "DB" "M" "TB" "MU" "vg" "Spik" "FG" "BS" "el" "0"))

and
2) (setq CLIST '(("LAYER" "M-BEF-MUR") ("CODE" "MU") ("BESCHREIBUNG" "Mur")) (("LAYER" "M-BEF-PLANTERING") ("CODE" "VE") ("BESCHREIBUN...

Now I want look for if it is "VK" from variable CL in variable CLIST in  ("CODE" "....")
If not I should display "Code not definition"

I try it so here but it works not right. Can somebody help me

Two codes one for erase duplicates

Code: [Select]
(defun _RemoveDuplicates ( lst / foo index )
    (defun foo (x)
        (cond
            ((vl-position x index))
            ((null (setq index (cons x index))))
        )
    )
    (vl-remove-if
       'foo
        lst
    )
  )

and what I try it

Code: [Select]

(foreach M CL  ; M... "VK"
        (foreach N CLIST ; N...(("LAYER" "0") ("CODE" "BU") ("BESCHREIBUNG" "Buskar"))
          (cond
            ((/= M (cadr (assoc "CODE" N)))
             (princ "\nCode ready in list")
             )
            (nil
             (setq NCODE (cons M NCODE))
             (princ "\nCode not in list")
             )
            )
          )
        )
      (if (setq NCODE (_RemoveDuplicates NCODE))
        (princ NCODE " Code not defiintion")
        )

Title: Re: Search "CODE" in list
Post by: Tharwat on September 06, 2012, 08:36:00 AM
This ... ?

Code - Auto/Visual Lisp: [Select]
  1. (setq CL '("VK" "SK" "TR" "DI" "K" "NB" "DB" "M" "TB" "MU" "vg" "Spik" "FG" "BS" "el" "0"))
  2. (setq CLIST '(("LAYER" "M-BEF-MUR") ("CODE" "MU") ("BESCHREIBUNG" "Mur")("LAYER" "M-BEF-PLANTERING") ("CODE" "VE")))
  3.  
  4. (foreach x clist
  5.   (if (member "VK" x) (setq found t))
  6.   )
  7. (if found (princ "\n Not found")
  8.   (princ "\n Just found it"))
  9.  
Title: Re: Search "CODE" in list
Post by: Lee Mac on September 06, 2012, 09:15:38 AM
Maybe:

Code - Auto/Visual Lisp: [Select]
  1. (foreach a cl
  2.     (cond
  3.         (   (vl-some '(lambda ( b ) (and (= "CODE" (car b)) (= a (cadr b)))) clist)
  4.             (princ (strcat "\n" a " already in list."))
  5.         )
  6.         (   (not (member a ncode))
  7.             (setq ncode (cons a ncode))
  8.         )
  9.     )
  10. )
  11. (print ncode)
Title: Re: Search "CODE" in list
Post by: cadplayer on September 06, 2012, 10:01:00 AM
Thanks both

@Tharwat
Your solution shows always "Just found it"

@Lee
ncode returns same list from CL-variable in NCODE-variable
CL: ("VK" "SK" "TR" "DI" "K" "NB" "DB" "M" "TB" "MU" "vg" "Spik" "FG" "BS" "el" "0")

NCODE: ("0" "el" "BS" "FG" "Spik" "vg" "MU" "TB" "M" "DB" "NB" "K" "DI" "TR" "SK" "VK")



Title: Re: Search "CODE" in list
Post by: Lee Mac on September 06, 2012, 10:15:44 AM
@Lee
ncode returns same list from CL-variable in NCODE-variable
CL: ("VK" "SK" "TR" "DI" "K" "NB" "DB" "M" "TB" "MU" "vg" "Spik" "FG" "BS" "el" "0")

NCODE: ("0" "el" "BS" "FG" "Spik" "vg" "MU" "TB" "M" "DB" "NB" "K" "DI" "TR" "SK" "VK")

Using your given examples, the result for my code is:

Code: [Select]
MU already in list.
("0" "el" "BS" "FG" "Spik" "vg" "TB" "M" "DB" "NB" "K" "DI" "TR" "SK" "VK")
Title: Re: Search "CODE" in list
Post by: cadplayer on September 06, 2012, 10:31:53 AM
Sorry my fel

codes you can see in CL should founded in CLIST if not in CLIST show "Code not in list"

CL:
("VK" "SK" "TR" "DI" "K" "NB" "DB" "M" "TB" "MU" "vg" "Spik" "FG" "BS" "el" "0")

CLIST
((("LAYER" "0") ("CODE" "HPS") ("BESCHREIBUNG" "Hjälppunktstation")) (("LAYER" "0") ("CODE" "PP") ("BESCHREIBUNG" "Polygonpunkt")) (("LAYER" "0") ("CODE" "FIX") ("BESCHREIBUNG" "Fixpunkt")) (("LAYER" "0") ("CODE" "HP") ("BESCHREIBUNG" "Hjälppunkt")) (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "NB") ("BESCHREIBUNG" "Nedstigningsbrunn")) (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "TB") ("BESCHREIBUNG" "Tillsynsbrunn")) (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "AV") ("BESCHREIBUNG" "Avstängningsventil")) (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "DB") ("BESCHREIBUNG" "Dagvattenbrunn")) (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "TR") ("BESCHREIBUNG" "Trumma")) (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "BL") ("BESCHREIBUNG" "Brunnslock")) (("LAYER" "M-BEF-BERGLINJE") ("CODE" "BF") ("BESCHREIBUNG" "Bergfot")) (("LAYER" "M-BEF-VÄGKANT") ("CODE" "AK") ("BESCHREIBUNG" "Asfaltkant")) (("LAYER" "M-BEF-VÄGKANT") ("CODE" "VK") ("BESCHREIBUNG" "Vägkant")) (("LAYER" "0") ("CODE" "M") ("BESCHREIBUNG" "Marknivå")) (("LAYER" "M-BEF-VÄGKANTSTÖD") ("CODE" "K") ("BESCHREIBUNG" "Kantstöd")) (("LAYER" "M-BEF-BERGLINJE") ("CODE" "B") ("BESCHREIBUNG" "Berg")) (("LAYER" "M-BEF-DIKE") ("CODE" "DI") ("BESCHREIBUNG" "Dike")) (("LAYER" "M-BEF-VÄGKANT") ("CODE" "P") ("BESCHREIBUNG" "Plattyta")) (("LAYER" "M-BEF-VÄGKANT") ("CODE" "GR") ("BESCHREIBUNG" "Grusyta")) (("LAYER" "0") ("CODE" "SK") ("BESCHREIBUNG" "Stakkäpp")) (("LAYER" "0") ("CODE" "ES") ("BESCHREIBUNG" "El-telestolpe")) (("LAYER" "M-BEF-VÄGRÄCKE") ("CODE" "VR") ("BESCHREIBUNG" "Vägräcke")) (("LAYER" "M-BEF-STAKET") ("CODE" "SL") ("BESCHREIBUNG" "Stängsel")) (("LAYER" "0") ("CODE" "TH") ("BESCHREIBUNG" "Tomthörn")) (("LAYER" "M-BEF-TRAPPA") ("CODE" "TA") ("BESCHREIBUNG" "Trappa")) (("LAYER" "M-BEF-STAKETM") ("CODE" "ST") ("BESCHREIBUNG" "Staket")) (("LAYER" "M-BEF-MUR") ("CODE" "MU") ("BESCHREIBUNG" "Mur")) (("LAYER" "M-BEF-PLANTERING") ("CODE" "VE") ("BESCHREIBUNG" "Vegetationsgräns")) (("LAYER" "0") ("CODE" "T") ("BESCHREIBUNG" "Träd")) (("LAYER" "0") ("CODE" "BU") ("BESCHREIBUNG" "Buskar")) ("LAYER" "M-BEF-MUR") ("CODE" "MU") ("BESCHREIBUNG" "Mur") ("LAYER" "M-BEF-PLANTERING") ("CODE" "VE"))


For example "vg" "Spik""el" "0" can´t find in CLIST
Is it possible to build in your code Lee?
Title: Re: Search "CODE" in list
Post by: Lee Mac on September 06, 2012, 10:57:24 AM
Try this:

Code - Auto/Visual Lisp: [Select]
  1. (defun c:test ( / cl clist ncode )
  2.  
  3.     (setq cl '("VK" "SK" "TR" "DI" "K" "NB" "DB" "M" "TB" "MU" "vg" "Spik" "FG" "BS" "el" "0"))
  4.     (setq clist
  5.        '(
  6.             (("LAYER" "0") ("CODE" "HPS") ("BESCHREIBUNG" "Hjälppunktstation"))
  7.             (("LAYER" "0") ("CODE" "PP")  ("BESCHREIBUNG" "Polygonpunkt"))
  8.             (("LAYER" "0") ("CODE" "FIX") ("BESCHREIBUNG" "Fixpunkt"))
  9.             (("LAYER" "0") ("CODE" "HP") ("BESCHREIBUNG" "Hjälppunkt"))
  10.             (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "NB") ("BESCHREIBUNG" "Nedstigningsbrunn"))
  11.             (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "TB") ("BESCHREIBUNG" "Tillsynsbrunn"))
  12.             (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "AV") ("BESCHREIBUNG" "Avstängningsventil"))
  13.             (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "DB") ("BESCHREIBUNG" "Dagvattenbrunn"))
  14.             (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "TR") ("BESCHREIBUNG" "Trumma"))
  15.             (("LAYER" "M-BEF-BRUNNAR-VA") ("CODE" "BL") ("BESCHREIBUNG" "Brunnslock"))
  16.             (("LAYER" "M-BEF-BERGLINJE") ("CODE" "BF") ("BESCHREIBUNG" "Bergfot"))
  17.             (("LAYER" "M-BEF-VÄGKANT") ("CODE" "AK") ("BESCHREIBUNG" "Asfaltkant"))
  18.             (("LAYER" "M-BEF-VÄGKANT") ("CODE" "VK") ("BESCHREIBUNG" "Vägkant"))
  19.             (("LAYER" "0") ("CODE" "M") ("BESCHREIBUNG" "Marknivå"))
  20.             (("LAYER" "M-BEF-VÄGKANTSTÖD") ("CODE" "K") ("BESCHREIBUNG" "Kantstöd"))
  21.             (("LAYER" "M-BEF-BERGLINJE") ("CODE" "B") ("BESCHREIBUNG" "Berg"))
  22.             (("LAYER" "M-BEF-DIKE") ("CODE" "DI") ("BESCHREIBUNG" "Dike"))
  23.             (("LAYER" "M-BEF-VÄGKANT") ("CODE" "P") ("BESCHREIBUNG" "Plattyta"))
  24.             (("LAYER" "M-BEF-VÄGKANT") ("CODE" "GR") ("BESCHREIBUNG" "Grusyta"))
  25.             (("LAYER" "0") ("CODE" "SK") ("BESCHREIBUNG" "Stakkäpp"))
  26.             (("LAYER" "0") ("CODE" "ES") ("BESCHREIBUNG" "El-telestolpe"))
  27.             (("LAYER" "M-BEF-VÄGRÄCKE") ("CODE" "VR") ("BESCHREIBUNG" "Vägräcke"))
  28.             (("LAYER" "M-BEF-STAKET") ("CODE" "SL") ("BESCHREIBUNG" "Stängsel"))
  29.             (("LAYER" "0") ("CODE" "TH") ("BESCHREIBUNG" "Tomthörn"))
  30.             (("LAYER" "M-BEF-TRAPPA") ("CODE" "TA") ("BESCHREIBUNG" "Trappa"))
  31.             (("LAYER" "M-BEF-STAKETM") ("CODE" "ST") ("BESCHREIBUNG" "Staket"))
  32.             (("LAYER" "M-BEF-MUR") ("CODE" "MU") ("BESCHREIBUNG" "Mur"))
  33.             (("LAYER" "M-BEF-PLANTERING") ("CODE" "VE") ("BESCHREIBUNG" "Vegetationsgräns"))
  34.             (("LAYER" "0") ("CODE" "T") ("BESCHREIBUNG" "Träd"))
  35.             (("LAYER" "0") ("CODE" "BU") ("BESCHREIBUNG" "Buskar"))
  36.             (("LAYER" "M-BEF-MUR") ("CODE" "MU") ("BESCHREIBUNG" "Mur"))
  37.             (("LAYER" "M-BEF-PLANTERING") ("CODE" "VE"))
  38.         )
  39.     )
  40.    
  41.     (foreach a cl
  42.         (cond
  43.             (   (vl-some '(lambda ( b ) (= a (cadr (assoc "CODE" b)))) clist)
  44.                 (princ (strcat "\n" a " already in list."))
  45.             )
  46.             (   (not (member a ncode))
  47.                 (setq ncode (cons a ncode))
  48.             )
  49.         )
  50.     )
  51.     (print ncode)
  52.     (princ)
  53. )

PS: Formatting code in your posts (http://www.theswamp.org/index.php?topic=4429.0)
Title: Re: Search "CODE" in list
Post by: cadplayer on September 06, 2012, 11:02:35 AM
Yes super. I try it in a couple of hours  :x and you have it in minutes  :-o
Thank so much!
Title: Re: Search "CODE" in list
Post by: Lee Mac on September 06, 2012, 11:09:21 AM
Yes super. I try it in a couple of hours  :x and you have it in minutes  :-o
Thank so much!

It's all practice cadplayer  :-)

You're welcome.