Aller au contenu

CadFrank

Membres
  • Compteur de contenus

    141
  • Inscription

  • Dernière visite

Tout ce qui a été posté par CadFrank

  1. Bonjour Gile, Je crois que tu as surment bien compris la question. Par contre, il me faudrait p-e quelque explication sur comment utiliser ton code. Ce que je veux vraiment faire est selection mes items dans un dessin CAD et ensuite créer une liste des ces élément. [CommandMethod("DBP")] static public void DynamicBlockProps() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; PromptStringOptions pso = new PromptStringOptions( "\nEnter dynamic block name or enter to select: " ); pso.AllowSpaces = true; PromptResult pr = ed.GetString(pso); if (pr.Status != PromptStatus.OK) return; Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { BlockReference br = null; // If a null string was entered allow entity selection if (pr.StringResult == "") { // Select a block reference PromptEntityOptions peo = new PromptEntityOptions( "\nSelect dynamic block reference: " ); peo.SetRejectMessage("\nEntity is not a block."); peo.AddAllowedClass(typeof(BlockReference), false); PromptEntityResult per = ed.GetEntity(peo); if (per.Status != PromptStatus.OK) return; // Access the selected block reference br = tr.GetObject( per.ObjectId, OpenMode.ForRead ) as BlockReference; } else { // Otherwise we look up the block by name BlockTable bt = tr.GetObject( db.BlockTableId, OpenMode.ForRead) as BlockTable; if (!bt.Has(pr.StringResult)) { ed.WriteMessage( "\nBlock \"" + pr.StringResult + "\" does not exist." ); return; } // Create a new block reference referring to the block br = new BlockReference( new Point3d(), bt[pr.StringResult] ); } BlockTableRecord btr = (BlockTableRecord)tr.GetObject( br.DynamicBlockTableRecord, OpenMode.ForRead ); // Call our function to display the block properties DisplayDynBlockProperties(ed, br, btr.Name); // Committing is cheaper than aborting tr.Commit(); } } private static void DisplayDynBlockProperties( Editor ed, BlockReference br, string name ) { // Only continue is we have a valid dynamic block if (br != null && br.IsDynamicBlock) { ed.WriteMessage( "\nDynamic properties for \"{0}\"\n", name ); // Get the dynamic block's property collection DynamicBlockReferencePropertyCollection pc = br.DynamicBlockReferencePropertyCollection; // Loop through, getting the info for each property foreach (DynamicBlockReferenceProperty prop in pc) { // Start with the property name, type and description if (prop.PropertyName == "Choisir") { ed.WriteMessage("\nProperty Type Code : " + prop.PropertyTypeCode.ToString()); ed.WriteMessage("\nProperty Value : " + prop.Value.ToString()); ed.WriteMessage("\nProperty UnitsType : " + prop.UnitsType.ToString()); } } } } Avec ce bout de code je peut trouver les propriété, par contre l'indexation de chaque propriéter change a chaque block. Donc, il mes impossible de pouvoir faire une liste avec ce bout de code. :( Par contre, je crois bien que ton code me pointe dans la bonne direction.
  2. Bonjour , est-il possible de faire une programme en C# pour calculer des block dynamic avec la valeur de la visibilité active& Merci,
  3. CadFrank

    Gerer les erreurs

    Bonjour Tramber, Merci pour ton aide. Donc, si je comprend bien tant que je substitu *error* dans mon code et que la touche ESC par exemple est appuyé l'erreur que j'ai remplacé sera envoyé. Et, admetton que dans ma commande le je vérifie l'accès à une fichier .txt et s'assurer que si l'utilisateur appuie sur la touche ESC. Je peux créer 2 situations sous-routine d'erreur pour les gérers? Merci.
  4. Bonjour, y aurait-il quelqu'un qui pourrais me guider sur la gestion des erreurs. Comment gérer plus d'une erreur dans un même code et j'aimerais savoir quand est ce qu'il faut que je lance un erreur quand la personne peut appuyer n'importe quand sur ESC. Merci ! François
  5. Bonjour Circus, Si je ne me trompe pas essaye d'ajouter "_X" apres ton ssget dans ta parenthèse. Cordialement, Francois.
  6. Oui finalement il y avait aussi : (= "1" rb1t) que j'ai changé pour : (equal "1" rb1t) Merci grandement.
  7. ReBonjour, J'ai bien compris comment activer mes tiles. Maintenant ce que je ne comprend pas c'est le pourquoi, ma variable val2 ne veux pas prendre de valeur. Voir Code ci-bas : (defun c:test ( / i id lst );itm1 itm2 val1 val2 rb1t rb2t rb3t rb4t rb5t rb6t rb7t (setq lst '( ("rb1" "- Choisir -" "[m] Mètre" "[km] Kilomètre" "[pi] Pied" "[po] Pouce") ("rb2" "- Choisir -" "[km²] Kilomètre carrée" "[m²] Mètre carrée" "[pi²] Pied carrée" "[po²] Pouce carrée") ("rb3" "- Choisir -" "[km³] Kilomètre cube" "[m³] Mètre cube" "[pi³] Pied cube" "[po³] Pouce cube") ("rb4" "- Choisir -" "[kg] Kilogramme" "[g] Gramme" "[t] Tonne" "[lb] Livre") ("rb5" "- Choisir -" "[kN] Kilonewton" "[N] Newton" "[kips] Kilolivre force" "[lbf] Livre force") ("rb6" "- Choisir -" "[kN/m²] Kilonewton par mètre carrée" "[Nm] Newton par mètre carrée" "[kips/pi²] Kilolivre par pied carrée" "[lbf/pi] Livre par pied carrée") ("rb7" "- Choisir -" "[kNm] Kilonewton mètre" "[Nm] Newton mètre" "[kips*pi] Kilolivre force pied" "[lbf*pi] Livre force pied") ) );setq (if (and (< 0 (setq id (load_dialog "test.dcl"))) (new_dialog "Convertisseur" id) );and (progn (repeat (setq i 7) (action_tile (strcat "rb" (itoa i)) (strcat "(addlist \"list_1\" (cdr (assoc $key lst)))" "(addlist \"list_2\" (cdr (assoc $key lst)))" ) ) ;action_tile (setq i (1- i)) ) ;repeat (action_tile "list_2" (strcat "(mode_tile \"Edit_1\" 0)" "(setq itm1 (get_tile \"list_1\"))" "(setq itm2 (get_tile \"list_2\"))" "(setq rb1t (get_tile \"rb1\"))" "(setq rb2t (get_tile \"rb2\"))" "(setq rb3t (get_tile \"rb3\"))" "(setq rb4t (get_tile \"rb4\"))" "(setq rb5t (get_tile \"rb5\"))" "(setq rb6t (get_tile \"rb6\"))" "(setq rb7t (get_tile \"rb7\"))" ) ) (if (and (= "1" rb1t) (= '(itm1 itm2) '("1" "2")) ) (setq val2 (float 1000.00000)) ) (action_tile "Edit_1" (strcat "(setq Val1 (get_tile \"Edit_1\"))" "(set_tile \"Edit_2\" (rtos (/ (float (atof val1)) val2) 2 2 ))" "(mode_tile \"Edit_2\" 0)" "(mode_tile \"Edit_2\" 2)" ) ;strcat ) ;action_tile (start_dialog) ) ; progn );if (if (< 0 id) (unload_dialog id)) (princ) ) (defun addlist ( key lst ) (start_list key) (foreach x lst (add_list x)) (end_list) lst ) quelqu'un peu m'aider svp.
  8. Ummm il etait ou ce tuto la! je ne les pas trouver sur le net.. J'ai vu les tuto de Afralisp et Sanders.. mais je les trouver incomplet. lui il est plus gros.. :D Merci !
  9. Bonjour à tous, Je suis en construction d'une boite de dialogue pour un convertiseur universel sur AutoCad. Je suis un peu embeter à comment continuer mon program lisp. il me reste a communiqué les valeurs de Edit_1 et Edit_2 en fonction de ce qui est sélectionné dans mes popup_list 1 & 2. Malheuresement je ne sais pas trop comment y parvenir. J'aimerai avoir des idées. Merci ! Voici les codes (defun c:test ( / i id lst ) (setq lst '( ("rb1" "- Choisir -" "[m] Mètre" "[km] Kilomètre" "[pi] Pied" "[po] Pouce") ("rb2" "- Choisir -" "[km²] Kilomètre carrée" "[m²] Mètre carrée" "[pi²] Pied carrée" "[po²] Pouce carrée") ("rb3" "- Choisir -" "[km³] Kilomètre cube" "[m³] Mètre cube" "[pi³] Pied cube" "[po³] Pouce cube") ("rb4" "- Choisir -" "[kg] Kilogramme" "[g] Gramme" "[t] Tonne" "[lb] Livre") ("rb5" "- Choisir -" "[kN] Kilonewton" "[N] Newton" "[kips] Kilolivre force" "[lbf] Livre force") ("rb6" "- Choisir -" "[kN/m²] Kilonewton par mètre carrée" "[Nm] Newton par mètre carrée" "[kips/pi²] Kilolivre par pied carrée" "[lbf/pi] Livre par pied carrée") ("rb7" "- Choisir -" "[kNm] Kilonewton mètre" "[Nm] Newton mètre" "[kips*pi] Kilolivre force pied" "[lbf*pi] Livre force pied") ) );setq (if (and (< 0 (setq id (load_dialog "test.dcl"))) (new_dialog "Convertisseur" id) );and (progn (repeat (setq i 7) (action_tile (strcat "rb" (itoa i)) (strcat "(addlist \"list_1\" (cdr (assoc $key lst)))" "(addlist \"list_2\" (cdr (assoc $key lst)))" "(mode_tile \"Edit_1\" 0)" ) ) ;action_tile (setq i (1- i)) ) ;repeat (action_tile "Edit_1" (strcat "(setq Val1 (get_tile \"Edit_1\"))" "(setq Unit1 (get_tile \"list_1\"))" "(setq Unit2 (get_tile \"list_2\"))" "(set_tile \"Edit_2\" (CalVal Val1 Val2))" "(mode_tile \"Edit_2\" 0)" "(mode_tile \"Edit_2\" 2)" ) ;strcat ) ;action_tile (start_dialog) ) ; progn );if (if (< 0 id) (unload_dialog id)) (princ) ) (defun addlist ( key lst ) (start_list key) (foreach x lst (add_list x)) (end_list) lst ) Convertisseur : dialog { label="Convertiseur"; : boxed_radio_row { label = "Type de conversion"; : radio_button { key = "rb1"; label = "&Longueur"; value = "0"; } : radio_button { key = "rb2"; label = "&Surface"; value = "0";} : radio_button { key = "rb3"; label = "&Volume"; value = "0";} : radio_button { key = "rb4"; label = "&Poids"; value = "0";} : radio_button { key = "rb5"; label = "&Force"; value = "0";} : radio_button { key = "rb6"; label = "P&ression"; value = "0";} : radio_button { key = "rb7"; label = "&Moment"; value = "0";} }// fin boxed_radio : boxed_column { label = "Calculateur" ; : row { : text { label = "Convertir :"; width = 12;} : edit_box { key = "Edit_1"; edit_width = 15; value = "0"; is_enabled = false; } : popup_list {key = "list_1"; width = 40; multiple_select = true; fixed_width_font = true; value = "0"; } } : row { : text { label = "à :"; width = 12;} : edit_box { key = "Edit_2"; edit_width = 15; value = "0"; is_enabled = false;} : popup_list { key = "list_2"; width = 40; multiple_select = true; fixed_width_font = true; value = "0"; } }//row }//boxed_row : row { : button { alignment = left; fixed_width = true; width = 20; key = "Cop"; label = "Copier"; } : button { alignment = centered; fixed_width = true; width = 20; key = "Gen"; label = "Générer"; } : button { alignment = right; fixed_width = true; width = 20; key = "Close"; label = "Fermer"; is_default = false; is_cancel = true; } }//row //: paragraph { //: text_part { label = "* Location Universelle ne peut pas garantir l'exactitude des résultats de la conversion de l'unité."; } //}// paragraph }// fin Convertisseur
  10. Quoi que je ne sais p-e pas rechercher sur internet. Car, je n'avais rien trouvé :(
  11. Bonjour Gile, Je ne veux pas enregistrer les valeurs dans un dessin ou un fichier mais plus les mettres en Ctrl+C pour ensuitre faire Ctrl+V dans un texte attribute. Si je comprend ta reponse elle me conceil plus de stocker d'envoyer une valeur donné dans un autre dessin ou fichier texte. J'aimerai donner plus d'explication sur ce que je veux mais je n'ai pas d'autre facon de l'expliquer. Merci de votre aide.
  12. Bonjour Geaorge, Merci de ton conceil. Malheuresement, cela me demande de selectionner un objet et je cherche a copier la valeur d'une variable. Comme ceci (setq a 12) Ensuite reproduire crtl+c. Voila !
  13. Bonjour à tous, Je suis en construction d'une petite routine qui calcul le nombre de solive d'un item. J'aimerai mettre automatiquement la valeur de l'item en copie pour que je puisse la coler dans un text (Block attribut. Est-il possible de mettre une variable en copie. Merci !
  14. Finalement avec un peu de percevérance j'ai trouver quelque chose qui fonctionne. (defun _Modification (/ obj atts x lt) (initget 1 "P T D V") (setq Mod (getkword "\n Quel élément voulez vous modifier? [Projet/Titre/Date/Verificateur] : ")) (if (= Mod "P") (progn (setq TProjet (strcase (getstring T "\n Quel est le nouveau nom du projet? ")) TTitre (strcase (getstring T "\n Quel est le nouveau nom du projet? "))) (setq TagPro "PROJET" Tagtit "TITRE") (mapcar '_getall->Layout (list TagPro TagTit) (list TProjet TTitre) ) ) ) ) Quoi que je ne comprend pas pourquoi le code ne fonction pas avec (mapcar '_getall->Layout '(TagPro TagTit) '(TProjet TTitre) ) Je croyais que ' etait la meme chose list. Si je veux etre bien honnete, j'aime beaucoup plus ce forum que CadTutor. Le participant du forum ici prenne le temps d'expliquer le code. ce qui aide beaucoup plus que se faire donner la réponse. Un gros MERCI!
  15. Donc premierement un gros merci. Ce qui j'essai de faire exatement est ceci. (defun _Revision (/ TRev TDesc Tdate TPar TApp TagRev TagNRev TagDesc TagDat TagPar TagApp lt obj atts x DynBP) ;| Élénment de text |; (if (= choix "N") (setq TRev "0")) (if (= choix "R") (setq TRev (itoa (fix (getreal "\n Numéro de révision : "))))) (setq TDesc (strcase (getstring T "\n Donner la raison de la révision. : ")) Tdate (_Today) ) (initget 1 "C F J S") (setq TPar (getkword "\n Qui a fait les changements sur le plan? [Charle/François/Julieta/Simon]: ")) (if (= TPar "C")(setq TPar "C.L")) (if (= TPar "F")(Setq TPar "F.L")) (if (= TPar "J")(setq TPar "J.L")) (if (= TPar "S")(setq TPar "S.D")) (initget 1 "J S") (setq TApp (getkword "\n Qui a approuvé les changement [Julieta/Simon]: ")) (if (= TApp "J")(setq TApp "J.L")) (if (= TApp "S")(setq TApp "S.D")) ;| Élénment des TAG |; (setq TagRev "REV" TagNRev (strcat "N°REV" TRev) TagDesc (strcat "DESCRITION" TRev) TagDat (strcat "DATE" TRev) TagPar (strcat "PAR" TRev) TagApp (strcat "APP" TRev) ) ;Inscrit le texte dans chacun des attributs (vlax-for lt (vla-get-layouts adoc) (vlax-for obj (vla-get-block lt) (if (and (= "AcDbBlockReference" (vla-get-objectname obj)) (member (vla-get-effectivename obj) Nombloc) (= :vlax-true (vla-get-hasattributes obj) )) (progn (setq atts (vlax-invoke obj 'getattributes)) (foreach x atts (if (= TagRev (vla-get-tagstring x)) (vla-put-textstring x TRev) ) (if (= TagNRev (vla-get-tagstring x)) (vla-put-textstring x TRev) ) (if (= TagDesc (vla-get-tagstring x)) (vla-put-textstring x TDesc) ) (if (= TagDat (vla-get-tagstring x)) (vla-put-textstring x Tdate) ) (if (= TagPar (vla-get-tagstring x)) (vla-put-textstring x TPar) ) (if (= TagApp (vla-get-tagstring x)) (vla-put-textstring x TApp) ) (setq DynBP (nth 2 (vlax-invoke obj 'GetDynamicBlockProperties))) (vla-put-value DynBP TRev) ) ) ) ) ) ) Est-ce que je dois répéter ceci: (_getall->Layout TagPro TProjet) Pour chaque attribut ? ou bien il y a autre facon de procéder. Si on vois le code plus au chaque (if) change une attribut. j'ai modifier la routine pour que je n'ai que 2 arguments a entrer puisque la liste de bloc est tjrs la meme. (defun _getall->Layout (etiquette valeur / adoc lt) (setq Nombloc '("LU CARTOUCHE" "Cartouche Aliance" "LC CARTOUCHE CHUM" "LC CARTOUCHE CHUM 2" "LC CARTOUCHE" "LU CARTOUCHE PANNEAU" "CARTOUCHE LU" "LC CARTOUCHE 2" ) ) (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-for lt (vla-get-Layouts adoc) (vlax-for obj (vla-get-Block lt) (if (and (= "AcDbBlockReference" (vla-get-ObjectName obj)) (member (vla-get-EffectiveName obj) nomBloc) (= :vlax-true (vla-get-HasAttributes obj)) ) (foreach x (vlax-invoke obj 'getattributes) (if (= etiquette (vla-get-TagString x)) (vla-put-TextString x valeur) ) ) ) ) ) ) Je vais maintement passer a lire ton lien :D Merci
  16. Bonjour, Je suis en dilemme et j'aimerai avoir de l'informaiton sur les petite routine qui utilise des arguments. Voici ce que j'aimerai transférer en petit program vu que j'utilise ce code souvent. (defun _getall->Layout (/ adoc lt obj x atts) (setq adoc (vla-get-activedocument (vlax-get-acad-object))) (vlax-for lt (vla-get-layouts adoc) (vlax-for obj (vla-get-block lt) (if (and (= "AcDbBlockReference" (vla-get-objectname obj)) (member (vla-get-effectivename obj) Nombloc) (= :vlax-true (vla-get-hasattributes obj) )) (progn (setq atts (vlax-invoke obj 'getattributes)) (foreach x atts (if (= TagApp (vla-get-tagstring x)) ;<-- le if est la parti répétitive. (vla-put-textstring x TApp) ) ) ) ) ) ) ) ) Donc, ce que j'aimerai est de créer un sous-program avec ce code et l'utiliser dans mon program principale. Quel serait la meilleur méthode pour y parvenir. Et comment est-ce que je dois regarder le code pour mieu le comprendre. Merci !
  17. bien sur que la command existe pour remplacer un bloc ou le redefinir avec un autre. Mais moi je cherche à ajouter le bloc sur le point central d'un bloc. De plus, le fait que mes bloc sont dynamic la command express remplacer le bloc ne fonctionne pas. Voila, le pourquoi de la routine. j'espère que cela répond à ta question.
  18. Bon maintenant il reste pluger sur le meme entité de ma selection.
  19. Bonjour à tous, j'essai d'inserrer un block sur des blocks dynamic déja dans mon dessin. Je veux les localiser au meme point que leur point d'origine. J'ai un routine que j'ai commencer mais les blocks qui se génère ne sont pas au point d'origine. Que me manque t-il ? Voici le code : ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametreinitial () (setq retour (list (cons "osmode" (getvar 'osmode)) (cons "clayer" (getvar 'clayer)) ) ) (setvar 'OSMODE 0) retour ; la dernière expression est retournée par la fonction ); fin parametreinitial ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program remet les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametrefin (retour) (foreach p retour (setvar (car p) (cdr p)) ) );fin parametrefin (defun c:mrt (/ ss1 ctr ent blk pts) (vl-load-com) (setq ss1 (ssget "_x" '((8 . "-AL TETE")))) ;(setq ss1 (ssget "_X" '((2 . "TETE M-R")))) (setq ctr 0) (setq init (Parametreinitial)) (repeat (sslength (entget))) (setq ent (entget ss1)) (setq blk "VERIN M-R") (setq pts (cadr (assoc '10 ent))) (command "_insert" blk pts 1 1 0 "") (setq ctr (1+ ctr)) ) (parametrefin init) (princ) )
  20. Bon après avoir fais quelque test de mon coté, j'ai réalisé que les constraintes causaient beaucoup de problem
  21. Parfait, Merci beaucoup.
  22. Bonjour lili, Je chercher a rendre la ligne central vertical (90°) au reste. apres cela je faire rajouter des etirement et autre.. Voila!
  23. Hehe j'aime le "pas forcement expert" :P Bon Voici le bloc
  24. Bonjour à tous, J'aurais besoin d'un coup de pouce avec un bloc dynamic et des contraintes y aurait-il un expert qui pourrait m'asssiter? Merci!
  25. Bonjour a tous, Me voila encore coincer avec un petit problem. Je ne sait pas pourquoi cela se passe. Mais aussitot que mon code arrive au fillet il arret de fonctionné et m'indique Lines belonging to polylines must be consecutive or separated by one segment Et voici mon code : ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ CE PROGRAM EST CONÇU POUR DESSINER ¦¦¦; ;¦¦¦ UNE BOITE AUTOUR D'UN MTEXT ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ AUTEUR : CadFrank, Copyright ® 2012 ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les calques ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun NouveauCalque(/ lay) (foreach lay '("-LU POUTRE") (if (not (tblsearch "LAYER" lay)) (progn (command "_layer" "_n" "-LU POUTRE" "_C" "96" "-LU POUTRE" "" "") ) );if );foreach ); fin NouveauCalque ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametreinitial () (setq retour (list (cons "osmode" (getvar 'osmode)) (cons "clayer" (getvar 'clayer)) (cons "filletrad" (getvar 'filletrad)) ) ) (setvar 'OSMODE 0) retour ; la dernière expression est retournée par la fonction ); fin parametreinitial ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program remet les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametrefin (retour) (foreach p retour (setvar (car p) (cdr p)) ) );fin parametrefin ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini une Polyligne ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun _Poly (po1 po2 po3 po4 po5 po6 po7 po8 po9 po10 po11 po12 po13 w) (entmakex (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 14) '(70 . 1) '(8 . "-LU POUTRE") (cons 10 po1) (cons 10 po2) (cons 10 po3) (cons 10 po4) (cons 10 po5) (cons 10 po6) (cons 10 po7) (cons 10 po8) (cons 10 po9) (cons 10 po10) (cons 10 po11) (cons 10 po12) (cons 10 po13) (cons 43 w) ) ) ) (defun c:pt (/ rep nom O L H EA ES k k1 R1 R2 os ent1 Frad init pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12) (if (= H nil)(setq H 533)) (if (= L nil)(setq L 209)) (if (= EA nil)(setq EA 10.2)) (if (= ES nil)(setq ES 15.6)) (if (= k nil)(setq k 34)) (if (= k1 nil)(setq k1 22)) (if (= nom nil)(setq nom "W530 x 92")) (initget 1 "O N") (setq rep(getkword"\n voulez vous changer les paramètres [O/N] : ")) (if(= rep "O") (progn (setq nom (getstring T "\nDonnez le nom du profilé : ")) (setq H (getreal "\nDonnez la hauteur du profilé [d] : ")) (setq L (getreal "\nDonnez la largeur du profilé [b] : ")) (setq EA (getreal "\nDonnez l'épaisseur de l'âme [w] : ")) (setq ES (getreal "\nDonnez l'épaisseur de la semelle [t] : ")) (setq k (getreal "\nDonnez la distance du [k] : ")) (setq k1 (getreal "\nDonnez la distance du [k1] : ")) );progn );if end (setq O (getpoint "\nPointez le point d'origine : ")) (setq pt1 (polar O pi (/ L 2))) (setq pt2 (polar pt1 (/ pi 2)ES)) (setq pt3 (polar pt2 0 (/(- L EA) 2))) (setq pt4 (list (car pt3)(+ (cadr O) (- H ES)))) (setq pt5 (list (car pt1)(cadr pt4))) (setq pt6 (list (car pt1) (+ (cadr pt5) ES))) (setq pt7 (polar pt6 0 L)) (setq pt8 (list(car pt7) (cadr pt5))) (setq pt9 (list(+ (car pt4) EA) (cadr pt8))) (setq pt10 (list (car pt9) (cadr pt3))) (setq pt11 (list (car pt8) (cadr pt10))) (setq pt12 (list (car pt11) (cadr pt1))) (setq R1 (* ES 0.4)) (setq R2 (/ (+ (- k ES) (- k1 (/ EA 2))) 2)) (NouveauCalque) (setq init (Parametreinitial)) (_Poly O pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 0) (setq Frad (getvar 'filletrad)) (command "_.fillet" pt1 pt2 "") (setvar 'filletrad R1) (command "_.fillet" pt2 pt3 "") (setvar 'filletrad R2) (command "_.fillet" pt3 pt4 "" "_.fillet" pt4 pt5 "") (setvar 'filletrad R1) (command "_.fillet" pt5 pt6 "") (setvar 'filletrad Frad) (command "_.fillet" pt6 pt7 "") (command "_.fillet" pt7 pt8 "") (setvar 'filletrad R1) (command "_.fillet" pt8 pt9 "") (setvar 'filletrad R2) (command "_.fillet" pt9 pt10 "") (command "_.fillet" pt10 pt11 "") (setvar 'filletrad R1) (command "_.fillet" pt11 pt12 "") (setq ent1(entlast)) (command "block" nom O ent1 O "") (command "insert" nom O "" "1" "" 0 "") (parametrefin init) (princ) );defun c: Quelqu'un pourrait-il m'expliquer se que je fais de pas correct Merci !
×
×
  • 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é