-
Compteur de contenus
12 247 -
Inscription
-
Dernière visite
-
Jours gagnés
209
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par (gile)
-
Rotation des TEXTs/MTEXTs a l'Horizontale suivant le Point de Vue 3D ?
(gile) a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, je suis allé un peu vite en besogne... Les textes multiligne provoquent en effet une erreur mais c'est à cause de la propriété "Position". Une nouvelle version qui semble fonctionner avec les textes simples et textes multilignes quels que soient la justification, le SCU courant, etc. (defun c:AlignToView (/ vd ss i txt elst pos) (setq vd (trans '(0 0 1) 2 0 T)) (if (setq ss (ssget '((0 . "TEXT,MTEXT")))) (repeat (setq i (sslength ss)) (setq txt (ssname ss (setq i (1- i)))) (setpropertyvalue txt "Normal" vd) (if (= (cdr (assoc 0 (entget txt))) "MTEXT") (setpropertyvalue txt "Rotation" (- (angle '(0 0 0) (getvar 'ucsxdir)))) (if (= 0 (getpropertyValue txt "Justify")) (progn (setq pos (getpropertyvalue txt "Position")) (setpropertyvalue txt "Rotation" 0) (setpropertyvalue txt "Position" pos) ) (progn (setq pos (getpropertyvalue txt "AlignmentPoint")) (setpropertyvalue txt "Rotation" 0) (setpropertyvalue txt "AlignmentPoint" pos) ) ) ) ) ) (princ) ) -
Rotation des TEXTs/MTEXTs a l'Horizontale suivant le Point de Vue 3D ?
(gile) a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, (defun c:AlignToView (/ vd ss i txt pos) (setq vd (trans '(0 0 1) 2 0 T)) (if (setq ss (ssget '((0 . "*TEXT")))) (repeat (setq i (sslength ss)) (setq txt (ssname ss (setq i (1- i))) pos (getpropertyvalue txt "Position") ) (setpropertyvalue txt "Normal" vd) (setpropertyvalue txt "Rotation" 0) (setpropertyvalue txt "Position" pos) ) ) (princ) ) -
Salut, Même si certains (rebcao se reconnaitra) font des merveilles avec des macros et du diesel, il n'y a pas photo. AutoLISP est un vrai langage de programmation qui offre des possibilités qu'aucun expert en macro ne pourra égaler... Si AutoCAD LT est 3 fois moins cher qu'une version pleine, c'est qu'il y a des raisons (ou des justifications). Peut-être une alternative avec certains clones d'AutoCAD qui supportent AutoLISP, mais si ton patron ne veut pas investir, il le payera par un déficit de productivité*... * à l'inverse, certains (trop rares à mon goût), investissent non seulement dans des versions pleines mais aussi dans des développements spécifiques.
-
[Résolu] Quels sont les trois derniers caractères d'une chaine.
(gile) a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut, Voir les fonctions substr et strlen (attention, en AutoLISP, l'index de base pour les chaînes est (curieusement) 1). (substr str (- (strlen str) 2)) -
Salut, C'est tout simplement parce que AutoCAD utilise deux moyens différents pour stocker les données des objets non graphiques : les "tables" uniquement pour les calques, les types de ligne, les vues, les style de texte, les définitions de bloc, les SCUs, les applications enregistrées, les styles de cote et les fenêtres ; les dictionnaires nommés pour tout le reste (présentations, groupes matériaux, styles visuels, style de tableaux, styles de multiligne, etc.), plus les dictionnaires personnalisés éventuellement créés par programmation.
-
Salut, Je peux aussi dispenser des formations AutoLISP, me contacter par message privé ou mail.
-
Salut, La console AutoCAD ne reconnait malheureusement pas toutes les commandes (voir la liste des commandes utilisables).
-
Une version plus récente.
-
Salut, Il y a une balise HTML qui s'est glissée à la fin du code ajoutant une parenthèse supplémentaire : </or")> Il faut la supprimer du fichier. PS: je corrige le code dans le message original.
-
Hum... Ce sujet décrit dans le détail comment charger un LISP. Si tu as toujours des problèmes, donne nous la macro que tu as associée au bouton (et éventuellement le LISP).
-
Afficher les coordonées de l'espace objet dans la présentation
(gile) a répondu à un(e) sujet de Bapt dans AutoCAD 2017
OK, C'est bien que tu y soit arrivé tout seul. Tu peux aussi mettre : pause pour passer la main à l'utilisateur pour spécifier le point d'insertion. -
Afficher les coordonées de l'espace objet dans la présentation
(gile) a répondu à un(e) sujet de Bapt dans AutoCAD 2017
Là je ne comprends plus... -
Afficher les coordonées de l'espace objet dans la présentation
(gile) a répondu à un(e) sujet de Bapt dans AutoCAD 2017
Le LISP ne fait que retourner le résultat (les coordonnées SCG du centre de la fenêtre) qui s'affiche sur la ligne de commande. Celui-ci ne demande pas de sélectionner de fenêtre mais ne fonctionne que s'il n'y en a qu'une. Il crée un texte avec les coordonnées SCG au centre de la fenêtre. (defun c:toto (/ ss i vp el cv pt) (if (= (getvar 'tilemode) 1) (prompt "\nCommande non autorisée en espace objet.") (if (setq ss (ssget "_X" (list (cons 0 "VIEWPORT") (cons 410 (getvar 'ctab))))) (if (< 2 (sslength ss)) (prompt "\nIl y a plus d'une fenêtre dans la présentation.") (progn (setq i 0) (while (and (setq vp (ssname ss i)) (not cv)) (if (/= (cdr (assoc 69 (setq el (entget vp)))) 1) (setq cv (cdr (assoc 12 el))) (setq i (1+ i)) ) ) (if cv (progn (if (= (getvar 'cvport) 1) (command "_.mspace") ) (setq pt (trans cv 2 0)) (command "_.pspace") (command "_.text" "_non" (trans cv 2 3) "" "" (strcat (rtos (car pt)) ", " (rtos (cadr pt))) ) ) ) ) ) (prompt "\nAucune fenêtre dans la présentation") ) ) (princ) ) -
Incliner une ligne en fonction d'une autre
(gile) a répondu à un(e) sujet de crumls dans AutoCAD 2016
Je ne comprends pas la demande. si la longueur de la "jambe" est fixe et qu'elle doit pivoter jusqu'à "toucher le sol", tu peux dessiner un cercle dont le centre est l'axe du pivot et le rayon la longueur de la "jambe" puis une rotation avec l'option "Référence". https://screencast.autodesk.com/Embed/Timeline/570036fa-0633-47c9-98a9-c99d9354f925 -
Incliner une ligne en fonction d'une autre
(gile) a répondu à un(e) sujet de crumls dans AutoCAD 2016
Salut, Si j'ai bien compris la demande, en utilisant l'accrochage EXTrémité (et éventuellement INTersection) : lancer la commande ROTATION sélectionner le jambage spécifier le point de base à l'intersection du jambage et du limon cliquer le point au coin inférieur droit du limon. -
Afficher les coordonées de l'espace objet dans la présentation
(gile) a répondu à un(e) sujet de Bapt dans AutoCAD 2017
:blink: ???Je ne sais pas "sélectionner l'espace objet" et, dans tous les cas, ces coordonnées sont celles du centre d'une fenêtre flottante, il est donc indispensable de savoir de quelle fenêtre il s'agit. -
Afficher les coordonées de l'espace objet dans la présentation
(gile) a répondu à un(e) sujet de Bapt dans AutoCAD 2017
Salut, Comme un champ dit "dynamique" ne se met à jour qu'après une intervention de l'utilisateur, une solution sans réacteurs devrait être acceptable. Le LISP suivant (améliorable) affiche le centre de la vue de la fenêtre sélectionnée. (defun c:centrevue () (trans (cdr (assoc 12 (entget (car (entsel "\nSélectionnez une fenêtre: "))))) 2 0) ) -
transformation d'une de mes variable en chaine de caractère
(gile) a répondu à un(e) sujet de arnaudalp dans Débuter en LISP
Salut, Si c'est pour obtenir une chaîne représentant une expression LISP (ici une liste) la fonction vl-prin1-to-string devrait faire l'affaire. (vl-prin1-to-string ptincr)retourne : "(\"Profil n°1\" \"Point 1\" (0.0 100.0))" Dans l'autre sens (lecture du fichier), (read "(\"Profil n°1\" \"Point 1\" (0.0 100.0))")retourne la liste : ("Profil n°1" "Point 1" (0.0 100.0)) -
"; erreur: no function definition: VLAX-GET-ACAD-OBJECT" est le message classique quand l'interface COM (Visual LISP) n'est pas chargée*. Il faut faire (vl-load-com) pour charger cette interface. Une fois cette expression évaluée, les expressions ci-dessus devraient fonctionner. Elle ne demanderont pas de sélectionner des objets puis qu'elles agissent directement sur toutes les définitions de bloc. * suivant la version d'AutoCAD, les LISP chargés au démarrage, les Express Tools chargés, l'interface peut être automatiquement chargée, ce qui explique l'oubli fréquent de cette expression dans les programmes non aboutis.
-
salut, Pour les expressions LISP il suffit de le copier et de les coller en ligne de commande ; puis valider par entrée. C'est un des points fort du LISP : on peur directement entrer des expressions LISP en ligne de commande. Les fichiers DCL sont des fichiers de description des boites de dialogue, il faut les placer dans un répertoire des chemins de recherche. Les fichiers VLX sont le résultat de la compilation de fichiers LISP et, éventuellement de fichiers DCL. Pour edit_bloc, charger edit_bloc.vlx revient à charger tous les fichiers en une seule fois.
-
On peut aussi, si le dessin ne contient pas de blocs anonymes issus de blocs dynamiques, renommer tous ces blocs en supprimant l'atérisque, ce qui leur rendra un comportement "normal". (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (if (= (vla-get-Islayout B) :vlax-false) (vla-put-Name b (vl-string-left-trim "*" (vla-get-Name B))) ) )
-
Je n'ai pas trouvé comment ce type de bloc peut être créé, mais si le but est de purger les calques, on peut mettre tous les composants de tous les blocs sur le calque 0 avec l'expression LISP suivante : (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (if (= (vla-get-Islayout B) :vlax-false) (vlax-for o b (vla-put-Layer o "0")) ) ) Avec Edit_bloc (sur cette page), ça fonctionne aussi.
-
As tu essayé un CONTROLE (_AUDIT) du dessin ? Peux-tu mettre un ligne un bout de fichier avec un ou deux de ces blocs ?
-
Salut, Les blocs anonymes "*U###" sont des blocs issus de bloc dynamiques. Si tu modifies les calques dans la définition du bloc dynamique de base (pas anonyme) les modifications devraient se répecuter automatiquement dans tous les blocs anonymes issus de ce bloc.
