-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
208
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Ceux qui auraient déjà fini leur devoirs (et qui s'ennuient) peuvent se pencher sur la variante "Spirale d'or".
-
Il n'y a aucune urgence à répondre et je pense qu'il y a de la place pour de nombreuses réponses différentes.
-
Salut, Je propose un challenge pour l'été (profiter des vacances pour apprendre ou se perfectionner en LISP). Tout le monde a entendu parler de la suite de Fibonacci. Une spirale de Fibonacci est une succession d'arcs de cercle de 90° connectés tangentiellement dont les rayons sont les termes de la suite de Fibonacci. Un exemple de spirale de Finonacci composée de 7 arcs : Challenge Il s'agit d'écrire une routine qui prend en argument le point de départ de la spirale et le nombre d'arcs pour dessiner la spirale dans AutoCAD (plusieurs arcs ou une polyligne). La routine (ici nommée spiralFib) devra pouvoir être appelée depuis une commande LISP (ici nommée c:TEST) pour pouvoir être testée dans AutoCAD pour dessiner des spirales ayant au minimum 4 arcs. (defun c:test (/ p i) (and (setq p (getpoint "\nPoint de départ: ")) (setq i (getint "\nNombre d'arcs [4-32]: ")) (< 3 i) (spiralFib p i) ) (princ) ) Un screencast montrant un exemple. Variante On peut, sur le même principe faire une routine pour une "Spirale d'or".
-
[Résolu] Comment ajouter 1 à un élément d'une liste ?
(gile) a répondu à un(e) sujet de DenisHen dans Visual LISP
As-tu compris pourquoi tu n'y arrivais pas ? C'est ça qui est important. -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
(gile) a répondu à un(e) sujet de DenisHen dans Visual LISP
_$ (gc:SubstAt 1 3 '(0 0 0 0 0)) (0 0 0 1 0) -
Salut, Un truc du genre: If ent.ObjectName = "AcDbPolyline" AndAlso ent.Layer = "Polygonale" ...
-
[Challenge] Les cercles magiques en AutoLISP
(gile) a répondu à un(e) sujet de Patrick Emin dans Programmer en s'amusant
Salut, Est-ce qu'on peut proposer plusieurs réponses ? -
Communiquer et récupérer une variable excel uniquement en lisp
(gile) a répondu à un(e) sujet de vins13007 dans AutoCAD 2020-2024
Salut, Avec (vlax-get-property object property) tout dépend de ce qu'est object. Dans tous les cas, c'est l'aide pour les références VBA Excel que tu trouveras les listes de propriétés. Si object est l'Application Excel, les propriétés sont listées ici. Si object est un classeur, les propriétés sont listées ici. Si object est une feuille, les propriétés sont listées ici. etc. -
Extraire surface d'un solide3D (AutoLisp)
(gile) a répondu à un(e) sujet de GautierVsr dans Routines LISP
Certes, si on décompose un solide 3d comme le suggèrent @Tramber et @Fraid , les faces planes génèreront des régions dont on peut obtenir l'aire mais guère plus, le régions fournissent aussi peu d'informations géométriques que les solides 3d et il faudra les décomposer à leur tour pour obtenir leurs contours. On est à peu près rendu au même point qu'avec la "représentation des contours" (CF ce sujet). Pour ma part je reste convaincu que les solides 3d d'AutoCAD (avec les régions et surfaces) sont les entités les moins bien adaptées quand il s'agit de récupérer des données géométriques ou autre. Si on veut utiliser un dessin AutoCAD comme "base de donnée" avec représentation graphiques, ce sont les blocs qui permettent le plus facilement de stocker des données facilement récupérables (via les attributs et, éventuellement les propriétés dynamiques) en affichant des entités graphiques. Créer des blocs qui contiennent des attributs pour les données et un ou plusieurs solides 3d pour l'illustration graphique est à mon avis, le moyen le plus adapté pour pouvoir à la fois présenter un dessin en 3d et pouvoir utiliser ces données. -
Extraire surface d'un solide3D (AutoLisp)
(gile) a répondu à un(e) sujet de GautierVsr dans Routines LISP
Salut, Comme l'a dit @didier les données des solides 3D AutoCAD autres que les "propiétés mécaniques" sont pas accessibles en LISP (ni en Visual LISP/VBA) et dans des environnements de programmation plus puissants (donc plus complexes) comme ObjectARX ou .NET, Autotodesk n'expose que la "représentation des contours" (Boundary Representation) qui n'est pas simple du tout à exploiter. Il me semble que le problème n'est pas pris dans le bon sens. Au moment où les solides 3D sont construits, les données géométriques que tu cherches à obtenir a posteriori sont connues puisqu'elle servent à construire ledit solide. Une solution serait donc de construire ce solide via un petit programme LISP en récupérant ces données et en les attachant au solide créé via les données étendues ou un dictionnaire d'extension. Il suffirait ensuite de récupérer ces données. -
[Résolu] Dessiner des lignes avec "recouvrement"
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Si je peux me permettre, il vaut mieux laisser la fonction 'polymake' le plus générique possible,donc sans l'expression (vlax-put-ldata ...) et utiliser sa valeur de retour : (setq ent (polymake ptlist)) (vlax-ldata-put ent "MetroHaHo" MetroHaHo) ou, directement : (vlax-ldata-put (polymake ptlist) "MetroHaHo" MetroHaHo) -
Décalé à gauche et droite en 1 seul clic
(gile) a répondu à un(e) sujet de willy95 dans Débuter en LISP
(defun c:TAB (/ dis ent) (vl-load-com) (if (setq dis (getdist (strcat "\nLargeur totale du Tableau <" (rtos (getvar "OFFSETDIST")) ">: " ) ) ) (setvar "OFFSETDIST" dis) (setq dis (getvar "OFFSETDIST")) ) (if (setq ent (car (entsel "\nChoix de l'Axe : "))) (progn (setq ent (vlax-ename->vla-object ent) clayer (getvar 'clayer) ) (foreach obj (vlax-safearray->list (vlax-variant-value (vla-Offset ent (* 0.5 dis)) ) ) (vla-put-Layer obj clayer) ) (foreach obj (vlax-safearray->list (vlax-variant-value (vla-Offset ent (* -0.5 dis)) ) ) (vla-put-Layer obj clayer) ) ) ) (princ) ) -
Décalé à gauche et droite en 1 seul clic
(gile) a répondu à un(e) sujet de willy95 dans Débuter en LISP
Salut, Avec la fonction vla-Offset on peut décaler des deux côtés dans intervention de l'utilisateur. (defun c:TAB (/ dis ent) (vl-load-com) (if (setq dis (getdist (strcat "\nLargeur totale du Tableau <" (rtos (getvar "OFFSETDIST")) ">: " ) ) ) (setvar "OFFSETDIST" dis) (setq dis (getvar "OFFSETDIST")) ) (if (setq ent (car (entsel "\nChoix de l'Axe : "))) (progn (setq ent (vlax-ename->vla-object ent)) (vla-Offset ent (* 0.5 dis)) (vla-Offset ent (* -0.5 dis)) ) ) (princ) ) -
Integrer une action dans la structure dcl dans un fichier lisp
(gile) a répondu à un(e) sujet de fabcad dans Pour aller plus loin en LISP
" action = \"(setq Cou \\\"_YELLOW\\\")\";" Un caractère d'échappement (\) devant chaque guillemet (") et chaque caractère d'échappement (\). -
[Résolu] Comment être discret en ligne de commande ?
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, Avant la première expression (command ...) : (setq echo (getvar 'cmdecho)) (setvar 'cmdecho 0) Après la dernière expression (command ...) : (setvar 'cmdecho echo) Comme avec toute modification de variable système, il est préférable de restaurer les valeurs initiales dans une fonction de gestion des erreurs (redéfinition locale de la fonction *error*) au cas où une erreur intervienne avant la restauration (ne pas oublier qu'une annulation avec Echap génère une erreur). -
Remplacer des points par des cercles ....possible ?
(gile) a répondu à un(e) sujet de esbe dans Routines LISP
Ce code est vieux, il date d'une époque où on utilisait des bbcodes pour formater les message. Il en restait dans le code ([surligneur]). Le code est corrigé. -
[Résolu] Polyligne que je n'arrive pas à dessiner.
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Qu'en déduit-tu ? Que dit l'aide à propos de la fonction getangle ? -
[Résolu] Polyligne que je n'arrive pas à dessiner.
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, Que renvoie l'expression suivante quand tu réponds 35 ? (setq AngBeche (getangle "\nAngle de la bèche (degrés) : ")) -
Dessiner une polyligne, mais avec un arc de cercle...
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
J'ai écrit cette routine juste avant de la poster. Je l'avais appelée c:denish parce c'était le premier truc qui m'est venu à l'esprit, mais ce n'est vraiment pas le nom de la commande qui est important. J'ai modifié la routine : - correction d'un dysfonctionnement avec la commande _UCS (comme ça il n'y a plus de mapcar*) - valeur par défaut stockées dans des variables globales - changement de nom pour éviter toute équivoque. * comprendre et apprivoiser mapcar est une étape majeure dans l'apprentissage du LISP, idem pour la récursivité. -
Dessiner une polyligne, mais avec un arc de cercle...
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Tu devrais pouvoir t'inspirer de ça : (setq *angle* (* pi 0.75)) (setq *rayon* 3.0) (setq *enrobage* 5.0) (setq *prolongement* 8.5) (defun c:toto (/ a r e p ptA ptB ptC os c pt1 pt2 tp3 tp4 pt5 pt6) (if (setq a (getangle (strcat "\nAngle <" (angtos *angle*) ">: "))) (setq *angle* a) (setq a *angle*) ) (if (setq r (getdist (strcat "\nRayon <" (rtos *rayon*) ">: "))) (setq *rayon* r) (setq r *rayon*) ) (if (setq e (getdist (strcat "\nEnrobage <" (rtos *enrobage*) "> "))) (setq *enrobage* e) (setq e *enrobage*) ) (if (setq p (getdist (strcat "\nProlongement <" (rtos *prolongement*) ">: "))) (setq *prolongement* p) (setq p *prolongement*) ) (if (and (setq ptA (getpoint "\nPoint de base A: ")) (setq ptB (getpoint ptA "\nPoint de base B: ")) (setq ptC (getpoint ptA "\nPoint de base C: ")) ) (progn (setq os (getvar 'osmode)) (setvar 'osmode 0) (command-s "_UCS" "_3p" ptA ptB ptC) (setq pt3 (list (+ e r) e) c (list (car pt3) (car pt3)) pt2 (polar c (- (* 1.5 pi) a) r) pt1 (polar pt2 (- pi a) p) pt4 (list (- (distance ptA ptb) e r) 5) c (list (car pt4) (car pt3)) pt5 (polar c (- a (* 0.5 pi)) r) pt6 (polar pt5 a p) ) (command-s "_pline" pt1 pt2 "_arc" pt3 "_line" pt4 "_arc" pt5 "_line" pt6 "" ) (command-s "_UCS" "_previous") (setvar 'osmode os) ) ) (princ) ) -
Dessiner une polyligne, mais avec un arc de cercle...
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Donc sur ton dessin, c'est 135° au lieu de 45° ? Ou alors c'est entre 0° (demi-tour) et 90° (droit) ? -
Dessiner une polyligne, mais avec un arc de cercle...
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, Pour faire simple, pas besoin de "bulge". Une fois les points calculés, il suffit d'utiliser les options de la commande POLYLIGN (_PLINE). (command "_pline" pt1a pt2a "_arc" pt3a "_line" pt4a "_arc" pt5a "_line" pt6a "") -
Salut, Le sinus du demi angle est égal à la demi corde (côté opposé à l'angle) divisée par le rayon (hypoténuse). Donc l'angle est égal deux fois l'arcsinus de la demi corde divisée par le rayon. Sinon, il y a cette page.
-
Le format DWG n'a pas changé depuis AutoCAD 2018 (AC1032)...
-
