- Marquer comme nouveau
- Marquer
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Lien permanent
- Imprimer
- Signaler
Bonjour,
Débutant en LISP, je tente de créer un programme reproduisant le SOMMEPROD() d'Excel.
J'ai plusieurs blocs, avec les mêmes attributs mais avec des valeurs différentes et j'aimerais obtenir la sommeprod() de certains attributs bien précis, en sélectionnant tous les blocs.
J'ai déjà récupérer une partie de LISP (LeeMac) que j'ai modifié pour mes besoins, et cela marche pour un bloc . Par contre je sèche pour la partie boucle sur les différents blocs et calcul final pour faire la somme globale.
Ci-dessous le code qui fonctionne pour un bloc et qui récupère le produit de l'attribut "quantity" par "power":
(vl-load-com)
(defun c:calc (/ LM:GetAttributeValue ss)
(defun LM:GetAttributeValue (blk tag / val enx)
(while
(and
(null val)
(= "ATTRIB"
(cdr (assoc 0 (setq enx (entget (setq blk (entnext blk))))))
)
)
(if (= (strcase tag) (strcase (cdr (assoc 2 enx))))
(setq val (cdr (assoc 1 enx)))
)
)
)
(if (and (setq ss (ssget))
(setq attValue1 (LM:GetAttributeValue (ssname ss 0) "POWER"))
(setq attValue2 (LM:GetAttributeValue (ssname ss 0) "QUANTITY"))
(setq total (* (atof attValue1) (atof attValue2)))
)
(prin1 total)
)
(princ)
)
La 2nd partie n'est pas forcément optimale vu que c'est de moi 😅
Quelqu'un peut il me venir en aide svp ?
Merci !
Résolu ! Accéder à la solution.