Bred Posté(e) le 16 novembre 2007 Posté(e) le 16 novembre 2007 Salut, (gile) - encore lui - il y a quelque temps maintenant, m'avait permis de m'arranger le coup du problème d'orientation d'insertion de blocs en passant par vla-insertblock .... (ici) Mais maintenant mon problème est le suivant : lorsque je veux insérer un bloc dans une fenêtre active de l'EP, dans laquelle j'aurais orienter mon SCU différement du SCU de l'EO "onglet", cette orientation n'est pas pris en compte.... faute à UCSXDIR je pense.... (defun getSpace () (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) ) (vla-insertblock (getSpace) ; (vlax-3d-point (trans pt 1 0)) NomB 1 1 1 ; (angle '(0 0 0) (trans [b](getvar "UCSXDIR")[/b] 0 (trans '(0 0 1) 1 0 T)))) merci de votre aide !!! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 16 novembre 2007 Posté(e) le 16 novembre 2007 Salut, Je ne comprends pas la question, chez moi ça marche, c'est bien le SC de la fenêtre active, et pas celui de la présentation que tu as changé ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 16 novembre 2007 Auteur Posté(e) le 16 novembre 2007 c'est bien le SC de la fenêtre active, et pas celui de la présentation que tu as changé ?oui oui...exemple :Le SCG en espace objet "onglet"je tourne mon SCU dans la fenêtre de 22 sur les X et de 33 sur les Z.l'orsque le bloc s'insert, il est en SCG. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 16 novembre 2007 Posté(e) le 16 novembre 2007 Le SCG en espace objet "onglet"je tourne mon SCU dans la fenêtre de 22 sur les X et de 33 sur les Z.l'orsque le bloc s'insert, il est en SCG. Je fais : (vla-insertblock (getSpace) (vlax-3d-point (trans (getpoint) 1 0)) "Bloc" 1 1 1 (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T)))) J'ai : http://img137.imageshack.us/img137/9054/insscurg9.png http://img523.imageshack.us/img523/4212/insscu2eb1.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 16 novembre 2007 Auteur Posté(e) le 16 novembre 2007 Re,en repiquant ton ancien exemple : (defun Ins_BlocImb (NomB pt) (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point (trans pt 1 0)) NomB 1 1 1 (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T)))) ) (defun c:test () (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Bloc (vla-add (vla-get-Blocks AcDoc) (vlax-3d-point '(0 0 0)) "Bloc" ) Bloc_1 (vla-add (vla-get-Blocks AcDoc) (vlax-3d-point '(0 0 0)) "Bloc_1" ) Bloc_2 (vla-add (vla-get-Blocks AcDoc) (vlax-3d-point '(0 0 0)) "Bloc_2" ) ) (vla-addcircle Bloc_1 (vlax-3d-point '(0 0 0)) 10 ) (vla-addcircle Bloc_1 (vlax-3d-point '(0 0 0)) 5 ) (vla-addline Bloc_2 (vlax-3d-point '(-10 -10 0)) (vlax-3d-point '(10 10 0)) ) (vla-addline Bloc_2 (vlax-3d-point '(-10 10 0)) (vlax-3d-point '(10 -10 0)) ) (Ins_BlocImb "Bloc_1" '(0 0 0)) (Ins_BlocImb "Bloc_2" '(0 0 0)) ) En EO (SCG) :http://xs221.xs.to/xs221/07465/testscg.jpg En EP, fenêtre active, SCU 90 sur X (dans la fenêtre uniquement):http://xs121.xs.to/xs121/07465/testscuEP.jpg Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 16 novembre 2007 Posté(e) le 16 novembre 2007 J'ai compris ton souci. L'expression :(angle '(0 0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T))))c'est pour la rotation du bloc, c'est à dire l'angle par rapport à l'axe X du SCO du bloc. Si tu veux insérer le bloc dans un plan non parallèle au SCG il faut aussi forcer sa normale (direction d'extrusion) (setq norm (trans '(0 0 1) 1 0 T)) (vla-put-Normal (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point (trans (getpoint) 1 norm)) "bloc" 1 1 1 (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 norm) ) ) (vlax-3d-point norm) ) PS : dans le code que tu donnes tu ne crée pas de bloc imbriqué, tu insères 2 blocs. Pour imbriquer les blocs bloc_1 et bloc_2 dans bloc, pui insérer bloc dans le dessin il faudrait faire : (defun Ins_BlocImb (NomB pt) (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point (trans pt 1 0)) NomB 1 1 1 (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 (trans '(0 0 1) 1 0 T)) ) ) ) (defun c:test (/ acdoc bloc bloc_1 bloc_2) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Bloc (vla-add (vla-get-Blocks AcDoc) (vlax-3d-point '(0 0 0)) "Bloc" ) Bloc_1 (vla-add (vla-get-Blocks AcDoc) (vlax-3d-point '(0 0 0)) "Bloc_1" ) Bloc_2 (vla-add (vla-get-Blocks AcDoc) (vlax-3d-point '(0 0 0)) "Bloc_2" ) ) (vla-addcircle Bloc_1 (vlax-3d-point '(0 0 0)) 10 ) (vla-addcircle Bloc_1 (vlax-3d-point '(0 0 0)) 5 ) (vla-addline Bloc_2 (vlax-3d-point '(-10 -10 0)) (vlax-3d-point '(10 10 0)) ) (vla-addline Bloc_2 (vlax-3d-point '(-10 10 0)) (vlax-3d-point '(10 -10 0)) ) (vla-insertBlock Bloc (vlax-3d-point '(0 0 0)) "bloc_2" 1 1 1 0 ) (vla-insertBlock Bloc (vlax-3d-point '(0 0 0)) "bloc_1" 1 1 1 0 ) (Ins_BlocImb "Bloc" '(0 0 0)) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 16 novembre 2007 Auteur Posté(e) le 16 novembre 2007 Si tu veux insérer le bloc dans un plan non parallèle au SCG il faut aussi forcer sa normale (direction d'extrusion)ça me parait évident !...... maintenant que tu me le dits !!!!...merci une fois encore (gile). Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
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