Fred-P Posté(e) le 25 avril 2017 Posté(e) le 25 avril 2017 Bonjour, je cherche depuis quelques heures un moyen de pouvoir déplacer les même bloc sous l'axe X de celui ci pour insérer un autre bloc à la place de celui-ci. Je m'explique j'ai un bloc un une rotation de 90° par exemple et le même bloc à une rotation de 270° ainsi qu'un autre à un angle de 0° comment pourrais-je décaler le point d'accroche des 3 bloc a -30 unité de l'axe X du bloc et que par conséquence les 3 blocs se rapproche les un des autre sans avoir à le faire à la main y'a-t-il une propriété qui le permet ou un LISP ? Merci d'avance :) Voici un exemple Citer Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception
Geof Posté(e) le 25 avril 2017 Posté(e) le 25 avril 2017 Bonjour, je cherche depuis quelques heures un moyen de pouvoir déplacer les même bloc sous l'axe X de celui ci pour insérer un autre bloc à la place de celui-ci. Je m'explique j'ai un bloc un une rotation de 90° par exemple et le même bloc à une rotation de 270° ainsi qu'un autre à un angle de 0° comment pourrais-je décaler le point d'accroche des 3 bloc a -30 unité de l'axe X du bloc et que par conséquence les 3 blocs se rapproche les un des autre sans avoir à le faire à la main y'a-t-il une propriété qui le permet ou un LISP ? Merci d'avance :) Bonjour, Si j'ai bien compris, il suffit de modifier le bloc et de déplacer toutes tes géométries a Y-30.Le point de 0;0 de ton bloc ne bougera pas mais tes géométries seront positionné correctement. Citer
(gile) Posté(e) le 25 avril 2017 Posté(e) le 25 avril 2017 Salut, Si ça concerne toutes les référence du même bloc insérées dans le dessin, le plus simple est de déplacer les entités dans la définition du bloc depuis l'éditeur de blocs. S'il ne faut déplacer que certaines références, tu peux utiliser le LISP ci dessous : (defun moveBlock (blk dist) (setpropertyvalue blk "Position" (polar (getpropertyvalue blk "Position") (getpropertyvalue blk "Rotation") dist ) ) ) ;; Dépalcer un bloc (defun c:DPB (/ blk dist) (and (setq blk (car (entsel "\nSélectionnez le bloc: "))) (= (getpropertyvalue blk "LocalizedName") "Référence de bloc") (setq dist (getdist "\nSpécifiez la distance de déplacement: ")) (moveBlock blk dist) ) (princ) ) ;; Déplacer une sélection de blocs (defun c:DPSB (/ ss i dist) (if (and (setq ss (ssget '((0 . "INSERT")))) (setq dist (getdist "\nSpécifiez la distance de déplacement: ")) ) (repeat (setq i (sslength ss)) (moveBlock (ssname ss (setq i (1- i))) dist) ) ) ) 1 Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fred-P Posté(e) le 26 avril 2017 Auteur Posté(e) le 26 avril 2017 Je n'ai pas du être assez compréhensible ^^ En faite je voudrais déplacer le bloc ainsi que son point 0;0 c'est à dire l'objet en entier en comptant son point d'accroche en arrière (sur l'axe X par exemple du bloc) (en sachant que tout les objets sont identiques c'est à dire le même bloc) Citer Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception
(gile) Posté(e) le 26 avril 2017 Posté(e) le 26 avril 2017 C'est ce que font les LISPs ci-dessus (DPB pour déplacer un seul bloc ou DPSB pour déplacer une sélection de blocs). 1 Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fred-P Posté(e) le 26 avril 2017 Auteur Posté(e) le 26 avril 2017 C'est ce que font les LISPs ci-dessus (DPB pour déplacer un seul bloc ou DPSB pour déplacer une sélection de blocs). D'accord merci je viens de l'utiliser petite question par rapport à ce LISP j'essaye mais je ne trouve pas comment modifier le déplacement de l'axe X à l'axe Y est-ce possible? ou ce LISP ne fait le déplacement que sur l'axe X? Merci :) Citer Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception
(gile) Posté(e) le 26 avril 2017 Posté(e) le 26 avril 2017 Ce LISP ne fait que le déplacement suivant le "l'axe X du bloc" comme demandé dans ton premier message. Si tu veux un déplacement suivant "l'axe Y du bloc", il faut ajouter 90° à la rotation du bloc. Autrement dit, en LISP, remplacer, dans la routine moveBlock :(getpropertyvalue blk "Rotation")par :(+ (getpropertyvalue blk "Rotation") (* pi 0.5)) 1 Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Fred-P Posté(e) le 27 avril 2017 Auteur Posté(e) le 27 avril 2017 Ce LISP ne fait que le déplacement suivant le "l'axe X du bloc" comme demandé dans ton premier message. Si tu veux un déplacement suivant "l'axe Y du bloc", il faut ajouter 90° à la rotation du bloc. Autrement dit, en LISP, remplacer, dans la routine moveBlock :(getpropertyvalue blk "Rotation")par :(+ (getpropertyvalue blk "Rotation") (* pi 0.5)) Super merci beaucoup pour l'aide ! :D Citer Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception
Messages recommandés