Qqs trucs sur Autocad et d'autres logiciels DAO...
Accueil Initiation Méthodologie Variables Comment faire ? Lisps Sommaire
Soft & liens Revit 2020 CVC sur autocad Linux CloudCompare Initiation à Autolisp Blog

Manipulations simple d'entités.

Je me suis peut être un peu emballé dans ma progression d'exercices aussi j'insère ce chapitre.  Je vous propose d'essayer de faire de petites fonctions qui ont été demandées sur le site CadXp ou dont j'ai eu besoins moi même pour mon boulot. Ce sont là plus des macro que de vrai lisp, mais on va pouvoir aborder plusieurs concepts et d'utiliser les commandes Autocad (méfiance suivant vos version). Au programme Copie multiple, Enchainer des rotations, Décalage fixe de polylignes.

Préalable


Depuis la versions 2012 totodesk à ajouter une fonction (command-s en plus des (command et (vl-cmdf voir un article de master (gile) ici
Il y a qqs différences détaillées ici entre les 3 commandes
Je parle de ça car on va pas mal utiliser ces tournures pour nos macro.
Rappel avec entmake on passe par des coordonnées SCG et pour (comman et consort par des coordonnées SCU


Rotation multiple

 

Je vous propose de faire une fonction pour faire des rotations fixes d'entités selectionnées suivant un angle déterminé par 3 points ou indiqué. On demande le centre de rotation, le point de départ de l'angle, son point d'arrivée. Chaque fois qu'on tappe espace une nouvelle copie des entités est créée.  

 

Pour rappel la commande (angle pt1pt2) donne l'angle (en radiants) entre l'axe des X et la droite définie par pt1 pt2.
L'angle qui nous intérèsse est donc la diférence entre l'angle centre P1 et Centre P2 à convertie en degré.
Si on donne l'angle, on aura pas de conversion à faire car (command "rotation" va accepter une valeur en unité courante (qui est présuposée en degré)

Pour modifier la condition de sortie, qui à été initialisée à la valeur logique T, on va l'affecter au résultat d'une évaluation logique.
Si getpoint = nil l'évaluation est vrai et on boucle
Si getpoint = pas nil l'évaluation est fausse et on sort du while

Et c'est la fin...

L'algo en PDF ou DWG


 

 

Voici mon code, mais ça devrait etre dans vos cordes RTF.lsp

 

Trigo texte (polar

 

On a vu les SCU avec (trans, qui nous aide à faire les transposition de coordonnées. Il y a un autre façon de calculer des positions de points dans le plan, c'est avec les coordonnées polaires.
Là encore plutot que de calculer un point Pt par rapport à un Point "Centre" en faisant
Pt-x = xCentre + (rayon * Cos alfa)
Pt-y = yCentre + (rayon * Sin alfa)
Autolisp met à disposition une fonction (Polar
qui donne directement le point

Pt = (polar ptCentre alfa rayon)

On va faire un lisp pour expérimenter cette utilisation. On va tracer des lignes tous les 10° par rapport à un centre et écrire un texte avec la valeur en degrés et en radians de l'angle.

 

 

L'algorithme est bidon, je ne le trace même pas. Il va vous falloir le lire en direct
à noter que l'unité de base des angles dans les fonctions c'est le radian.

L'ocasion de voir les codes dxf des textes, et un test sur un intervale ( x1<X<x2)

On peut aussi retenir une méthode quand on fait des programmes de test.
On commence par créer une liste d'entrée, puis on initialise les variables en piochant dans cette liste. Comme ça, si on veut changer les paramètres, on à qu'a changer la liste. Petite astuce avec le débuggeur voir ici.

le lisp ici TRIGO.LSP

 

Trigo Couleurs (polar

 

Qui à dit qu'on devait faire que des trucs moche?

Dans le même espris on va faire des lignes tous les 360/256 °
et affecter la couleur de la ligne = un numéro incrémenté.

Je ne donne même pas le code.

A vous de le faire à partir de l'exemple précédent

alez...si

 

 

 

 

 

 

lien vers cadXP