blog

Exercice AutoLISP : Créer un polygone régulier en définissant une zone

J’espère que vous vous amusez avec nos exercices AutoLISP. La dernière fois, nous avons été initiés à l’utilisation des variables AutoLISP et à la demande d’entrée aux utilisateurs. Cette fois, nous allons apprendre à demander plus d’entrées utilisateur, puis à utiliser l’entrée dans une équation mathématique. Le résultat du calcul sera utilisé pour dessiner un objet.

Notre défi est maintenant de créer un programme qui peut dessiner un polygone régulier en définissant le nombre de côtés et la zone. Intéressant n’est-ce pas ?

écriture de calcul dans AutoLISP

L’écriture du calcul dans AutoLISP est assez différente. Mais ne devrait pas être difficile à comprendre.

Si nous voulons calculer 2+5, alors nous écrivons :

(+ 2 5)

Essayons-le dans la ligne de commande d’AutoCAD. Tapez AutoCAD la ligne ci-dessus. Oui, vous pouvez utiliser la commande AutoLISP dans AutoCAD. Vous devez le taper exactement comme ci-dessus.

Essayons maintenant un autre. Tapez chaque ligne puis appuyez sur [enter].

(setq a 2)
(setq b 5)
(+ ab)

Ce que nous avons fait, c’est de définir la variable a sur 2, b sur 5, puis de calculer a+b.

(setq c (+ ab)

Celui-ci signifie c = a + b.

Pas si difficile, n’est-ce pas ? Reportez-vous aux autres fonctions de calcul du site AfraLISP ici. Voyons maintenant la formule du polygone.

Méthode de dessin de polygone

Comment pouvons-nous dessiner un polygone en définissant la zone? J’ai fait quelques recherches et j’ai trouvé cette formule.

calculate_polygon_area

source : page de référence ouverte sur les mathématiques.

Si nous connaissons l’aire et le nombre de côtés, nous pouvons calculer l’apothème. Qu’est-ce que l’apothème ? Voir l’image ci-dessous.

A lire :  Ajuster et prolonger dans AutoCAD

apothème

Comment tracer un polygone quand on connaît l’apothème et le nombre de côtés ? En utilisant l’outil polygone bien sûr. Nous le créons en utilisant une méthode circonscrite.

Calcul de la longueur de l’apothème

Nous devons changer la formule pour obtenir l’apothème comme ci-dessous :

Formula_for_apothem

Fonctions dans notre formule

Nous utiliserons ces fonctions dans notre formule.

  • la racine carrée peut être écrite comme (sqrt a),
  • multiplication par (* ab),
  • division comme (/ ab),
  • cosinus d’un angle comme (cos ang),
  • sinus d’un angle as (sin ang).
  • Avec a, b et ang sont des variables.

    La mauvaise nouvelle est qu’AutoLISP n’a pas de fonction bronzage. Mais il y a du boulot. Tangen est sin/cos. Tan (pi/N) peut s’écrire :

    (setq ang (/ pi N))
    (/ (sin ang) (cos ang))

    Pi est une variable intégrée, nous allons donc l’utiliser.

    Outre la séquence, vous devez être familiarisé avec la commande. Si vous voulez essayer d’écrire l’équation par vous-même, allez-y. Cela peut être un bon exercice pour se familiariser avec les fonctions mathématiques dans AutoLISP. Vous pouvez trouver l’équation ci-dessous plus tard.

    L’équation complète peut être écrite. J’utilise la variable a pour la surface et n pour le nombre de côtés. J’utilise également apt pour conserver la valeur de l’équation (la longueur de l’apothème) et ang pour conserver (pi/n).

    (setq ang (/ pi n))
    (setq apt (sqrt (/ (/ a (/ (sin ang) (cos ang))) n)))

    Ou vous pouvez écrire en une seule ligne, ce qui semble plus déroutant.

    (setq apt (sqrt (/ (/ a (/ (sin(/ pi n)) (cos(/ pi n))))) n)))

    Demander l’entrée de l’utilisateur

    Nous utilisons déjà getpoint pour demander à l’utilisateur de choisir un point. Ou ils peuvent taper la coordonnée. Nous avons maintenant besoin de trois entrées utilisateur : nombre de côtés, surface et point central.

    A lire :  Que sont AutoCAD Layer 0, ByLayer et ByBlock ?
  • Le nombre de côtés est un nombre entier. Vous n’acceptez pas 2,5 comme nombre de côtés, n’est-ce pas ? Nous pouvons utiliser GETINT pour demander un entier.
  • La zone peut avoir des nombres décimaux, c’est donc un nombre réel. Nous pouvons utiliser GETREAL à cette fin.
  • Vous utilisez déjà GETPOINT pour demander un point, n’est-ce pas ?
  • Laisse-nous essayer. Dans la ligne de commande AutoCAD, tapez

    (GETINT)

    tapez un nombre entier. Il devrait renvoyer le numéro que vous avez entré. Réessayer. Cette fois, tapez un nombre décimal. Disons 3.2. Que dira AutoCAD ?

    Commande : (getint)
    3.2

    Nécessite une valeur entière.

    L’utilisation de la bonne fonction d’entrée utilisateur réduira également la probabilité d’erreurs.

    Rédaction du code complet

    Nous pouvons maintenant écrire le code complet.

  • Vous devez demander à l’utilisateur le nombre de côtés de polygone, la surface de polygone attendue.
  • Ensuite, vous calculez la valeur.
  • Vous devez demander une autre entrée : le centre du polygone.
  • Enfin, vous pouvez écrire la commande polygone.
  • Maintenant, nous avons des données complètes, ce que nous allons mettre dans notre programme. Je vous suggère fortement d’essayer d’abord d’écrire le programme. Vous pouvez vérifier et comparer le code plus tard.

    Voici le code complet que j’ai créé. Si vous avez un problème, vous pouvez copier le code ci-dessous.

    ; Ce LISP créera un polygone régulier en définissant la surface du polygone et le nombre de côtés
    ; Créé par Edwin Prakoso
    ; Site Web : https://www.cad-notes.com

    (defun c:pba (/ un apt ptloc)
    (setq n (getint « 
    Nombre de côtés du polygone : « ))
    (setq a (getreal « 
    Zone de polygone attendue : « ))
    (setq ang (/ pi n))
    (setq apt (sqrt (/ (/ a (/ (sin ang) (cos ang))) n))) ;calculer l’apothème pour un polygone circonscrit
    (setq ptloc (getpoint « 
    Choisissez l’emplacement : « ))
    (commande « _POLYGON » n ptloc « C » apt)
    )

    A lire :  Utilisation d'AutoCAD LAYWALK pour vérifier les calques d'objets

    Comment allez-vous jusqu’à présent? J’aimerais savoir ce que vous en pensez après avoir fait les exercices.

    Ensuite, nous allons créer un programme AutoLISP pour étiqueter les coordonnées.

    .

    Bouton retour en haut de la page