yusukens82 Posté(e) le 8 février 2023 Posté(e) le 8 février 2023 Bonjour, Quelqu'un pourrait m'aider à adapter un lips, je souhaite faire une rotation de 90 degré d'un bloc depuis le point de basse du bloc. une première écriture: (defun c:RR90 (/ yy) (setq yy (ssget)) (command "ROTATION" yy "" "0" "90") ) N’étant pas un expert du lips, merci d'être exigeant Cordialement,
PHILPHIL Posté(e) le 9 février 2023 Posté(e) le 9 février 2023 hello Yusuken82 un truc comme ca ? Phil ; -------------------------------------------- ; ROTATION SUIVANT LE POINT INSERTION DES BLOC ; -------------------------------------------- (defun c:rri () (setvar "cmdecho" 0) (setvar "dimzin" 0) (setvar "ucsfollow" 0) (setq osm (getvar "osmode")) (setvar "osmode" 0) (setq rotp (atof (getcfg "APPDATA/ROTP"))) (setq tmp (getdist (strcat "\nENTRER LA VALEUR DE ROTATION <" (rtos rotp 2 8) ">: " ) ) ) (if tmp (setq rotp tmp) ) (setcfg "APPDATA/ROTP" (rtos rotp 2 8)) (prompt (strcat "\nCLIQUER SUR LES OBJETS A TOURNER : < ROTATION = " (rtos rotp 2 8) " >: " ) ) (setq bl nil) (while (null bl) (setq bl (ssget (list (cons 0 "insert") ) ) ) ) (command-s "scu" "") (setq ent nil) (setq compt 0) (setq com (sslength bl)) (while (< compt com) (progn (setq ent (entget (ssname bl compt))) (setq point10 (cdr (assoc 10 ent)) noment (cdr (assoc -1 ent)) ) (command-s "ROTATION" noment "" point10 rotp) (setq compt (1+ compt)) ) ) (initget "n N") (setq ans (getkword "\nEST CE LE BON COTE ? (O/N):")) (if (OR (= ans "n") (= ans "N")) (progn (command-s "ANNULER" compt) (setq ent nil) (setq compt 0) (setq com (sslength bl)) (while (< compt com) (progn (setq ent (entget (ssname bl compt))) (setq point10 (cdr (assoc 10 ent)) noment (cdr (assoc -1 ent)) ) (command-s "ROTATION" noment "" point10 (- 0 rotp)) (setq compt (1+ compt)) ) ) ) ) (princ) (setvar "osmode" osm) (command-s "scu" "p") (setvar "dimzin" 8) ) FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 9 février 2023 Posté(e) le 9 février 2023 Salut, On peut faire beaucoup plus simple (et plus robuste) sans modifier le SCU ni les variables système (et en localisant les variables). (defun c:rotbloc90 (/ ent) (if (setq ent (car (entsel "\nSelectionnez un bloc: "))) (if (= (cdr (assoc 0 (entget ent))) "INSERT") (setpropertyvalue ent "Rotation" (+ (getpropertyvalue ent "Rotation") (* pi 0.5)) ) (prompt "\nL'objet sélectionné n'est pas un bloc.") ) (prompt "\nAucun objet sélectionné.") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
yusukens82 Posté(e) le 9 février 2023 Auteur Posté(e) le 9 février 2023 Merci Phiphi pour ton lisp très complet ça permet de choisir l'angle de rotation et une confirmation visuel. Merci Gile pour ton Lisp, en revanche est-ce possible de l'adapter pour qu'on puisse déclencher la routine sans cliquer de nouveau sur le bloc. j'ai essayé sans succès à placer la variable (ssget)
(gile) Posté(e) le 9 février 2023 Posté(e) le 9 février 2023 il y a 1 minute, yusukens82 a dit : Merci Gile pour ton Lisp, en revanche est-ce possible de l'adapter pour qu'on puisse déclencher la routine sans cliquer de nouveau sur le bloc. j'ai essayé sans succès à placer la variable (ssget) Dans ton premier message, tu disais : "je souhaite faire une rotation de 90 degré d'un bloc depuis le point de basse du bloc." (defun c:rotblocs (/ ss rot i bloc) (if (and (setq ss (ssget '((0 . "INSERT")))) (setq rot (cond ((getangle "\nSpécifiez la rotation <90°>: ")) (T (* pi 0.5)) ) ) ) (repeat (setq i (sslength ss)) (setq bloc (ssname ss (setq i (1- i)))) (setpropertyvalue bloc "Rotation" (+ (getpropertyvalue bloc "Rotation") rot) ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
yusukens82 Posté(e) le 9 février 2023 Auteur Posté(e) le 9 février 2023 Merci beaucoup Gile c'est parfait. pardon, j'aurai du ajouter la mention "bloc sélectionné" pour être plus précis
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