CADxp: Object DCL et Lisp - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Object DCL et Lisp

#21 L'utilisateur est hors-ligne   DenisHen 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3404
  • Inscrit(e) : 17-décembre 05
  • LocationDIERREY SAINT JULIEN (10190)

Posté 20 octobre 2010 - 17:53

Salut,

Merci à tous... J'ai enfin saisie quelque chose ! ! !
Mais en DCL...( donc, pas "chargé" mais juste "appelé" )

Mais il me reste un petit problème, (gile) a posté çà en 2005 :
pop_up:dialog{

  label="Pop_up exemple";

  :boxed_column{

    label="Choisissez un nombre";

    :popup_list{

      label="Nombre :";

      key="nbr";

      edit_width=10;

    }

  }

  ok_cancel;

} 


Le LISP qui le controle :
(defun c:pop_up (/ liste n nbre)

  (setq liste (list "10" "20" "30" "40"))

  (setq dcl_id (load_dialog "pop_up.dcl"))

  (if (not (new_dialog "pop_up" dcl_id))

    (exit)

  )

  (start_list "nbr")

  (mapcar 'add_list liste)

  (end_list)

  (action_tile

    "accept"

    "(setq nbre (atof (nth (atoi (get_tile \"nbr\")) liste)))

    (done_dialog))"

  )

  (start_dialog)

  (unload_dialog dcl_id)

  (princ nbre)

  (princ)

) 



Mais j'ai remplacé les nombres "10" "20" "30" ".... par des chaines "Denis" "Jean" "Albert"...
Et maintenant, le retour de la valeur cliqué dans le dcl retourne un "string" et non un "integer"
Je dois donc changer [surligneur] "atoi" [/surligneur] dans [surligneur] "(setq nbre (atof (nth (atoi (get_tile \"nbr\")) liste))) [/surligneur] par un [surligneur] "atos" [/surligneur]?

Il y a des années que je n'ai pas touché au LiSP... Et là, je rame...

Merci encore pour toute cette aide...

J'ai bien dégrossis mon projet... Je vois de bonnes perspectives avec le DCL (inclu dans AutoCAD) mais si je n'y arrive pas, ObjectDCL devrait bien m'aider...
Mais je vais voir avec mon BE pour une licence, sinon, je me l'achèterais personnellement...

Encore merci...

Denis...
Windows 10 Pro 64bits / AutoCAD MAP 3D 2019 (22.0.022.4)
Covadis 16 / Microstation V8i

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres...
Davantage d'avantages, avantagent davantage. (Bobby Lapointe)
La connaissance s'accroît quand on la partage.(Socrate)
0

#22 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8464
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 20 octobre 2010 - 18:10

CADy : je dis "DCL et ODCL (object ou open)" ce qui veut dire "DCL et ODCL (soit OpenDCL ou ObjectDCL)". Tu sais bien que je ne confonds pas.

DenisH, ici c'est un forum ODCL (malheureusement, je l'ai dit plus haut, Patrick n'a pas créé 2 sous-forum différents). Il me semble que ton dernier message qui parle de DCL n'est pas dans le bon forum. J'ajoute pour continuer la conversation sur tes dernières phrases, qu'ODCL est bien plus puissant et fourni que DCL.
Si tu as des difficultés avec le DCL, il faut publier un sujet dans le forum ad-hoc afin d'attirer l'attention de ceux qui savent et qui ne viennent pas forcement dans ce forum-ci.

Ouffff
0

#23 L'utilisateur est hors-ligne   DenisHen 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3404
  • Inscrit(e) : 17-décembre 05
  • LocationDIERREY SAINT JULIEN (10190)

Posté 20 octobre 2010 - 18:42

Salut,

Autant pour moi Tramber, j'avais oublié...

Et merci encore...

Denis...
Windows 10 Pro 64bits / AutoCAD MAP 3D 2019 (22.0.022.4)
Covadis 16 / Microstation V8i

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres...
Davantage d'avantages, avantagent davantage. (Bobby Lapointe)
La connaissance s'accroît quand on la partage.(Socrate)
0

#24 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11291
  • Inscrit(e) : 02-septembre 05

Posté 20 octobre 2010 - 19:02

Salut,

atos n'existe pas en LISP.


(setq nbre (atof (nth (atoi (get_tile \"nbr\")) liste)))


En DCL, pour tous les contrôles, la valeur renvoyé par la fonction LISP get_tile est une chaîne de caractère. De même que les valeurs qui alimentent les listes doivent être des chaines.

Pour les contrôles de type liste (popup_list ou list_box) la chaîne retournée par get_tile contient l'index de l'élément sélectionné dans la liste d'où le :
(nth (atoi (get_tile \"nbr\")) liste)
qui retourne le énième élément de liste après avoir converti la chaîne retournée par get_tile en entier.

Dans l'exemple, pour convertir l'élément retourné par l'expression ci-dessus en nombre réel, j'utilise la fonction atof, c'est l'appel à cette fonction qu'il faut supprimer pour avoir la valeur sous forme de chaîne.

Encore une fois, avant de s'attaquer aux boites dialogue (que ce soit avec le DCL AutoCAD ou avec les éditeurs ObjectDCL et OpenDCL) il faut absolument maitriser les fondamentaux du LISP.
Une boite de dialogue sans programme derrière, c'est pas plus performant qu'une image.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)