Aller au contenu

Messages recommandés

Posté(e)

bon voila, j'ai besoin d'un petit programme, et je me suis dit c'est tout petit je devrais y arriver seul, et ben je me suis totalement planté ! :unsure: :huh:

 

Ce que j'aimerais avoir :

faire en sort que lorsque je sélectionne un bloc il le scale lui et ses semblables de 2.54

 

 

Ce que j'ai pour l'instant :

pour la sélection de l'objet et récupérer le nom de celui ci

(setq ent (car(entsel)))

 

sélectionner tout ses copains ( la je pense que je me plante quelque part)

 (setq cop(ssget"_x" ' ((0. ent))))

 

enfin la commande

 (Command "_scale" cop "___" "2.54") 

 

le ___ c'est le point de base et j'aimerais que ce soit par défaut le point d'insertion du bloc !

 

donc ma question est simple : HELP :unsure:

Posté(e)

Ce que j'aimerais avoir :

faire en sort que lorsque je sélectionne un bloc il le scale lui et ses semblables de 2.54

Il faut mieux manier ses unités de dessin avant de vouloir lisper un tel truc. Si je peux me permettre.

Le mieux est de changer la source en pouces. UNITES à lancer dans le dessin source et dans le cible.

Après ré-insertion, il suffit de filtrer tous les blocs concernés et passer les échelles à 1 où la valeur voulue.

Pour aller vite.

Bref, en un mot, revoir tes process plutôt que de réparer avec des lisps.

Ta question est simple : je la laisse à d'autres, je dois cracher un truc pour ce soir B)

Le code DXF de l'insertion est le code 10. Pas difficile de l'injecter à chaque fois.

:P

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Salut Megeon,

 

Je pense qu'il faudrait plustôt commencer par là :

(if (setq ss (ssget "_X" '((0 . "INSERT"))))
 (progn (setq i 0)
        (while (setq ent (ssname ss i))
          (setq i     (1+ i)
                elst  (entget ent)
                Coord (cdr (assoc 10 elst))
;;;(Attention aux échelles différentes)
          ) ;_ Fin de setq
          (command "_scale" ent "" Coord "2.54")
        ) ;_ Fin de while
 ) ;_ Fin de progn
) ;_ Fin de if

 

Je ne l'ai pas testé mais je pense être dans le bon...

 

EDIT : je viens de tester ce code, il ne change pas l'échelle mais il la multiplie par 2.54...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut

 

Pour sélectionner un objet

(setq ent (entsel))

 

Pour récupérer les codes dxf de l'objet sélectionné

(setq ent (entget (car ent)))

 

Pour vérifier que c'est un bloc

(eq (cdr (assoc 0 ent)) "INSERT")

 

récupere le nom du bloc (et pas ceux qui sont anomymes comme pour les blocs dynamiques)

(setq nom (cdr (assoc 2 ent)))

 

Créer un jeu de sélection avec le bloc sus nommé

(setq js (ssget "x" (list (cons 0 "insert") (cons 2 nom))))

 

Faire une boucle pour changer le facteur d'échelle de chaque bloc

(setq n 0)
(while (setq ent (ssname js n))
 (setq ent (entget ent))

 

Et changer le facteur d'échelle

(command "_.scale" (cdr (assoc -1 ent)) "" (cdr (assoc 10 ent)) "2.54")

 

Passer au suivant

(setq n (1+ n))

 

Ce qui donne au final

(defun c:e254()
 (and	(setq ent (entsel))
(setq ent (entget (car ent)))
(eq (cdr (assoc 0 ent)) "INSERT")
(setq nom (cdr (assoc 2 ent)))
(setq js (ssget "x" (list (cons 0 "insert") (cons 2 nom))))
(setq n 0)
   (while (setq ent (ssname js n))
     (setq ent (entget ent))
     (command "_.scale" (cdr (assoc -1 ent)) "" (cdr (assoc 10 ent)) "2.54")
     (setq n (1+ n))
   )
 )
 (princ)
)

 

ps : tu peux aussi utiliser la commande filtrer et ensuite changer directement le facteur d'échelle dans les propriétés

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Il faut mieux manier ses unités de dessin avant de vouloir lisper un tel truc. Si je peux me permettre.

Le mieux est de changer la source en pouces. UNITES à lancer dans le dessin source et dans le cible.

Après ré-insertion, il suffit de filtrer tous les blocs concernés et passer les échelles à 1 où la valeur voulue.

Pour aller vite.

Bref, en un mot, revoir tes process plutôt que de réparer avec des lisps.

Ta question est simple : je la laisse à d'autres, je dois cracher un truc pour ce soir B)

Le code DXF de l'insertion est le code 10. Pas difficile de l'injecter à chaque fois.

:P

 

Le truc c'est que je me suis rendu compte qu'un bloc était en pouce trop tard, car oui d'habitude, je n'ai pas ce soucis la car je met tout en métrique !

 

l'erreur est humaine.

 

pour les autres merci pour les codes !

Posté(e)

Pourquoi ne pas changer les échelles dans les propriétés X Y et Z, dans la palette ?

C'est ça qui me dépasse un peu...

Par ailleurs, avec -INSERER ou autre, il y a des process pour ton problème.

Pas le temps de chercher précisément.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Pourquoi ne pas changer les échelles dans les propriétés X Y et Z, dans la palette ?

C'est ça qui me dépasse un peu...

Par ailleurs, avec -INSERER ou autre, il y a des process pour ton problème.

Pas le temps de chercher précisément.

 

car je ne connaissais pas cette méthode pour plusieurs bloc a la fois !

Posté(e)

Salut,

 

Personnellement j'agirais plutôt sur la définition du bloc ce qui résoudrait le problème pour d'éventuelles insertions ultérieures.

Soit, pour le dessin, mettre tous les objets à l'échelle dans l'éditeur de bloc, puis une régénération.

Soit, directement dans le fichier du bloc, puis insérer, mettre à jour = Oui, et échap.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é