bonuscad Posté(e) le 11 avril 2019 Posté(e) le 11 avril 2019 Bon on va réparer les "conneries" du client.A copier-coller directement en ligne de commande dans le dessin à corriger avant d'appliquer la routine NBAMBOUCAD. Ca corrigera toutes les tables. et ensuite la routine NBAMBOUCAD devrait fonctionner correctement.((lambda ( / val typ nw_val nw_deftab) (foreach i (ade_odtablelist) (setq val nil typ (mapcar 'caddr (cdaddr (ade_odtabledefn i))) ) (foreach el (mapcar 'cdr typ) (cond ((eq el "Character") (setq nw_val "")) ((eq el "Real") (setq nw_val 0.0)) ((eq el "Integer") (setq nw_val 0)) ) (setq val (cons (cons "DefaultVal" nw_val) val)) ) (setq nw_deftab (append (cons (car (ade_odtabledefn i)) (list (cadr (ade_odtabledefn i)))) (list (cons "Columns" (mapcar '(lambda (x y z w / ) (cons x (cons y (cons z (list w)))) ) (mapcar 'car (cdaddr (ade_odtabledefn i))) (mapcar 'cadr (cdaddr (ade_odtabledefn i))) typ (reverse val) ) ) ) ) ) (ade_odmodifytab nw_deftab) ) (prin1) )) Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
NBAMBOUCAD Posté(e) le 12 avril 2019 Auteur Posté(e) le 12 avril 2019 Ah super, mais quand j'applique le programme les entiers on ensuite la valeur ("DefaultVal" . 0.0), c'est ce que je constate après avoir fait:(foreach i (caddr (ade_odtabledefn "A_RE")) (print i))Une autre chose qui m'était sortie de la tête, tout les points du dessin doivent être dans le même bloc point à la fin du dessin (pendant le traitement du dessin ils ont des blocs points différents ce qui facilite leur identification), et avec un attribut différent en fonction du nom du calque.Et pour tous les points du dessin leur coordonnée Z doit être associé au champ (du bloc point de substitution) "TAL_COTZ".Ces processus doivent être réalisé à la fin du dessin et ne doivent donc pas être intégré au code déjà existant (procédure attribution des tables, remplissage attribut, etc..), il faut en créer un nouveau.Je t'envoie le tableau en MP. Citer
bonuscad Posté(e) le 12 avril 2019 Posté(e) le 12 avril 2019 Ah super, mais quand j'applique le programme les entiers on ensuite la valeur ("DefaultVal" . 0.0), c'est ce que je constate après avoir fait:(foreach i (caddr (ade_odtabledefn "A_RE")) (print i))Oui en effet, mais cela n'a aucune incidence, si tu passes par par "_adedefdata" c'est bien un entier qui apparaît dans la valeur par défaut. Et si le code fonctionne c'est le principal Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
NBAMBOUCAD Posté(e) le 12 avril 2019 Auteur Posté(e) le 12 avril 2019 Ah d'accord, ouais ça marche tip top. Ah et j'ai remarqué un petit défaut pour l'attribution des valeurs du champs "*_TYPE", le programme applique les règles d'attribution de la liste "l_der" à toutes les lignes possédant un champ du type "*_TYPE", même ceux ne se trouvant pas dans la liste "l_der".Pourrait-on limiter cette attribution au seuls éléments de la liste? Merci!! Citer
Messages recommandés