Megeon Posté(e) le 4 avril 2016 Posté(e) le 4 avril 2016 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:
Tramber Posté(e) le 4 avril 2016 Posté(e) le 4 avril 2016 Ce que j'aimerais avoir :faire en sort que lorsque je sélectionne un bloc il le scale lui et ses semblables de 2.54Il 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 ./__\. (.°=°.)
DenisHen Posté(e) le 4 avril 2016 Posté(e) le 4 avril 2016 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)
Patrick_35 Posté(e) le 4 avril 2016 Posté(e) le 4 avril 2016 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Megeon Posté(e) le 4 avril 2016 Auteur Posté(e) le 4 avril 2016 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 !
Tramber Posté(e) le 4 avril 2016 Posté(e) le 4 avril 2016 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 ./__\. (.°=°.)
Megeon Posté(e) le 4 avril 2016 Auteur Posté(e) le 4 avril 2016 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 !
(gile) Posté(e) le 4 avril 2016 Posté(e) le 4 avril 2016 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
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