Bred Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 Bonjour,Je ne comprend pas d'où peut venir mon erreur : Insertion de bloc tout les 2.00 vers les Z, avec rotation de 180° à chaque fois : (defun c:insb () (setq bloc "mon_bloc") (setq h (getint "\n Hauteur :")) (initget 1) (setq pt (getpoint "\n Point d'insertion :")) (setq Rot 0) (repeat (fix h) (InsBlocdec pt bloc Rot) (setq pt (list (car pt) (cadr pt) (+ (caddr pt) 2.00)) Rot (+ Rot 180))) );;;;;;;;; Insert bloc rotation Rot + DECOMPOSER;;;;;;;;;;;(defun InsBlocdec (pt chem Rot) (command "-inserer" chem pt "1" "1" Rot "_explode" (ssget "_L")) ) ==> ça fonctionne selon la hauteur, puis sa bug si la hauteur est un peu grande (ex : 20), en refusant de décomposer le 2 derniers blocs.... merci de vos conseils... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 Le problème vient de la visibilité à l'écran à mon avis,.... et d'expérience. (defun InsBlocdec (pt chem Rot) (command "-inserer" chem pt "1" "1" Rot) (vla-explode (vlax-ename->vla-object(entlast))) ) Avec le VLA, l'explosion n'a pas besoin de se faire en plein écran Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 Encore mieux, avec un (command "-inserer" (strcat "*" chem) pt "1" "1" Rot)c'est décomposé, ou en vla(vla-explode (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point pt) chem 1 1 1 rot)) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 16 mai 2006 Auteur Posté(e) le 16 mai 2006 merci... mais : - le "*mon_bloc" je l'avais testé, et le souci est que le bloc est constitué de plusieurs blocs imbriqué, ce qui donne un résultat bizarre pour les points d'insertion... - en vla de Patrick_35 : ça à l'air de fonctionner, sauf que j'ai des choses bizarre si mon scu n'est pas en général... + remarque ci-dessous - en vla de Tramber : ça fonctionne, sauf que j'ai le bloc non explosé qui reste sous le bloc explosé... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 ou alors prendre la controle de la variable EXPLMODE Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 16 mai 2006 Auteur Posté(e) le 16 mai 2006 ou alors prendre la controle de la variable EXPLMODE ... Alors là je ne comprend vraiment pas la raison (j'ai vraiment l'impression d'être largué moi...) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 Ah oui, c'est un peu plus compliqué (defun InsBlocdecl(pt nom rot / a b c d) (setq a (vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point pt) nom 1 1 1 rot) b T) (setq b (vlax-safearray->list (vlax-variant-value (vla-explode a)))) (vla-delete a) (while b (setq d nil) (foreach n b (if (eq (vla-get-objectname n) "AcDbBlockReference") (progn (setq c (vlax-safearray->list (vlax-variant-value (vla-explode n))) d (append d c)) (vla-delete n) ) ) ) (setq b d) ) (princ) ) La variable qu'a donné Tramber sert pour décomposer un bloc qui n'a pas une échelle X uniforme avec l'échelle Y @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 - en vla de Patrick_35 : ça à l'air de fonctionner, sauf que j'ai des choses bizarre si mon scu n'est pas en général... Le fautif:(setq pt (getpoint "\n Point d'insertion :")) changer pour:(setq pt (trans (getpoint "\n Point d'insertion :") 1 0)) EXPLMODE te permet suivant sa valeur (0 ou 1), d'exploser des blocs insérés à une échelle non uniforme. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 16 mai 2006 Posté(e) le 16 mai 2006 Toutes mes excuses, je ne pensais pas à EXPLMODE mais à l'autre, celle qui permet de décomposer les blocs en les insérant (pourquoi se compliquer la vie). Mais je ne retrouve plus ce nom ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 16 mai 2006 Auteur Posté(e) le 16 mai 2006 Merci à tous (ce n'est pas encore ça mais ça vient ...)en adaptant les réponses de tout le monde j'arrive presque à ce que je veux :(pour info je suis en °) (defun c:insb () (setq bloc "mon_bloc") (setq h (getint "\n Hauteur :")) (initget 1) (setq pt (trans (getpoint "\n Point d'insertion :") 1 0)) (setq Rot 0) (repeat (fix h) (InsBlocdec pt bloc Rot) (setq pt (list (car pt) (cadr pt) (+ (caddr pt) 2.00)) Rot (+ Rot 180))) );;;;;;;;; Insert bloc rotation Rot + DECOMPOSER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun InsBlocdec (pt chem Rot / a)(setq a (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point pt) chem 1 1 1 (/ (* pi Rot) 180))) (vla-explode a) (vla-delete a) ) L'insertion des blocs se fait super bien (merci patrick)La décomposition aussi (merci général)... le seul souci étant que je récupère bien le bon point d'insertion maitenant (grâce au (setq pt (trans (getpoint "\n Point d'insertion :") 1 0)) .... (merci bonuscad) mais que je n'est pas la DIRECTION (ou le sens) !!! ... merci Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 17 mai 2006 Posté(e) le 17 mai 2006 Ah oui, au fait, la routine que je te donne décompose le bloc ainsi que tous les blocs qui peuvent être imbriqué dedans @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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