Help with repetition LAMBDA & MAPCAR

Help with repetition LAMBDA & MAPCAR

msarqui
Collaborator Collaborator
903 Views
4 Replies
Message 1 of 5

Help with repetition LAMBDA & MAPCAR

msarqui
Collaborator
Collaborator

Hi everyone.

 

Instead of each (vla-SetCustomByKey si "T1 EXIS."... would be possible to use LAMBDA or MAPCAR in this function?

 

(defun RefillDP ( eid1 esc1 ete1 emo1 eaz1 eha1 emd1 / doc db si)
(setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq db (vla-get-Database doc))
(setq si (vla-get-SummaryInfo db))

(vla-SetCustomByKey si "T1 EXIS." eid1)
(vla-SetCustomByKey si "T1 EXIS. Secteur" esc1)
(vla-SetCustomByKey si "T1 EXIS. Technologie" ete1)
(vla-SetCustomByKey si "T1 EXIS. Mod. antenne" emo1)
(vla-SetCustomByKey si "T1 EXIS. Azimut" eaz1)
(vla-SetCustomByKey si "T1 EXIS. Hauteur" eha1)
(vla-SetCustomByKey si "T1 EXIS. MDT" emd1)
)
0 Likes
Accepted solutions (1)
904 Views
4 Replies
Replies (4)
Message 2 of 5

hencoop
Advisor
Advisor
Accepted solution
(defun RefillDP ( eid1 esc1 ete1 emo1 eaz1 eha1 emd1 / doc db si)
(setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq db (vla-get-Database doc))
(setq si (vla-get-SummaryInfo db))

(setq val1-list 
   (list "T1 EXIS."
         "T1 EXIS. Secteur"
         "T1 EXIS. Technologie"
         "T1 EXIS. Mod. antenne"
         "T1 EXIS. Azimut"
         "T1 EXIS. Hauteur"
         "T1 EXIS. MDT"
   )
)
(setq val2-list
   (list eid1
         esc1
         ete1
         emo1
         eaz1
         eha1
         emd1
   )
)
(mapcar '(lambda (x y) (vla-SetCustomByKey si x y)) val1-list val2-list)
)
AutoCAD User since 1989. Civil Engineering Professional since 1983
Product Version: 13.6.1963.0 Civil 3D 2024.4.1 Update Built on: U.202.0.0 AutoCAD 2024.1.6
                        27.0.37.14 Autodesk AutoCAD Map 3D 2024.0.1
                        8.6.52.0 AutoCAD Architecture 2024
0 Likes
Message 3 of 5

ВeekeeCZ
Consultant
Consultant

...erased by the user.

 

Edit: Not sure if I see your goal...

 

(defun apply-vla-setCutsomByKey (lst si no)
  (foreach e lst
    (vla-SetCustomByKey
      si
      (strcat (car e) (itoa no) (cadr e))
      (eval (read (strcat (last e) (itoa no)))))))

(apply-vla-setCutsomByKey
  '(("T" "EXIS." 		"eid")
    ("T" "EXIS. Secteur" 	"esc")
    ("T" "EXIS. Technologie" 	"ete")
    ("T" "EXIS. Mod. antenne" 	"emo")
    ("T" "EXIS. Azimut" 	"eaz")
    ("T" "EXIS. Hauteur" 	"eha")
    ("T" "EXIS. MDT" 		"emd")
    )
  si
  1)

 

0 Likes
Message 4 of 5

Kent1Cooper
Consultant
Consultant

@msarqui wrote:

.... 

Instead of each (vla-SetCustomByKey si "T1 EXIS."... would be possible to use LAMBDA or MAPCAR in this function?

 

....
(vla-SetCustomByKey si "T1 EXIS." eid1)
(vla-SetCustomByKey si "T1 EXIS. Secteur" esc1)
(vla-SetCustomByKey si "T1 EXIS. Technologie" ete1)
(vla-SetCustomByKey si "T1 EXIS. Mod. antenne" emo1)
(vla-SetCustomByKey si "T1 EXIS. Azimut" eaz1)
(vla-SetCustomByKey si "T1 EXIS. Hauteur" eha1)
(vla-SetCustomByKey si "T1 EXIS. MDT" emd1)
)

Probably, but (foreach) may be simpler.  Any way you do it will probably require constructing some kind of list(s).

 

(foreach x (list (list "" eid1) (list " Secteur" esc1) (list " Technologie" ete1) (list " Mod. antenne" emo1) (list " Azimut" eaz1) (list " Hauteur" eha1) (list " MDT" emd1))

  (vla-SetCustomByKey si (strcat "T1 EXIS." (car x)) (cadr x))

)

Kent Cooper, AIA
0 Likes
Message 5 of 5

msarqui
Collaborator
Collaborator

Thank you all guys,

 

hencoop gave what I was looking for.

0 Likes