Aller au contenu

(gile)

Moderateurs
  • Compteur de contenus

    12 247
  • Inscription

  • Dernière visite

  • Jours gagnés

    209

Tout ce qui a été posté par (gile)

  1. 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) )
  2. 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) )
  3. (gile)

    Lisp et Autocad LT ...

    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.
  4. 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))
  5. 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.
  6. (gile)

    formation Lisp

    Salut, Je peux aussi dispenser des formations AutoLISP, me contacter par message privé ou mail.
  7. Salut, La console AutoCAD ne reconnait malheureusement pas toutes les commandes (voir la liste des commandes utilisables).
  8. (gile)

    Bonne année

    Une version plus récente.
  9. (gile)

    Bonne année

  10. (gile)

    création boutons pour LISP

    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.
  11. (gile)

    création boutons pour LISP

    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).
  12. 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.
  13. Là je ne comprends plus...
  14. 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) )
  15. 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
  16. 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.
  17. :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.
  18. 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) )
  19. 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))
  20. (gile)

    Changement calque bloc "U"

    "; 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.
  21. (gile)

    Changement calque bloc "U"

    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.
  22. (gile)

    Changement calque bloc "U"

    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))) ) )
  23. (gile)

    Changement calque bloc "U"

    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.
  24. (gile)

    Changement calque bloc "U"

    As tu essayé un CONTROLE (_AUDIT) du dessin ? Peux-tu mettre un ligne un bout de fichier avec un ou deux de ces blocs ?
  25. (gile)

    Changement calque bloc "U"

    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.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité