You are on page 1of 24
ProGRAMMER AUTOCAD CHAPITRE 3 UTILISATION D’AUTOLISP Introduction Le langage us sgraphiques, AatoLS® et un d &é développé en ‘Technology Depuis et pamticulgrement dan Lenom LISP est une abéviation de «LISt Processing » ou programmation de is ‘en frangis,Celangage ne fait aucune distinction fomelle entre des dom paris de programme. Tout est représenté sous forme de arenthises, ‘AutoLISP est un langage souple qt permet dactver simporte quelle commande AutoCAD parla simple fonction * Command é é re dimmensesbibliothéques de fonctions oi serait stockée la sytaxe de chaque ‘commande CCaractéristiques du langage AutoisP ‘Avant daborder tétude dtailée AutoLIP, il peut etre utile de se failaiser ins des Elément fondamentaux de ce langage en utilisant directement igne de commande dAutoCAD. Grice & Fexécuion de quelques opé ‘os auree rapidement une idée des concepts dont vous aurez évclopper parla suite vos propres applications AutoLSP “| KUUKAMMER AUTOCAD fF 3, UTILISATION D’AUTOLISP = a ‘Quand vous entrez des données de lecture des données, valua ies et daffichage des résultats se produ rAMIoLISE ion que 5) et retourne la réponse, 255, qui Tuation dune expression est appelé Les Composants d'une expression Une expression AutoLISP doit inclure un opé ‘tre trates Un opérateur est une instruction 4 tell quaditionner deux nombres ou dviser un nor teurs mathématiques qui exccutent lesigne() pour la division, On consi ‘Comprendre Vinterpréteur et 'évaluation On accide a AutoLISP grice 3 un interpréteur AutoLISP de commande et carat préteur AutoLISPfonctionne A main. Ains comme avec une laligne de commande. AutoLISPévalue a ‘Les parenthises sont également des éléments importants dune expression. Toutes les parent ‘ue, pour chaque parenthise ouvrant vent étre « équilbnées > Fonction (gauche). — Arguments se fermante (droit). Si vous entez une fey expression. Si vous voyes vous dever enter le nombre de parenthéssfermante ind ter Texpresson, Dans cet exemple, ous devez enteer deux arenthésesdroites pour compléterFexpresion. ression. Les espacesne sont cependnt pas de Texpression bien que vous p bili des expressions quand ile deviennent les expressions, mais égale- iasignifieque dans Fexemple interpréteur AutoLISP évalve tot, pas uniqueme ‘ment lesarguments conten dans les ex argume ¢scausi possible dulser des expeessions comme arguments pour une fone me PRoGRAMMER AUTOCAD 3. UTILISATION D'AUTOLISP 1s (ass) Fess —_—_— (/ 2 250 5)) | 15 Bvaluation dos arguments “Application de la —— ‘Une variable peut tre considré comme un conta ner qui content une valeur Cette valeur peut chan ‘gerau cours du déroulement du programme. ‘Assigner des valeurs aux variables avec Setq (On asigne des valeurs aux variables &Talde dela fonction de Set, Comme vous ‘aver vu une fonction peut te un opérateur mathématigue simple tel que plus «c+ » ou diviser (). Une fonction peut ausi consister en une série dinstractons Complexes pour exécuter plusieurs opératons, comme un petit programme par exemple La fonction « Sig» indique 3 AutoLISP. exemple, esayerlexercce suivant pou: méeTVA ger une valeur 3 une variable. Par ger la valeur 2x 8 a variable nom: (1 Enter expression suivante urla ligne de commande: ans AutoCAD l valeur d'une variable en préeéant le nom, ‘exclamation La valeur 2: ext retournée, Le point exclamation corespond done 3 Taction «Alfie les contenus de» a fonction Setg peut ausiassgner une valeur 3 une variable qui cont ‘une valeur. Voyons ce qui artve lorqu'une nouvelle valeur est asigné MB (Entrez expression suivante 10.15/20.4 34.54/12.76 Vous dever ent 1s suivantes sur la ligne de commande: (Commande: 5970 a Commande: (379 8 Commande: S120 € (Commande acne Spécifier le premier point: 1% 1 PRoGRAMMER AUTOCAD Fy 3, UTIUSATION D/AUTOLISP 117 Ne pos évaluer certaines expressions atome peut aussi repeéSenter une valeur. Dans ce ea, srt A nommer une ‘variable 3 aguelle on ie cette valeur Voici quelques exemples i parfols ne pas évaluercertaines expressions mais jecasparexemple pour tansmette tescooronnd Ta bute: pasdaplingera fonction £0 ees scangmens20eyo lst poweea dea ele eres donne {tree nou aposttophe, Cet forme contrat dun fox are Laliste |e QUOTE qui révalue jamais son argument exemple des coordonnées, vous pouvez en » O:liste vide, elle 6quivaut NIL du portant dans le Langage LISP sont les > (PIERRE EST) MON (PETVT PRERE) (Quelque chose de ces deux catégories, wants: par une série de carathesalphanumériques ho U-Lesatomes: > Nombres enters Les nombres entiers sont compris entre-32768 et + 32767 {a valeur dune expression contenant jours un nombre entier Par exemple, la Partie décimale est supprimée dans lav ques comme Q + décompoods Latome peut re utlisé pour représenter un nombre (enter 08 ré ‘uméfigue et peut Ete affecté d'un signe En voici quelques exemple: nese dit représenter une suite de caractbres alphanumériques, comme pat exemple: tm Procrammer AUTOCAD Le langage AutoLISP diffe principalement des autres langages de programma. tion par certainescaratéistiques comme: > Lanature des données pressions symboliques gueur {etre déelarées comme danslaplupar des autres ngagesavant etre dans un programme. Ans par exemple (8 10) t (ars Lyon Marsei ‘deux expression symboliges. > Lasyntaxe:elle ext ts simple et un programme complexe aura la emple rice la fonction ( > Lefonctionnement du systéme: AutoLISP est un langage interprété qu fone fare une expression» Evaluation dee: La gestion des listes Le angage LSP dispose de trois primitives de base qu co ‘metientdeffectuer toutes les manipulations souhaitées su elles pe I permet extrac le premier élément dune liste queleonge. Ler tome ou une liste Exemples. (CAR (Pars tyon Nice) donne Paris ) donne (AB) REmaRQue our rappel le signe *repésente a fonction Quote au expression qu suit 3. UTILISATION D/AUTOLISP 119 est done une (CDR (Pais Lyon Nice) donne la ste (lyon Nice) (CDR 0) donne NIL est posible de coupler les dewx fonctions précédentes,on a alors dément d'une liste (CAR(CDRX) est synonyme de(CADRX) qui donne lesecor Exemple (CADR (Pais Lyon Ni yon, (CAR (CDR (aris tyon NI =(CAR (lyon Niee))~ Cette fonction es uti second élément dune liste de d x obtenir la valeur en Y d'un point 2D ou 3D (le ou tois nombres rét _Deméme(CDR (CDR¥0) est quivalent (CDR qui peut ere ni a coordonnée en Z dun point 3D. pour obte (On a done CAR pour obtenirX, CADR pour abtenr ¥et CDR pour obtenir le 7. exercce “Tracer un rectangle avecla commande «ligne» en connaissunt les coordonnées des points dela diagonale:Pr(r.20)et Pa (7050) La prcédure est a suivante (6335) Commande: (ecta 7 ) Commande: ets #2 *(79 Soh) (7050) Commande: ligne 5p (020) jez premier pin 1m — PROGRAMMER AUTOCAD Spécifieze point suivant ou fannUler]: 1st (ear Pil (este #2)) (2050) pécitie le point suivant ou fannie 050) Spécifier Ie point suivant ou [Clore/annUle (7020) Spécifie le point suivant ou [ClorefannUler:< om Paleade PL opérateur CONS permet de const vel elérnent qui (CONS (48) (CD) (CONS Paris (yon Wice)) donne la liste (aris Lyon Nice) ‘ume nouvelle liste pate dune list exstante et un now ce en début de liste Exemple Lopérateur UST permet de xe (UST ABC) donne (ABC) (USTA GD) donne (A®O)D) Cet on sé pou dni une variable point 2D ou 3D a partirdun ensemble déléments.Exemple Les fonctions de saisie Lasaisie des données graphiques ou alphanumériques bee 3. UTILISATION DAUTOLISP 11 LAY! Saisie d'un angle 1a fonction «getangle» permet Tutlsateu enter un angle en pointant deux ‘pointe’ lécran ou en dannant la valeur au caver La valeur tetournée de langle ‘st toujours en radians Lasyntane et la suivante: suger]: ext une caine de caracttes qui Safice 3 Ycran pour indiquer 3 isateurFopération§effectue Far exemple: «Entre la direction de angle» une chaine de caractires qu affiche 3 Téran pour indiquer 3 tond etfectuer Pa exemple: «Entrez a direction de angle», x 2D dans le SCU courant 1 agit du premier point Ge a direction demandée. tm PROGRAMMER AUTOCAD OF 3.UTIUSATION DAUTOLISP 13 Saisie d’un nombre entier 1a fonction getint attend que Tutilsater entre un nombe: ‘nombre enter. Les valeurs peuvent aller de 32768 3 +32767. La syntaxe est lz suivant: Kk ce raceages}) ‘Avec option: aa 5 > [ezecsapes]: est une chaine de caractires en option qui peut ze affichée comme message pour Saisie d'une distance Exemple: entrer une distance. La procédure est leeg 9 ge ou deux points 3 Iécran. La syntaxe NG i ape _gueus en cours ow vous pouver fécran, AMoCAD dessine une Ia position actuelle du curser SiTaegumen ‘comme le premier de ces deux points cela vous petmet de po! > fame ne de caratéres en option qui peut éteaffichée ‘comme message pour uiliester. exemple: m% — ProcRammer AUTOCAD 3. UTILISATION D'AUTOLISP 1% sctorient pour obtenir une orientation (angle asolu). Par exemple, le rotation jentation d'un texte Lasyntaxe esta suivante cet un pola de base 2D dans le SCU courant Ms'agit du premier point dela direction demandée exemple: d'un point Lafonetion getpoint attend que uilisateu entre un point Vous pouver spéciier tn point en pointant ou en tapant les coordonnées dans la notation courante des jusqu' apo se affichée comme mesa 307; dane ce cas un point 3D est retour Saisie d'un nombre réel La fonction geteal permet ensuite ce nombre résl- La yntaxe ateur dentrer un nombre réel et retourne la suivante Avec les options > [eoso]: permet, sila valeur nest pas nil, avoir des blancs dans la chatne de entrée se termine par une > [enocsape:est une cane de caractéres qui peut ere affehée comme message pour Putilisateur Controle de la saisie des données hoist une qui est pas proposte eee eee Eee a PROGRAMMER AuTOCAD 3 iis 3. UTILISATION DAUTOLISP 127 a véls tangle ext expimé en radians Sia vrable FLATLAND-O un point 3D ee ahaa ida st tou inom i point 2D et eum de tris foneton complemen {ates concernant la mesure der anges et des dtancen, exemple totae “1.0 1.03 données de wore part Ses aru Points 3D som donne, is sont pro remote langle *(5.0 oo 4 a La fonction Distance S Stare: (aetane gt2) Ja distance entre les points et . Si les deux mn ale ans espace Son des points esten 2 XY et ladistance, Uaccés aux commandes AutoCAD mate Les envitonsements AntoCAD et AUoLIS Gant totlement int sible depuis Ia one “commande * dappled instructions Auto La fonction Polar youre: (eter ot» cones Ble pecmet de déterminer un z angle angle din nombres —— (RRIPROCRAMmer AUTOCAD Ey 3. UTILISATION D/AUTOLISP m de commande agit une cha- 1a fonction (command) wansmet un 3 un ses arguments 3 @AutoCAD. Le mot LIGNE doit ere plaé entre gullemets dewx points Tassie du demir point. Pour entrer correctement les données de la fon ATabord essyer a commande dans AutoCAD enn exemple tracer un cercledont lecet A Dans AutoCAD cela donne: cznmande: sercle Spécifiez Ie cente du cercle ou sngente tangente Spéciie Ie rayon du cercle ou [Diamétrel: x0 Dans AutoLiSP cela donne: La création de fonctions personnalisées 8 fonctions ot pre la ligne de commande AutoCAD. Vous avez sans doute i vous suhaite elancer le program: fonction. Vous pouvez choise import quel nom, de prendre des noms de commandes AutoCAD, des rnoms de variables systzme ou des noms de fonctions existant de® dans ‘AutoLiP, arguments ox de variables leas pow >» cexpressions):les expressions qu indiquentce quel fonction Tecorpedu programme, exemple CCaleuler le earré tun nombre rel ation des arguments et des variables dans les fonctions 7 ms avec des arguments définis en méme temps ‘Une fonction définie avec des arguments doit étrelancée avec es arguments exemple PROGRAMMER AUTOCAD. Cotte fonction doit te lancée de la maniére suivante :(PLUS 56) Sans arguments, vous auriex 40 compléter le programme pour saisir les deux nombres’ additionner. ‘toraque vous exécutez un programme, tous les calcul que vous faites sont gardés sont importants dans Fexécution di terming, il nest pas toujours utile de ‘Ajouter des commandes @ AutoCAD ‘Dune des caratéistiques les plus importantes @AutoLSP des nouvelles commandes Ay toute autre commande, Il eonvi nowvelle fonction parla lettre “C: TRIAN”, Diaute part —5 I 3. UTIUSATION DAUTOLISP Lenregistrement de programmes AutolISP 1 désagnabled , ‘Yous pouves amdlione le programme en y ajoutant des comment out cela de aire précéder chaque ligne de commentaire par un pol exemple: Lorsque le programme est sauvegardé vous pouves le charger paride ligne de ‘commande dAutoCAD grice a fonction « load». Deux cas peuvent se produre m 1m Procrammer AuroCAD. 3. UTILISATION D'AUTOLISP 1 > Le fichier est enregistré dans un répertoire non compris dans les chemins de recherche dAutoCAD, comme par exemple C:\Meadzccéilisp vous devez dans ceca spéciierle chemin adéquat ceamande + (Load *c2\\henaz00 Une autre méthode pour charger vos programmes AUIoLISP consist utiliser Ia commande APFLOAD via le ment = Voption Charger une application. suffit de slectionnerl() bon() ice et de liqur sur Charger gsr. + acad sp est chargé quune démarrage CAUIOCAD, tandic que acaddoc sp est chargé avec chaque document (ou dessin). Ceci vous permet dassocier le chargement du fichier <éfaut de chargement de ces fichiers de démarrage en modifant la valeur dela variable ystéme ACADLSPASDOC, CCete variable détermine si le fichier acadisp est chargé dans chaque dessin ou ‘uniquement dans le premier dessin ouvert lors dune session, Les options sant les » co:changeacadisp uniquement dans e premier dessin ouver lors une seston > charge acad sp dans tous les dessins ou les fichiers de démarrage aca ‘AutoCAD. Il vous appartient dane de les Dans oes deus fichier, lorsque vous charge acaddocisp ne sont pas fouris avec eerie Procrammer AUTOCAD ‘Tool)> Rersonnaliser (Customize) > Menus (Iterfa 3. UTILISATION D'AUTOLISP. ala figure 3x0 peut étredessnée de plusieurs fagons complet avec la fonction poyligne outrelle puis deux symnétriessuccessives avec la com cc Figa10 im PROGRAMMER AUTOCAD j A Deusxitme méthode (g32): Figs ‘Vous pouvez transformer ce profé 2D pouren fie un mode yDsolide et aficher ans une Yue izométrque, Le programme prétdent devient ds lors (g333): 3, UTILISATION D/AUTOLISP de fonctions qui vous permetront de ‘abs cnombre>) ‘Cate fonction retoure la valeur absolue de cnombre>. peut tre un nombre rcel ou entiet «aba» sont fouris, la fonction rtourne Tarctangente de ) Cette fonction etourme le cosinus 'cangle>.cangle> est exprimé en radians (expt cbase> levé 2 la ) Cette fonction retourne le plus grand commun diviseur de cnbl>et cn. cnbb> et enba» doivent re des nombres enties. cxemple teed 12201 ome 4 {log nombres) Cette fonction etoume fe logarithme népérien de cnombre> comme nombre él exemple: i 3. UTILISATION DAUTOLISP (max cnombre> ..) Cette fonction retourne le plus grand des cnombre> foumis. Chaque «nombre> des «nombre> donnés. Chague cncmbre> unréel erésultat stun coo 26 6.1) setourne 2.0 ) Cete fonction retourne 1 de cangle> comme nombre réel, ‘angle est exprimé en radians exemple: (sqrt nombres) Cette fonction retourne “1 re PROGRAMMER AUTOCAD Gey 3. Uriusarion DAUTOLISP Ws Les fonctions logiques 1s fonctions logiques prmettent de compare une sre de don tne réponse Vine donne'T ou Fasse (donne ni, On trouve par desexpe ants (= catome> catome>..) ‘esi si chaque éément est él 3 son voisin de droit. donne nil les deux 6 diffrent de tu") (< catome> catome>...) Vétifie si chaque élément est strictement inférieur son woisin de drt. enone sotérieur 4 20) (<= catome> catome>..) Semblable au cas précédent mais deux arguments succesifs peuvent dire aux exemple 6 catome> ..) ‘Vétfie que chaque élément eststrctement supérieur 3 son voisn de droite (= catome> ) Semblable au cas précent mais deux arguments successifs peuvent ete aux, exemple = La gestion des textes Ler d'un programme ne se mani n>) Cette fonction affiche sant précéer d'un: Exermple: (Print cexpres tena de cexpression> da igne. Lescaracttres de con PROGRAMMER AUTOCAD Ce programme produit Iafichage suivant dans la fenéte « Texte» @AutoCAD ‘ecode in fest pas interprété comme un sau de ign, (Prints cexpression>) ), mals elle winsére pas de saut de ligne ni CCeprogramme donne (Princ ) (erp) ‘Gate fonction retourne un saut de ligne dans I fenéte de teste. (extser) Cate fonetion permet de ps Eran gaphigue eran tone Gents Ja fonetion Fs) TEXTSCR retourne ‘ourrendte le maniement des chaines de caractéres plus facile, AUtOLISPfourit les fonctions suivants: (streat ..) (Gtrease [cexpr>]) cette fonction permet de convert ‘cexpr> ala valeur, tous Exemples (ételen ) Cette fonction retourne Ia longueur de chalne (longueur en caracttres) comme nombre enter exemple 3, UTILISATION DAUTOLISP TKOGRAMMER AUTOCAD 3. UTILISATION D'AUTOLISP 7 Si dongueur> nest pas spécifiélasouschaine continue jusqu’ Ia finde cchaine> debut» et congueur> doivent ere des nombres en Le premier caratire de cl Brempe: Les conversion de données Certaines fonctions dAutoLISPnacceptent comme arguments que des chanes de ou des nombres. I faut donc pouvoir convertirune chalne en nombre et reiproquement Conversion degré/radians et radians/degré Les angles dans AutoLISP sont mesunés en radians et non en degrs alors que dans ‘AutoCAD tes anges sont généralement en degeésdécimal, de AutoCAD au mode AutoLSPil convient de dfinie deux fone ion: dr (egrésen radians) et rd (radians en ders). tions de conve Nous avons Conversion des degrés en radians Conversion des radians en degrés Conversion dangle (ANGTOS) Cette fonction prend Tangle (un nombre rel en radian) et produit une conver sion en degrés, minutes et secondes ou unit par def (cadians) Conversion d'unités (RTOS) Cette fonction et Féquivalent pour les distances de ANGTOS pourles angles. Ona (tos [nombre] [mode] [précision)) ‘Autres fonctions de conversions (ascii cchaine>) premier caractze de cchalnes en on code de caractbe ASCH (un PROGRAMMER AUTOCAD 3. UTILISATION D/AUTOLISP (tof ) Conversion dune chain de caratires en un nombre re exemples: (tol ) (Conversion dune chatne de carectires en un nombre enter (che cnombre>) sion 'unentierreprésentant un code ASCII en une chaine dun seul earac. (fx cnombre>) Conversion d'un nombre enter ou née) en un nombre enti. exemple: (oat ) Conversion d'un nombre (entir ou réel en un nombre él Exemples 5.8) aonne 3.200000 | et (itoacentier)) (Conversion d'un nombre entier en une chaine de caractéres. (ead cchaine>) Retoumme la premiér lst ou le premleratome obtens de de mesure peutdoneétre (cuunit ) vee > valeur: enombre ou le point 2D ou 3D convert. unité de dépare convert. > sunité de conversion, PROGRAMMER AUTOCAD J Aiea 3. UTILISATION DIAUTOLISP 15 tes deux unités doivent e trouver dans Ie fichier Acadunt ‘exemples: Commande :(evunit x “minute seconde’) donne 600 dans une variable te utiliser ensuite cette variable pour le autres conversions. Les tests et les instructions conditionnelles (equal cexpre>cexpra> [tolérance) Cette fonction détermine a cexprb et cexpr> sont ales; ces rent le méme ésulta. lesdon Exemples: (aoea pt (eqpep3) donne nit (cqp3 p2)donneT (zerop ) Cette fonction etourme Ts catome> est un nombre rél ou enter et qu'il donne 20 comme sinon elle donne nl Exemples: (@er0p 0) donne T (er0p 01) donne nil (minusp catome>) Cette fonction donne Ts catome> est un nombre éel ouentieretquil donne une valeur négative comme résultat, sinon elle donne nil. (osinusp-4.3) donne T (ninusp 85) donne nil (aul cartcle>) Cette fonction donne si catcle> est i retourne nil Remangue ions logiquesabordées au point 0 peuvent aus tre reprises dans PROGRAMMER AUTOCAD Oe \ 3. UTILISATION DAUTOLISP 1 Les fonctions de véifcation de ype sont les suivantes: (atom carticier) ‘Cate fonction testes Tatil sci est un atome ou une liste Ele renvoie nil” silvagit une lite et Tl agit €un atome, Bxemples jonne'T ) donne nil (toundp ) Cette fonction donne ,stunevaleurestige3 comes etn” dansles utes cas. (Pound's) donne T (bound) donne nil (stp ) Cette fonction donne‘ article» est une liste et" nil dans les autres cas Xp 45) donne nil (ournberp
) Cette fonction donne Ts catile> est un nombre entir ou rée,sinon elle donne sil Exemples: (numberp 4) donne (umberp “bonjour donne nil Les fonctions conditionnelles Deux structures permettentIévaluaion conltionnelle expressions LISP: > lacondition simple: structure “SL ALORS SINON" (IE THEN ELSE); > les conditions multiples : structure “COND, qui se compose de plusieurs couples" Condition- Action z 1a fonction “1P-THEN-ELSE" ext de a forme suvante(fig335): Fie3s {i Hi- i Fenn 1% PROGRAMMER AUTOCAD 3. UTILISATION DAUTOLISP 1a fonction PROGN" est dela forme (or0gn Lacondtionterminale=si on a Retour de a valeur 120 argument de a fonction: > Lavaleur’ retourer: (Nx PACTON: Cela donne en AutoLis iP (GARDE W) 1 (4 (RACY > ProcRAMMER AUTOCAD ! en 3. UTILISATION D'AUTOLISP: w fg Gaitre (paler PF Pi RI) Itracec PF CE Mt (teacer 21 c= mi n Les instructions itératives 1 ative quil soit parfois nécessaire dexécuter plusieurs fois une méme séce actions Pour résoudre ce probltmeil convent uiliser es fonctions ditératons. Par opposition Ia récusivité qui produit des appelssuecesifs une méme fone tion 8 des niveaux différents, provoque Texécution répéitive dune suite dinstructions Il ny a pas dans ce cas dimbrcations de nivesux, Larrt dt processus itratifest da un test de fin de boule», Les principales fonctions sont les suivantes (apply fonction» ) Catefonction applique fonction donnée par fonction) aux arguments fouls parle xem: ‘Gpply'+ 2 Copy stata" "e7 donne“abe (foreach ‘Cette fonction corespond 3 la forme : “pour chaque élément dune liste donnée faire." Cette fonction retourne cependant seulement e résultat de a demise expression rae, Exemple (oreach N82) (print NS) vale ‘Plusiursexpresions peuvent tre spécifiges. I nest pas nécessuire de faire appet -a(progn), comme cétaitlecas pour (i). (mapcar Cette fonction permet da lites liste liste MAPCAR retourne comme rsultat ast des résultats sucessifs de cette applica exemples ) iquer une cfonetion> donnée tous es éléments des (wepeae 16 (repeat ..) Cette fonction éralue chaque argument expo un cnombre>defoisetretourela ‘aleac dea dear expeesion exemple: donne 140

You might also like