Author Topic: Search "CODE" in list  (Read 2658 times)

0 Members and 1 Guest are viewing this topic.

cadplayer

  • Bull Frog
  • Posts: 390
  • Autocad Civil3d, OpenDCL.Runtime, LISP, .NET (C#)
Search "CODE" in list
« 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")
        )

« Last Edit: September 06, 2012, 08:13:38 AM by cadplayer »

Tharwat

  • Swamp Rat
  • Posts: 710
  • Hypersensitive
Re: Search "CODE" in list
« Reply #1 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.  

Lee Mac

  • Seagull
  • Posts: 12914
  • London, England
Re: Search "CODE" in list
« Reply #2 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)

cadplayer

  • Bull Frog
  • Posts: 390
  • Autocad Civil3d, OpenDCL.Runtime, LISP, .NET (C#)
Re: Search "CODE" in list
« Reply #3 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")




Lee Mac

  • Seagull
  • Posts: 12914
  • London, England
Re: Search "CODE" in list
« Reply #4 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")

cadplayer

  • Bull Frog
  • Posts: 390
  • Autocad Civil3d, OpenDCL.Runtime, LISP, .NET (C#)
Re: Search "CODE" in list
« Reply #5 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?

Lee Mac

  • Seagull
  • Posts: 12914
  • London, England
Re: Search "CODE" in list
« Reply #6 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

cadplayer

  • Bull Frog
  • Posts: 390
  • Autocad Civil3d, OpenDCL.Runtime, LISP, .NET (C#)
Re: Search "CODE" in list
« Reply #7 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!

Lee Mac

  • Seagull
  • Posts: 12914
  • London, England
Re: Search "CODE" in list
« Reply #8 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.