
steelbe
Membres-
Compteur de contenus
28 -
Inscription
-
Dernière visite
Tout ce qui a été posté par steelbe
-
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
-
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.
-
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 ;)
-
Comment faire apparaitre un .sld dans un DCL
steelbe a posté un sujet dans Pour aller plus loin en LISP
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 -
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
-
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 :)
-
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
-
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
-
COMMENT RECUPERER LE NOM D\'UNE PRESENTATION DANS UN CARTOUCHE!!!!
steelbe a répondu à un(e) sujet de steelbe dans Pour aller plus loin en LISP
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 -
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 :)
-
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é.
-
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.
-
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
-
Creer des conditions en partant d\'une zone de liste!!!
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
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 -
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
-
Comment imbriquer des conditions dans app LISP
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
Bonjour à tous, Toujours dans la même optique de rendre mes code lisp plus conviviale, j'ai crée un dcl à utiliser pour insérer des profiles IPE et HEA. ce dialogue comprend deux popup_list. Une regroupant les deux types de profile étant IPE et HEA et un deuxième popup_list avec les différentes hauteurs de poutrelle ex: 80 100 120 140 etc........ J'ai compris le fonctionnement de (COND) cependant, je me heurt à un problème pour l'évaluation de la condition à appliquer car le code devra évaluer deux conditions simultanément étant le type (I ou H) ainsi que la hauteur 100 120 etc ... provenant des popup_list. Apres de nombreux essais la boite de dialogue apparait, je définis les valeurs que je souhaite mais il ne me dessine qu'une section le HEA 100 cela provient peut être des valeurs initialisé dans le lisp. Peut-etre existe t-il un code pour effectuer cette étape. Merci pour l'aide que vous pourrez m'apporter sur se problème. -
Comment lier une boite de dialoge à un fichier lisp
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
Salut, Suite à la question sur l'insertion d'une image, j'ai réussi à écrire le code cependant, l'image apparait tout petit par rapport à la fenêtre crée dans la boite de dialogue. j'ai essayé de jouer sur la aspect ratio dans le dcl mais cela ne règle pas le problème. Dois-je joué sur l'échelle de l'image crée ou existe t-il un code pour rendre l'image proportionnel par rapport à la fenêtre crée. -
Comment lier une boite de dialoge à un fichier lisp
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
Suite à l'exemple que tu m'as fournie, j'ai réussi à faire fonctionner le programme avec quelque modification tel que la ligne get_tile que j'ais supprimé et je suis passé à la deuxieme partie. Concernant la l'autre partie, j'ai reussie à le faire fonctionner en tronconnant la boite de dialogue initiale que j'ais crée en 6 selon les conditions de percage. Maintenant, Je souhaite inserer une image dans chaque boite de dialogue lors de son apparition. le code que j'ai ecris dans le DCL est le suivant: :colum{ :image{ key="cliche"; height=5; width=10; aspect_ratio=1; is_enable=false; } } j'aimerai connaitre le code à ecrire dans le fichier LISP pour faire apparaitre une image dans la boite de dialogue. Merci -
Comment lier une boite de dialoge à un fichier lisp
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
Bonjour, (gile) Je n'ai toujours pas reussi à resoudre le probleme. voici la boite de dialogue que j'ai crée au format DCL PLATE_1 : dialog { label = "Plate Shape"; :boxed_column { label = "Dimensions :"; fixed_width = true; width = 30; :edit_box { label = "WIDTH :"; key = "wt"; edit_width = 10; value =" "; } :edit_box { label = "HEIGTH :"; key = "ht"; edit_width = 10; value =" "; } :edit_box { label = "THICKNESS :"; key = "thk"; edit_width = 10; value =" "; } spacer;spacer; } :row { : button { key = "accept"; label = "OK"; width = 15; is_default = true ; } : button { key = "cancel"; label = " ANNULER "; width = 15; is_default = false ; is_cancel = true ; } } } (defun C:PLATE (/ id wt ht thk) (setq id (load_dialog "PLATE_1.dcl")) (if (not (new_dialog "PLATE_1" id)) (exit) ) Puis j'ai utilisé ( set_tile ) pour l'écriture des valeurs dans la boite de dialogue si j'ai bien compris avec: (set_tile "wt" (rtos wt)) (set_tile "ht" (rtos ht )) (set_tile "thk" (rtos thk )) Suivi par la lecture des valeurs avec ( get_tile ) donc j'ai ecris les ligne suivant: (setq wt (atof (get_tile "wt"))) (setq ht (atof (get_tile "ht"))) (setq thk (atof (get_tile "thk"))) J'ai assigné des actions à OK et CANCEL avec: (action_tile "accept" "(setq ddiag 1)(done_dialog)" ) (action_tile "cancel" "(setq ddiag 2)(done_dialog)" ) l"ensemble de ses codes sont suivient par (start_dialog) Action si le bouton annuler est activé (if (= dddiag 1) (princ "\n...exist dialogue\n") ) Action si le bouton OK est activé (if (= ddiag 2) (progn (setq wt (atof (get_tile "wt"))) (setq ht (atof (get_tile "ht"))) (setq thk (atof (get_tile "thk"))) (Setq pt (getpoint "\nBase point of plate :")) (Setq pt1 (polar A1 (/ Pi 2) ht)) (Setq pt2 (polar A2 0 wt)) (Setq pt3 (list (car pt2) (cadr pt1))) (Command "_pline" pt pt1 pt2 pt3 pt "") (command "_extrude" "D" "" thk "") (done_dialog dcl_id) ) ) ) Dans le code LISP tu me dis que wt n'a pas été initialisé cependant, aucun code ne précede le code set_tile pourrais-tu m'indiquer les code que je devrais ecrire pour resoudre le probleme Merci -
Bonjour, Je me suis lancé dans la creation de boite de dialogue pour rendre mes app lisp plus conviviale. Apres de multiple tentative, j'ai réussis à creer une boite de dalogue et compris comment les creer via le lisp interface. Maitenant, je souhaite lier les deux boite de dialogue à app lisp (compiler) si je peux dire. J'ai séparé le lisp en deux pour essayé de le faire fonctionner. La premiére partie consiste à faire apparaitre une premiére boite de dialogue pour définir les données pour la création d'une platine. la deuxieme pour exécuter un percage sur cette meme platine. Je me suis base sur l'exemple d'un livre mais je bute sur un probleme de debugague. Quand je lance l'app, la boite e dialogue apparait puis l'interface lisp. Sur la ligne e command une erreur apparait: ERROR TYPE D'ARGUMENT INCORRECT NUMBERP NIL. Quand je click sur l'icone (dernière intérruoption) il me signale l'erreur sur la ligne des (SET_TILE wt (rtos wt)). le [ rtos wt ] est en surbrillance et je n'arrive pas à resoudre le probleme. Les valeur à récupérer sont des nombre comme largeur hauteur et epaisseur de la platine Sans résolution de se plobleme je ne peu pas passer a la deuxieme partie. Voici un winrar des boites de dialogue, le teste que j'ai commencé à faire avec la platine ainsi que l'app lisp compilé Ne pouvant pas coller de winrar dans mon message, je posterai les code ultérieurement Merci pour votre aide
-
comment faire apparaitre des image cliché dans une fenetre mosaique?
steelbe a répondu à un(e) sujet de steelbe dans Personnalisation, macros, DIESEL
Bonjour, (ERIC) Concernant la palette d'outils, elle ne m'inspire pas trop. Si elle resemblait à celle de TurboCad ou autre, je l'aurais utilisé. Cependant, je l'ai testé et il est vrai que cela est plus simple que de créer un menu mosaique. (lili2006) J'ai conculté le sujet que tu m'as recommandé cela ne ma pas plus avancé. Le script que tu as posté est illisible !!!! :casstet: (REBCAO) Les explications que tu m'as fournis, m'ont beaucoup aidé. J'ai repris la procedure et mon menu mosaique fonctionne. merci pour ton aide. Thank you -
Bonjour à tous Je souhaite personnaliser ma bar d'outils en ajoutant une fenetre mosaique. 1) j'ai crée un certain nombre de blocs avec leur attributs 2)Mclicle, pour creer un cliché de chaque bloc 3)shell, slidelid IPE, apparition de l'interpréteur, écriture de la biblio... 4) Personnalisation menus 5)creation des command ^c^c-insérer;IPE_100; 6)creation d'une commande pour faire apparaitre la fenetre mosaique 7) La fenetre mosaique apparait mais aucun cliche, ni texte n'apparait J'aimerais resoudre et comprendre le probleme, car j'ai un code VBA pour regrouper toutes les bloc inserer ainsi que la quantité par bloc et l'exporter vers excel. Le fichier LISP que j'ai crée pour dessiner un profile ( IPE HEA ect......) n'ai pas adapté pour etre utilisé avec ce code VBA. Question!!! Est-il possible de creer un LISP pour répertorier l'ensemble des solides crée par un fichier LISP et les proceder à un comptage????????
-
Bonjour à tous les progammeur, Je souhaite developper un module avec des icones ou via un menu deroulant en VB pour TurboCad. Exist-il des progammeurs utilisant se language de programation et qui seraient intéresse par se type de projet. Merci d'avance
-
Comment imbriquer des conditions dans app LISP
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
Merci BONUSCAD, Le code que tu à posté fonctionne à merveille. :) -
Comment imbriquer des conditions dans app LISP
steelbe a répondu à un(e) sujet de steelbe dans Visual LISP
Bonjour Bonuscad, Sur les deux réponses que j'ai reçu, ta réponse est la plus approprié. Cependant, je n'arrive pas à faire fonctionner le programme. un message d'erreur: erreur fonction....: AUTRE faisant référence à la dernière ligne des conditions: (T(........................)) J'ai tenté de placer Ou devrais-je placer l'ensemble des valeurs, points de références ainsi que les commandes pour exécuter le programme. Merci