fograf02 Posté(e) le 12 mars 2007 Posté(e) le 12 mars 2007 un message que j`avais poste sur le forum autocad: posté le 8/3/2007 à 23:54 Bonjour, Ou puis-je trouver une routine pour changer l`echelle de textes ou de blocs multiples en gardant leurs points d`insertion et leurs dimensions relatives (=pour X2 leur dimension, et non pas pour tous les mettre a la dimension 3)merci ------------------------------------------------------------------------------------------------------------------ j`ai pas trouve pour les textes, mais pour les blocs en voila un: ; (Scale Blocks in Place); Copyright © 1998 DotSoft, All Rights Reserved; Website: www.dotsoft.com; ----------------------------------------------------------------------; DISCLAIMER: DotSoft Disclaims any and all liability for any damages; arising out of the use or operation, or inability to use the software.; FURTHERMORE, User agrees to hold DotSoft harmless from such claims.; DotSoft makes no warranty, either expressed or implied, as to the; fitness of this product for a particular purpose. All materials are; to be considered ‘as-is’, and use of this software should be; considered as AT YOUR OWN RISK.; ---------------------------------------------------------------------- (defun c:blkscale () (setq cmdecho (getvar "CMDECHO")) (setvar "CMDECHO" 0) (command "_.UNDO" "_G") (setq sset (ssget '((0 . "INSERT")))) (if sset (progn (setq sf (getreal "Scale Factor: ")) (setq num (sslength sset) itm 0) (while (< itm num) (setq hnd (ssname sset itm)) (setq ent (entget hnd)) (setq pt (cdr (assoc 10 ent))) (command "_.SCALE" hnd "" pt sf) (setq itm (1+ itm)) ) ) ) (setq sset nil) (command "_.UNDO" "_E") (setvar "CMDECHO" cmdecho) (princ))-------------------------------------------------------------------------------------------------------- J`avais appris le lisp il y a des annees mais je ne me souviens plus de rien, donc une question pour nos amateurs :quelle est la ligne la dedans qui demande la selection des blocs? Est-ce que je peux l`adapter pour selectionner des textes et faire la meme chose?
BIM G CO Posté(e) le 14 mars 2007 Posté(e) le 14 mars 2007 cette ligne-là (setq sset (ssget '((0 . "INSERT"))))te crée une selection incluant TOUS LES BLOCS inséré dans le dessin Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
stephan35 Posté(e) le 15 mars 2007 Posté(e) le 15 mars 2007 Ok !Effectivement c'est le SSGET, Pour tes autres réponses, cherche bien dans le forum, il y a ta réponse toute faite pour doubler la taille de tes textes !!! (déjà vu !) A+
fograf02 Posté(e) le 15 mars 2007 Auteur Posté(e) le 15 mars 2007 3 questions: -si SSGET selectionne TOUS les blocs du dessin, comment le lisp fait-il pour me demander les blocs a mettre a l`echelle? -qu`est-ce que fait CMDECHO" a 0? -quelle serait la fonction pour demander des textes au lieu de blocs? Stefan35, sur le forum j`ai fait une recherche `texte echelle` mais je n`ai rien trouve de convainquant
Bred Posté(e) le 15 mars 2007 Posté(e) le 15 mars 2007 Salut, en effet,(setq sset (ssget '((0 . "INSERT"))))Te demandes de faire une selection, mais ne selectionne que des blocs. Pour selectionner TOUS les blocs d'un dessin, il faut rajouter "_X"(setq sset (ssget "_X" '((0 . "INSERT")))) CMDECHO a 0 permet de ne pas faire afficher le cheminement des commandes sur la ligne de commande. POur la selection des textes, au lieu d'avoir "insert" dans SSGET, ce serait "MTEXT" pour les texte multi-ligne, ou "TEXT" pour les texte simple. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
stephan35 Posté(e) le 16 mars 2007 Posté(e) le 16 mars 2007 tu trouveras la réponse ici : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=14031 ne prêtes pas attention aux écarts de sujets .... a+
fograf02 Posté(e) le 16 mars 2007 Auteur Posté(e) le 16 mars 2007 stefan35, en fait j`ai pas trouve la reponse mais les ecarts de sujets m`ont bien fait rire, et j`en ai appris un rayon sur les vins d`Alsace. Apres m`etre calme, j`ai fait: (defun c:sct ()(setq cmdecho (getvar "CMDECHO"))(setvar "CMDECHO" 0)(command "_.UNDO" "_G") (setq sset (ssget '((0 . "mtext")))) (if sset (progn(setq sf (getreal "Scale Factor: "))(setq num (sslength sset) itm 0)(while (< itm num)(setq hnd (ssname sset itm))(setq ent (entget hnd))(setq pt (cdr (assoc 10 ent)))(command "_.SCALE" hnd "" pt sf)(setq itm (1+ itm)))))(setq sset nil)(command "_.UNDO" "_E")(setvar "CMDECHO" cmdecho)(princ)) et ca marche, merci Bred
stephan35 Posté(e) le 19 mars 2007 Posté(e) le 19 mars 2007 Salut !effectivement cela fonctionne aussi comme tu l'as écrit,sache cependant qu'il y avait une solution sans utiliser les commandes d'édition autocad, en jouant avec la base de donnée des entités autocad ! Mon exemple fournis pour modifier un texte (fallait bien regarder ...) ;) (setq x4(nentsel)) (if (/= x4 nil) (progn (setq x40 (entget (car x4))) (setq #type0 (cdr(assoc 0(entget(car x4))))) (if (or (= #type0 "TEXT")(= #type0 "ATTRIB")) (progn (prompt "\nOk pour entitée selectionnée") ;Recopie du contenu dans la destination (princ (strcat " " (cdr (assoc 1 x40)) "->" X3)) (redraw (car x4) 2) (setq x40 (subst (cons '1 X3) (assoc 1 X40) x40)) (entmod x40) (entupd (car x4)) (redraw (car x4) 1) ) (progn (prompt "\nNégatif pour ce type d'entitée") ) ) ) (setq fffff "ok") ) [surligneur] Avec juste une toute petite adaptation :[/surligneur] (defun c:taille (/) (setq taille (atoi (getstring "Donner la nouvelle taille :"))) (setq x4(nentsel)) (if (/= x4 nil) (progn (setq x40 (entget (car x4))) (setq #type0 (cdr(assoc 0(entget(car x4))))) (if (or (= #type0 "TEXT")(= #type0 "MTEXT")(= #type0 "ATTRIB")) (progn (prompt "\nOk pour entitée selectionnée") ;Recopie du contenu dans la destination (redraw (car x4) 2) ;(setq x40 (subst (cons '1 "Mon texte") (assoc 1 X40) x40)) (setq x40 (subst (cons '40 taille) (assoc 40 X40) x40)) (entmod x40) (entupd (car x4)) (redraw (car x4) 1) ) (progn (prompt "\nNégatif pour ce type d'entitée") (print x40) ) ) ) (setq fffff "ok") ) ) [surligneur] Et ça marche aussi .....[/surligneur] A+ ;)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant