Aller au contenu

Messages recommandés

Posté(e)

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?

Posté(e)

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

Posté(e)

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+

Posté(e)

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

Posté(e)

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...

Posté(e)

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

Posté(e)

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+

 

;)

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é