Aller au contenu

déplacement bloc sous axe


Messages recommandés

Posté(e)

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

 

1493115249-capture.png

Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception

Posté(e)

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.

Posté(e)

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)
    )
 )
)

  • Upvote 1

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

Posté(e)

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)

Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception

Posté(e)

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 :)

Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception

Posté(e)

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))

  • Upvote 1

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

Posté(e)

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

Chargé d'étude électricité | Projeteur Revit / AutoCAD : CFO - CFA / CVC - PB en BET Conception

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é