Aller au contenu

steelbe

Membres
  • Compteur de contenus

    28
  • Inscription

  • Dernière visite

steelbe's Achievements

Newbie

Newbie (1/14)

-1

Réputation sur la communauté

  1. Salut Merci pour la traduction que tu as faite pour moi. Je prendrai le temps de le décoder avant de vraiment utiliser. Concernant, les remarques tu as à emis sur la Programmation Orientée Objet c'est le sujet que j'étudis en ce moment. Aussi je tiendrai compte des remarques concernant les différents points que tu as soulevé. Il est vrai que la courbe d'apprentissage est différentes du Lisp et bien souvent on passe beaucoup de temps à écrir du code :angry: pour parfois un résultat minimal. Mais quand le programme est terminé le voir fonctionner procure une certain satistaction B) Merci Gile
  2. Salut, Il est vrai que je n'ai pas encore exploiter puissance de la programmation lisp car beaucoup plus peu être fait avec ce langage de programmation. J'ai décidé d'apprendre Visual Basic pas VBA pour réaliser ce programme. Pour la petit histoire, j'ai récupéré un code lisp sur internet (lisp synchronisation). Quand l'utilisateur selectionne un élement de la premiere liste la deuxieme se mait à jour. Tres intéressant comme concept je n'y avais pas pensé. J'aurais rassemblé cinq codes lisp en un via une seul boite de dialogue d'ou l'un des sujets que j'avais posté precedement; pour comprendre comment faire pour que le programme puisse comprendre comment exécuter le code ;;;action_tile .............. N'obtenant pas de réponse j'ai décidé de me lancer dans l'apprentissage de VB qui pour moi ne serais pas plus facile à apprendre mais me permettra de réaliser se programme. 1) creation d'une boite de dialogue list_box, combo_box (récuperant la valeur h pour certain b pour d'autre dans la base de données, text_box (pour definir une dimension, text_box en (readonly pour la lecture de certain données), image et bouton (ok cancel)(-->fait) 2) création d'une base de données -->(fait) 3) création de trois sous-routines -->(en cours de creation)d'ou se sujet 4) Manipulation de conditions (selon la selection de la list_box certain combo_box seront grisés)si cela est possible. Concernant les valeurs (h b tw tf r) elles seront récupérées dans la base de données. "lgd" sera la valeur d'un text_box (decimal) qui definira une dimension que le programme utilisera.
  3. Boujour à tous, J'espère que je ne vous derange pas trop. Cela sera l'un de mes dernier sujet. Y aurait-il une ame charitable pour me traduire se code Lisp en Visual Basic en tant que sous routine si et seulement si cela est possible. (if ddiag1 (progn (setq bpt (getpoint "\nGet base point of section 3D : ")) (setq S1 (polar bpt Pi (/ b 2))) (setq S2 (polar S1 (/ Pi 2) tf)) (setq S3 (polar S2 0 (- (/ (- b tw) 2) r))) (Setq PP1 (polar S3 0 r)) (setq S4 (polar PP1 (/ Pi 2) r)) (Setq S5 (polar S4 (/ Pi 2) (- h (* (+ tf r) 2)))) (setq S6 (polar S3 (/ Pi 2) (- h (* tf 2)))) (Setq S7 (list (car S1) (cadr S6))) (Setq S8 (list (car S1) (+ (cadr S1) h))) (setq S9 (polar S8 0 B)) (Setq S10 (list (car S9) (cadr S7))) (Setq S11 (list (+ (car S6) (+ (* r 2) tw)) (cadr S10))) (Setq S12 (polar S5 0 tw)) (Setq S13 (polar S4 0 tw)) (Setq S14 (list (+ (car S3) (+ (* r 2) tw)) (cadr S2))) (Setq S15 (list (car S10) (cadr S14))) (setq S16 (list (car S15) (cadr S1))) (Command "_.pline" S1 S2 S3 "ARC" S4 "LI" S5 "ARC" S6 "LI" S7 S8 S9 S10 S11 "ARC" S12 "LI" S13 "ARC" S14 "LI" S15 S16 S1 "" ) ;;Creation of a 3DSolid (Command "_.extrude" "D" "" lgd) ) ) J'ai beaucoup entendu parlé de VB et j'essais de mettre le pied à l'étrier Merci d'avance à tous ;)
  4. Bonsoir à tous, Je cherche à faire apparaitre un fichier sld dans une boîte de dialogue de manière à se que le fichier qui apparaît remplit complètement la surface disponible. Mais je n'y arrive pas, et j'aimerais comprendre comment faire. voici l'extrait du code DCL : :image { key = "cliche"; height = 15; width = 20; fixed_height = true; fixed_width = true; alignment = centered; color = -2; aspect_ratio = 0; is_enabled = false; } Ainsi que l'extrait du code Lisp : (setq x (dimx_tile "cliche") y (dimy_tile "cliche") ) (start_image "cliche") (fill_image 0 0 120 160 -2) (slide_image 0 0 120 160 "IPE") (end_image) En jouant avec les valeurs 120 et 160, j'arrive à bouger le .sld dans la fenêtre mais je n'y arrive pas. Je dois probablement passer au traver de quelque chose. Et pourtant en donnant la valeur 0 à aspect_ratio le problème reste le même. Merci d'avance pour votre aide steelbe
  5. Bonjour Patrick, Suite au message de la dernière fois, j'ai redefinis seque je souhaite faire et cela se fera deux étape. La première est de definir les valeurs que je souhaite voir apparaître dans lors d'une mise à jour. donc: 1)la création d'une boite de dialogue pour definir les valeus d'attibuts et les enregistrer dans un fichier au format .csv 2)je clickerai sur un autre icône pour faire la mise à jour. En ce moment j'ai crée un DCL pour selectionner les valeurs que je souhaite voir apparaitre lorsque la mise à jour se fera. cette boîte de dialogue se compose de neuf combo_box. (setq Reference_1 (list "---" "BARRIER 77" "PENGURAD EXPRESS" "HARDTOP XP")) (start_list "Reference_1") (mapcar 'add_list Reference_1) (end_list) (setq Thickness_1 (list "---""40" "80" "120" "140" "160" "180")) (start_list "Thickness_1") (mapcar 'add_list Thickness_1) (end_list) (setq Color_1 (list "---" "BUFF" "RAL.5073" "RAL.9001" "RAL.9002")) (start_list "Color_1") (mapcar 'add_list Color_1) (end_list) etc.............. ; Default attributes from the combo_box (setq Reference_1 (get_tile "Reference_1")) (setq Thickness_1 (get_tile "Thickness_1")) (setq Color_1 (get_tile "Color_1")) etc............. (if ddiag1 (progn (setq blockname "HYPERSPECIFICATIONCOAT") je bloc sur l'écriture des données dans un fichier csv car je souhaite faire apparaître dans la colonne A le nom du bloc, colonne B les Tags, colonne C les valeurs associées ex: ex: colonne A Colonne B Colonne C HYPERSPECIFICATIONCOAT REFERENCE_1 valeur du (setq Reference_1 (get_tile "Reference_1")) HYPERSPECIFICATIONCOAT THICKNESS_1 valeur du (setq Thickness_1 (get_tile "Thickness_1")) HYPERSPECIFICATIONCOAT COLOR_1 valeur du (setq Color_1 (get_tile "Color_1")) Quelle methode puis-je utiliser pour récupérer le nom du block ses attributes ainsi que les valeurs que j'aurai préalablement choisi dans le DCL. Quand j'aurai résolu ce problème je passerai au deuxième code pour faire les mise à jour Si je pouvais obtenir de l'aide sur la methode à employer pour rassembler l'ensemble de ces informations cela me perméttra d'avancer. Les Tags et leur valeurs provienne du DCL le nom du block je l'ai défini sous la forme: (setq blockname "HYPERSPECIFICATIONCOAT") Merci d'avance steelbe
  6. Bonsoir Patrick_35, Cette idée de Xref ne ma pas traversé l'esprit car l'idée que j'avais était de créer une icône dans la barre d'outil pour faire apparaitre une boite de dialogue et définir les nouvelles spec se qui métrait les information à jour. Ce fichier extérieur serait pour moi un fichier excel que je collerais avec un lien dans le template source. Cette solution je l'ais essayé et elle fonctionne car à chaque ouverture d'un plan, les données se mettent à jour. Mais je souhaitais simplifier cette procédure en qui serait si je peu dire (invisible)donc la source seait inaccessible à d'autre utilisateurs qui voudraient ajouter leur petit grain au fichier source. Je regarderai la fonction (vlax-ldata-get) pour voir se qu'elle peut m'apporter de plus. Je reviendrai vers toi pour t'informer du résultat si j'y arrive. Merci :)
  7. Bonsoir à tous, Je suis de retour sur ce forum pour relancer un sujet que j'aivais édité concernant la mise à jour d'informations dans un cartouche. En resumé, vous crée un projet avec des plan de debits et d'assemblage. Ces dossier de plans peut contenir de 20 à 200 plans. En cas de reconduction, une mise à jour des specifications peinture peuvent changer. L'idée est de créer un code Lisp qui mettra à jour la spec peinture sur tous les plans concernés. Pour cela, j'ai commencé à écrire un code avec une boîte de dialogue avec 6 list_box pour mettre à jour les informations. Suite à un sujet de (Gile) sur les dictionnaires j'ai commencé le code de la manière suivante: 1) (defun c:specpeinture (/ id REFERENCE_1 EP_1 TEINTE_1 REFERENCE_2 EP_2 TEINTE_2) (setq id (load_dialog "peinture_form.dcl")) (if (not (new_dialog "peinture_form" id)) (exit)) (setq REFERENCE_1 (list "PENGUARD EXPRESS" "HARDTOP XP" "select 3" "select 4" "select 5" "select 6" "nselect 7")) (start_list "REFERENCE_1" 5) (mapcar 'add_list REFERENCE_1) (end_list) (setq EP_1 (list "10" "20" "30" "40" "50" "60" "70" "80" "90" "100" "150" "180")) (start_list "EP_1" 5) (mapcar 'add_list EP_1) (end_list) (setq TEINTE_1 (list "RAL.9001" "RAL.9002" "BUFF" "GRIS" "BLANC")) (start_list "TEINTE_1" 5) (mapcar 'add_list TEINTE_1) (end_list) ;;Les trois liste crées se repète mais avec la reference _2, ep_2 etc..... (set_tile "REFENECE_1" (CAR "REFENECE_1")) (set_tile "EP_1" (CAR "EP_1")) (set_tile "TEINTE_1" (CAR "TEINTE_1")) (action_tile "annuler" "(done_dialog 0)") (action_tile "accept" "(getdic)" "(updatdic)") 2)La création du dictionnaire et l'ajout de données (defund (getdic) (setq xname (entmakex '((0 . "DICTIONARY") (100 . "AcDbDictionary")))) ;; Ajouter le dicitonnaire au dictionnaire des objets nommés (dictadd (namedobjdict) "SPECIFICATIONS_PEINTURE" xname) ;; retrouver le dictionnaire (setq dict (dictsearch (namedobjdict) "SPECIFICATIONS PEINTURE")) ;; créer des objets LDATA avec des données (vlax-ldata-put "SPECIFICATIONS_PEINTURE" "REF_1" "PENGUARD EXPRESS") (vlax-ldata-put "SPECIFICATIONS_PEINTURE" "E_1" '(40)) (vlax-ldata-put "SPECIFICATIONS_PEINTURE" "TEI_1" "BUFF") (vlax-ldata-put "SPECIFICATIONS_PEINTURE" "REF_2" "HARDTOP XP") (vlax-ldata-put "SPECIFICATIONS_PEINTURE" "E_2" '(80)) (vlax-ldata-put "SPECIFICATIONS_PEINTURE" "TEI_2" "RAL.9002") 3)La mise à jour du dictionnaire (defund (updatedic) ;; retrouver le dictionnaire (setq dict (dictsearch (namedobjdict) "SPECIFICATIONS PEINTURE")) ;; Metre à jour le dictionnaire (dictrename (SPECIFICATIONS PEINTURE) "REFENECE_1" "REF_1") (dictrename (SPECIFICATIONS PEINTURE) "EP_1" "E_1") (dictrename (SPECIFICATIONS PEINTURE) "TEINTE_1" "TEI_1") ) 4)C'est à ce niveau que je bloc car je ne sais pas comment faire apparaître les données du dictionnaire dans le template sous la forme d'un tableau. Ma première idée à été de creer un block avec des attributs mais cela prendrait trop de temps car tous les plans contenant ce block devront être mise à jour manuellement. Dans le cas d'une quantité importante de plan cette opération devient très côuteux en temps pour la mise à jour. Pourriez-vous m'éclairer sur la methode à appliquer pour s'implifier cette mise à jour en fesant le lien entre les données du dictionnaire et son apparition sur le template. Merci d'avance pour votre aide sur cette fonction steelbe
  8. Bonsoir à tous le monde, Je souhaite créer une boite de dialogue avec deux frames 1ere(list_box et desux zone_list) 2eme (list_box et deux zone_list pour insérer des informations dans un bloc avec attribus. J'ai crée une boite de dialogue et un fichier Lisp. Mon problème est de faire le lien entre les informations sélectionnées dans la boite de dialogue et le bloc pour que ses informations apparaisse lors de l'utilisation de se bloc. DCL: peinture_form : dialog { label = "Spécification Peinture"; :row { : boxed_colum { label = "Primary Coat"; fixed_width=true; width=22; : list_box { label = " REFERENCE PC"; key = "REFERENCE 1"; height = 15; width = 25; multi_select = false; fixed_width_front = true; list1 = "select 1\nselect 2\nselect 3\nselect 4\nselect 5\nselect 6\nselect 7"; value = "0"; } : popup_list { label = "Thickness OF PC :"; key = "EP_1"; width = 40; multi_select = false; fixed_width_front = true; list2 = " selec 1\nselec 2\nselec 3\nselec 4\nselec 5"; value = "0"; } : popup_list { label = "Teinte of PC :"; key = "TEINTE_1"; width = 40; multi_select = false; fixed_width_front = true; list3 = " selec 1\nselec 2\nselec 3\nselec 4\nselec 5"; value = "0"; } } : boxed_colum { label = "Secondary Coat"; fixed_width=true; width=22; : list_box { label = " REFERENCE SC"; key = "REFERENCE_2"; height = 15; width = 25; multi_select = false; fixed_width_front = true; list1 = "select 1\nselect 2\nselect 3\nselect 4\nselect 5\nselect 6\nselect 7"; value = "0"; } : popup_list { label = "Thickness of SC :"; key = "EP_2"; width = 40; multi_select = false; fixed_width_front = true; list2 = " selec 1\nselec 2\nselec 3\nselec 4\nselec 5"; value = "0"; } : popup_list { label = "Teinte of SC :"; key = "TEINTE_2"; width = 40; multi_select = false; fixed_width_front = true; list3 = " selec 1\nselec 2\nselec 3\nselec 4\nselec 5"; value = "0"; } } :row { :button { key = "accept"; label = "OK"; is_default = true; } :button { key = "Annuler"; label = "Cancel"; is_default = false; is cancel = true; } } } LISP: (defun c:peinture_choix (/ id REFERENCE_1 EP_1 TEINTE_1 REFERENCE_2 EP_2 TEINTE_2) (setq id (load_dialog "peinture_form.dcl")) (if (not (new_dialog "peinture_form" id)) (exit)) (setq REFERENCE_1 (list "select 1" "select 2" "select 3" "select 4" "select 5" "select 6" "select 7")) (start_list "REFERENCE_1" 5) (mapcar 'add_list REFERENCE_1) (end_list) (setq EP_1 (list "selec 1" "selec 2" "selec 3" "selec 4" "selec 5")) (start_list "EP_1" 5) (mapcar 'add_list EP_1) (end_list) (setq TEINTE_1 (list "selec 1" "selec 2" "selec 3" "selec 4" "selec 5")) (start_list "TEINTE_1" 5) (mapcar 'add_list TEINTE_1) (end_list) (setq REFERENCE_2 (list "select 1" "select 2" "select 3" "select 4" "select 5" "select 6" "select 7")) (start_list "REFERENCE_2" 5) (mapcar 'add_list REFERENCE_2) (end_list) (setq EP_2 (list "selec 1" "selec 2" "selec 3" "selec 4" "selec 5")) (start_list "EP_2" 5) (mapcar 'add_list EP_2) (end_list) (setq TEINTE_2 (list "selec 1" "selec 2" "selec 3" "selec 4" "selec 5")) (start_list "TEINTE_2" 5) (mapcar 'add_list TEINTE_2) (end_list) (set_tile "REFENECE_1" (CAR "REFENECE_1")) (set_tile "EP_1" (CAR "EP_1")) (set_tile "TEINTE_1" (CAR "TEINTE_1")) (set_tile "REFENECE_2" (CAR "REFENECE_2")) (set_tile "EP_2" (CAR "EP_2")) (set_tile "TEINTE_2" (CAR "TEINTE_2")) (action_tile "annuler" "(done_dialog 0)") (action_tile "accept"...................) (if (= ddiag 1) (princ "\n \n ...end of dialogue \n ") ) (if (= ddiag 2) (progn ) ) Les termes, REFERENCE_1,EP_1,TEINTE_1,REFERENCE_2,EP_2 ET TEINTE_2 sont les attributs crée dans le block. Existe t-il un code pour lier cette boite de dialogue avec le block ayant comme nom:(PEINTUREPROTECTIONCOAT). Merci d'avance pour votre aide STEELBE
  9. Bonjour Gile, Suite à ta réponse, j'ai essayé CTAB et cela fonctionne. C'est se que je recherchais. Merci pour ton aide. Aussi, j'aimerai que tu m'aide à modifier le code de PLine Lisp; ton code est tres interesant car je souhaite l'utiliser pour faire des PID cependant, il n'y a que trois attributs mais il ne correspondent pas à ce que je souhaite. La finalité serais du genre : Noméro de ligne-Type-Section-Numéro d'ordre-Matière--Classe. (70 EGY 500 500 PEHD PN16). Je vai essayer de modifier ton code et voir si il fonctionne et je reviendrai vers toi pour l'améliorer. Merci d'avance
  10. Bonjour à tous, Je souhaite savoir si il est possible de récupérer via la création d'un attribut de bloc dans un cartouche le nom d'une présentation (automatisation de certaine information dans le cartouche). Je pensais à une expression (variableLisp ou Variable système) si possible. La seul méthode que j'ai trouvé est de récupérer le nom d'une mise en page. Cependant, quand une autre personne utilise le fichier il ou elle ne pense pas à sélectionner le nom de la mise en page lors de l'impression. De se faite, le nom de la mise en page n'apparait pas dans le cartouche. Merci d'avance pour une solution que vous pourriez me proposer. STEELBE :)
  11. steelbe

    RATIO_BUTTON CODE

    Salut gile, J'ai résolu le problème en passant par deux boite de dialogue. Une pour choisir le type Une autre pour définir les dimensions. Concernant les deux solutions que tu m'as proposé, il y a des messages d'erreurs. 1er solution: (lambda ($KEY $VALUE $DATA $REASON $X $Y) (chxradio (get_tile "CHOIXDUGOUSSET")) (done_dialog) ) 2eme solution: (chxradio gousset) Cependant, je continue à travailler sur le problème car cela serait mieux si une seul boite de dialogue pouvait être utilisé.
  12. steelbe

    RATIO_BUTTON CODE

    Salut, Suite à la réponse il y a un peux de confusion, entre temps, j'ai essayé la fonction iniget qui fonctionne puis je suis revenu au radio_button et j'ai essayé de le faire fonctionner en ajoutant; la sub-fun : (chxradio) ainsi que : (action_tile "accept" "(setq ddiag1 T) (chxradio $value) (done_dialog 1)") mais le fichier ne fonctionne toujours pas. DCL est: GOUSSETform: dialog { label = "GOUSSET SHAPE"; spacer; spacer; :column{ :row{ :boxed_radio_column {fixed_width = true; label = " CHOIX DU GOUSSET "; key = "CHOIXDUGOUSSET"; spacer; :row { :radio_button { label = " Gousset Droit "; key = "GD"; value = "1"; } :radio_button { label = " Gousset Gauche "; key = "GG"; }} :edit_box { label = "Largeur :"; key = "L"; edit_width = 10; value = " "; } :edit_box { label = "Hauteur :"; key = "H"; edit_width = 10; value = " "; } :edit_box { label = "Chanfrein X :"; key = "EL"; edit_width = 10; value = " "; } :edit_box { label = "Chanfrein Y :"; key = "EH"; edit_width = 10; value = " "; } :edit_box { label = "Chanfrein X1 :"; key = "X1"; edit_width = 10; value = " "; } :edit_box { label = "Epaisseur mm :"; key = "EP"; edit_width = 10; value = " "; } spacer_1; } :row { :image { key = "cliche"; height = 10; width = 30; alignment = right; color = -2; aspect_ratio = 0; is_enabled = false; } } } } spacer; :row { spacer; spacer; spacer; ok_cancel; } } LSP : (defun C:GOUSSET_connect (/ foo chxradio id GD GG L H XL YH X1 EP) (defun foo (key val /) (if (distof val) (set (read key) (distof val)) (progn (alert "Nécessite un nombre valide") (mode_tile key 2) ) ) ) ;///////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////////////////////////////// (setq id (load_dialog "GOUSSETform.dcl")) (if (not (new_dialog "GOUSSETform" id)) (exit) ) ;//////////// (setq L 140) (setq H 150) (setq EL 30) (setq EH 40) (setq X1 100) (setq EP 12) ;//////////////////////// (set_tile "L" (rtos L)) (set_tile "H" (rtos H)) (set_tile "EL" (rtos EL)) (set_tile "EH" (rtos EH)) (set_tile "X1" (rtos X1)) (set_tile "EP" (rtos EP)) ;///////////////////////////// (action_tile "L" "(foo \"L\" $value)") (action_tile "H" "(foo \"H\" $value)") (action_tile "EL" "(foo \"EL\" $value)") (action_tile "EH" "(foo \"EH\" $value)") (action_tile "X1" "(foo \"X1\" $value)") (action_tile "EP" "(foo \"EP\" $value)") (action_tile "accept" "(setq ddiag1 T) (chxradio $value) (done_dialog 1)") (action_tile "annuler" "(done_dialog 0)") ;//////////////////////////////////////////////////////////// (start_dialog) (unload_dialog id) ;//////////////////////////////// (defun chxradio (chx) (cond ((= chx "GD") (Setq bp (getpoint "\nBase point of Gousset :")) ;;Retrieve gousset dimensions (Setq RCH1 (polar bp Pi L)) (Setq RCH2 (polar RCH1 (/ Pi 2) H)) ; Draw gousset shape right ;;----------------------------------------------------- ;; Shape coordonnate according to the following points. ;;----------------------------------------------------- (Setq G1 (polar bp Pi (- L EL))) (Setq G2 (polar RCH1 (/ Pi 2) EH)) (Setq G3 (polar RCH2 0 X1)) (Setq G4 (polar G3 0 (- L X1))) (Command "_pline" bp G1 G2 G3 G4 bp "") (command "_extrude" "D" "" EP "") ) ((= chx "GG") (Setq bp (getpoint "\nBase point of Gousset :")) ;;Retrieve gousset dimensions (Setq RCH1 (polar bp 0 L)) (Setq RCH2 (polar RCH1 (/ Pi 2) H)) ; Draw gousset shape left ;;----------------------------------------------------- ;; Shape coordonnate according to the following points. ;;----------------------------------------------------- (Setq G1 (polar bp 0 (- L EL))) (Setq G2 (polar RCH1 (/ Pi 2) EH)) (Setq G3 (polar RCH2 Pi X1)) (Setq G4 (polar G3 Pi (- L X1))) (Command "_pline" bp G1 G2 G3 G4 bp "") (command "_extrude" "D" "" EP "") ) ) ) ) Je pense qu'il manque un bout de code pour le faire fonctionner et je n'ai pas encore compris comment m'y prendre. L'exemple me parle mais n'arrive pas à l'insérer dans mon code.
  13. steelbe

    RATIO_BUTTON CODE

    Bonjour à tous J'ai crée une boite de dialogue avec un boxed_ration_column qui comporte deux ration_buttons et six edit_box. Je souhaite choisir entre dessiner un élément sur mon coté droit ou cote gauche. Les six edit_box sont utilisés dans les deux cas. La seul différence est que si je selectionne le ration_button: (droit) Pi sera utilisé dans le code sens de depart de la pline (gauche) 0 sera utilisé dans le code sens de départ de la pline. Mon probleme est de définir le code qui déterminera le ration_button choisi puis exécutera le code approprié. Merci d'avance
  14. Bonjour gile 1) Effectivement le chemin d'accès n'était pas correct car le sous dossier dans lequel se trouve le DCL n'était pas spécifié; problème pour cela le problème est réglé. 2) Aussi j'ai légèrement modifier le code en créant directement la liste dans le fichier Lisp (setq llist '(""IPE 80" "IPE 100" etc............)) (start_list " lst ") (mapcar 'add_list llist) (end_list) La boite de dialogue apparait, je peu sélectionner une valeur et donner une valeur concernant l'edit_box. 3) Maintenant, un autre problème survient; lorsque je clic OK le code se poursuit en me demandant le point d'origine de la section. Je place une valeur ex: 0,0,0 puis il y a une interruption du code avec le message suivant ;erreur:fonction incorrect: ( 0.0 0.0 0.0 ) cela intervient pour n'importe coordonnée que j'attribue au point de base pour l'insertion de la section. D'ou peut provenir l'erreur??? 4) Concernant la ligne de code (if (=cancel) (setq annuler .................) Je peu laisser se code si et seulement si je declare ok et cancel par: (setq ok accepter) (setq annuler cancel) Merci de m'éclaircir sur ces deux point
  15. Bonjour à tous, J'ai eu l'idée de créer une boite de dialogue comprenant: une zone de liste, une image et un edit_box pour insérer un profil type IPE pour commencer. La boite de dialogue fonctionne. Le moment venue de créer le code Lisp pour le tester, le code ne fonctionne pas je me suis aidé du présentent sujet sur les condition et pourtant je n'y arrive pas. A l'execution du code ce message apparait Error: sortie/ abandon (defun C:insert_ipe (/ lst lgd base_point) (defun foo (key val /) (if (distof val) (set (read key) (distof val)) (progn (alert "Nécessite un nombre valide") (mode_tile key 2) ) ) ) (setq id (load_dialog "IPE_dB.dcl")) (if (not (new_dialog "IPE_dB" id)) (exit) ) (start_list "lst") ;Specify the name of the list box. (mapcar ' add_list lst) ;Specify the AutoLISP list. (end_list) (initget 9) (cond ((eq lst "IPE 80") ;;Get default values (setq lst 0) (setq lgd 1000) (set_tile "lst" (lst)) (set_tile "lgd" (rtos lgd)) (action_tile "lst" "(lst)") (action_tile "lgd" "(foo \"lgd\" $value)") (setq x (dimx_tile "cliche") y (dimy_tile "cliche") ) (start_image "cliche") (slide_image 0 0 x y "") (end_image) (action_tile "accept" "(setq ok T) (done_dialog)") (action_tile "annuler" "(setq Cancel T) (unload_dialog id)") (start_dialog) (unload_dialog id) (if (= ok) (progn (setq base_point (getpoint "\nBase Point of hole: ")) (setq b 46 H 80 tw 3.8 tf 5.2 r 5 ) (setq S1 (polar base_point Pi (/ b 2))) (setq S2 (polar S1 (/ Pi 2) tf)) (setq S3 (polar S2 0 (- (/ (- b tw) 2) r))) (Setq PP1 (polar S3 0 r)) (setq S4 (polar PP1 (/ Pi 2) r)) (Setq S5 (polar S4 (/ Pi 2) (- H (* (+ tf r) 2)))) (setq S6 (polar S3 (/ Pi 2) (- H (* tf 2)))) (Setq S7 (list (car S1) (cadr S6))) (Setq S8 (list (car S1) (+ (cadr S1) H))) (setq S9 (polar S8 0 b)) (Setq S10 (list (car S9) (cadr S7))) (Setq S11 (list (+ (car S6) (+ (* r 2) tw)) (cadr S10))) (Setq S12 (polar S5 0 tw)) (Setq S13 (polar S4 0 tw)) (Setq S14 (list (+ (car S3) (+ (* r 2) tw)) (cadr S2))) (Setq S15 (list (car S10) (cadr S14))) (setq S16 (list (car S15) (cadr S1))) ;;/////////////////////////////////////////////////////////////////// ;;//Draw section shape// ;;////////////////////// (Command "_pline" base_point S1 S2 S3 "ARC" S4 "LI" S5 "ARC" S6 "LI" S7 S8 S9 S10 S11 "ARC" S12 "LI" S13 "ARC" S14 "LI" S15 S16 base_point "" ) ;;Creation of a solid_3d (Command "_extrude" "D" "" lgd "") ) ) (if (= cancel) (setq annuler ((setq cancel T) (unload_dialog id)))) ) Mon but est de me facilité la tache en sélectionnent un type de profil et en lui assignent une longueur cela serait plus facile à mon avis. Précédemment j'ai crée un code Lisp ou je devais moi même rentrer les valeur comme base hauteur épaisseur (ame, semelle) rayon giration ce code fonctionne mais commence à être un peut lourd. Pourriez vous m'aider à résoudre se problème en m'expliquant si possible ou j'ai commis des erreurs. Merci d'avance
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité