Aller au contenu

Dupliquer une rotation d'un bloc à l'autre


Messages recommandés

Posté(e)

Bonjour,

 

Je cherche un LISP qui pourrait me permettre de dupliquer la valeur de la propriété rotation d'un bloc vers un autre bloc (qu'il ai le même nom ou pas) afin d'aligner rapidement 2 blocs (en l’occurrence il s'agit d'interrupteurs sur un plan d'implantation pour les curieux :P)

 

Si quelqu'un avait un petit LISP (car je ne vois pas d'astuce qui pourrait-être aussi rapide que 2 clics), je ne dirais pas non :D

 

Merci par avance.

 

Nico

Posté(e)

Salut,

 

(defun c:rotblk	(/ *error* source rotation target)
 (vl-load-com)

 (defun *error* (msg)
   (and
     msg
     (/= msg "Fonction annulée")
     (princ (strcat "\nErreur: " msg))
   )
   (vla-EndUndoMark (vla-get-activeDocument (vlax-get-acad-object)))
   (princ)
 )

 (while
   (not
     (and
(setq source (car (entsel "\nSélectionnez le bloc source: ")))
(setq source (vlax-ename->vla-object source))
(= (vla-get-ObjectName source) "AcDbBlockReference")
     )
   )
    (princ "\nL'objet sélectionné n'est pas un bloc !")
 )
 (setq rotation (vla-get-Rotation source))
 (vla-StartUndoMark (vla-get-activeDocument (vlax-get-acad-object)))
 (while (setq target (car (entsel "\nSélectionnez un bloc cible: ")))
   (vla-put-Rotation (vlax-ename->vla-object target) rotation)
 )
 (*error* nil)
)

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

Posté(e)

Merci beaucoup, c'est parfait :)

 

Il y a juste une chose étrange : quand je copie/colle le code dans mon perso.LSP ça ne fonctionne pas (après rechargement), alors que si je copie/colle dans un nouveau fichier à part ça fonctionne...

 

Si quelqu'un voit où est-ce que je me loupe je suis preneur.

 

Bonne journée.

Posté(e)
quand je copie/colle le code dans mon perso.LSP ça ne fonctionne pas (après rechargement)' date=' alors que si je copie/colle dans un nouveau fichier à part ça fonctionne...[/quote']

 

A première vue, je dirais que la dernière fonction (defun *error*) définie de ton perso.LSP écrase la même fonction *error* qui devrait être en fonction pour ROTBLK.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

A première vue, je dirais que la dernière fonction (defun *error*) définie de ton perso.LSP écrase la même fonction *error* qui devrait être en fonction pour ROTBLK.

 

Cela me paraît possible, du coup comment puis-faire pour corriger le problème ?

Posté(e)

Cela me paraît possible, du coup comment puis-faire pour corriger le problème ?

 

Difficile à dire sans connaitre le contenu de 'perso.lsp'.

Mais je ne pense pas que ça vienne de là, *error* est déclarée en local et redéfinie dans rotblk.

 

Es-tu sur de ton copier/coller dans le fichier perso.lsp (appariement des parenthèses) ?

Quel est le message d'erreur ?

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

Posté(e)

Difficile à dire sans connaitre le contenu de 'perso.lsp'.

Mais je ne pense pas que ça vienne de là, *error* est déclarée en local et redéfinie dans rotblk.

 

Es-tu sur de ton copier/coller dans le fichier perso.lsp (appariement des parenthèses) ?

Quel est le message d'erreur ?

 

Oui je suis sûr de mon Ctrl+C/V, je l'ai fais une seconde fois pour être certain, et j'ai vérifié, toutes les parenthèse sont correctes.

Et il n'y a pas de message d'erreur, simplement la fonction ne s'implémente pas, et est donc "inconnue" quand je tape ROTBLK alors qu'en passant par la solution du fichier à part, cela a fonctionné du premier coup.

:blink:

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é