Invité ingoenius Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Je voudrait faire un routine qui permetrai de faire des rotation sur la copie de l'object selectionnée , et a chaque iteration ajouterai un nouveai object ici le debut, mais je trouve pas la bonne sintaxe pour la commande rotate , je voudrair faire une rotation avec comme centre le ponit P0, pouvoir chosir l'angle en mode reference ® et ensuite dire combien de fois repeter la meme (copie rotation) (defun C:Rot_c ();rotatio sur copie de l'objet (setq Obj (car (entsel "\nClick to object'"))) (setq Info (entget Obj)) (setq Name (cdr (assoc 2 Info))) (setq Dove (cdr (assoc 10 Info))) (command "_copy" Obj "" 0 0 0 0 0 0 "" ) (setq OBJ_1 (entlast)) (setq P0(getpoint "\nClick Rotation point: ")) (command "_Rotate" Obj1 "" pause) ) merci ;-)
(gile) Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Salut, Regarde le LISP Res_Hel, il est prévu pour un réseau hélicoïdal, mais si la hauteur est nulle, il fait un réseau polaire (avec l'option référence) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité ingoenius Posté(e) le 17 mars 2009 Posté(e) le 17 mars 2009 J'arrive pas a comprendre ou est l'erreur ??? (defun C:Rot_c () ;rotation sur copie de l'objet selectionnee (setq Obj (car(entsel "\nSelectionner l'objet "))) (setvar osmode 3) (SETQ P0 (GETPOINT "\nCentre de la rotation")) (command "_copy" Obj "" 0 0 0 0 0 0 "" "") (setq Obj_1 (entlast)) (setvar osmode 0) (setq P1 (getpoint "\nClick Angle Rotation point 1:")) (command "_rotate" Obj_1 "" P0 "r" P0 P1 pause "" "") )
(gile) Posté(e) le 17 mars 2009 Posté(e) le 17 mars 2009 Salut, (defun C:Rot_c (/ obj p0 obj_1 p1) ;rotation sur copie de l'objet selectionnee (setq Obj (car (entsel "\nSelectionner l'objet "))) ;;(setvar "osmode" 3) (SETQ P0 (GETPOINT "\nCentre de la rotation")) (command "_copy" Obj "" "" "") (setq Obj_1 (entlast)) ;;(setvar "osmode" 0) (setq P1 (getpoint p0 "\nClick Angle Rotation point 1:")) (command "_rotate" Obj_1 "" P0 "r" P0 P1 pause) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité ingoenius Posté(e) le 18 mars 2009 Posté(e) le 18 mars 2009 Et voilà avec votre aideles 2 routines pretes a marcher, testez les et dite moi si pour vous sont utiles ou pas, pour mois c'est une façon plus "visuelle" de la commande réseau polaire (defun C:Roc () ;rotation sur copie de l'objet selectionnee (setq N (fix(- (getreal "Nomber of copy?:")2))) (setq Obj (ssget));selection (setvar "osmode" 3) (SETQ P0 (GETPOINT "\nRotation Center")) (command "_copy" Obj "" "" "") (setq Obj_1 Obj);il secondo oggetto (setvar "osmode" 0) (command "_line" P0 pause "") (setq LINEA (entlast)) (setq P1 (getvar "LASTPOINT")) (command "_rotate" Obj_1 "" P0 "r" P0 P1 pause) (command "_erase" LINEA "") (repeat N (command "_copy" Obj_1 "" "" "") (setq Obj_2 Obj_1);il terzo oggetto (command "_rotate" Obj_2 "" P0 "r" P0 "" "") (setq Obj_1 Obj_2) ) ) (defun C:Roa () ;rotation sur copie de l'objet selectionnee selon arc difini a l'ecran (setq Obj (ssget));selection (setvar "osmode" 3) (SETQ P0 (GETPOINT "\nPick Rotation Center")) (command "_copy" Obj "" "" "") (setq Obj_1 Obj);il secondo oggetto (setvar "osmode" 0) (command "_line" P0 pause "") (setq LINEA (entlast)) (setq P1 (getvar "LASTPOINT")) (command "_line" P0 pause "") (setq LINEA2 (entlast)) (setq P2 (getvar "LASTPOINT")) (command "_rotate" Obj_1 "" P0 "r" P0 P1 P2 "") (command "_line" P0 pause "") (setq LINEA3 (entlast)) (setq P3 (getvar "LASTPOINT")) (setq myang (angle_3pts P0 P1 P2)) (setq angolo (atof(angtos myang 0 3))) (setq myArc (angle_3pts P0 P1 P3)) (setq angolo_arco (atof(angtos myArc 0 3))) (setq N (- (fix(/ angolo_arco angolo))2)) (repeat N (command "_copy" Obj_1 "" "" "") (setq Obj_2 Obj_1);il terzo oggetto (command "_rotate" Obj_2 "" P0 "r" P0 "" "") (setq Obj_1 Obj_2) ) (command "_erase" LINEA "" ) (command "_erase" LINEA2 "" ) (command "_erase" LINEA3 "" ) ) ;;; ANGLE_3PTS Retourne l'angle (radians) défini par son sommet et deux points ;;; L'angle retourné est toujours positif et inférieur à pi radians. Merci Gile ;-) (defun angle_3pts (som p1 p2 / d1 d2 d3) (setq d1 (distance som p1) d2 (distance som p2) d3 (distance p1 p2) ) (if (and (< 0 d1) (< 0 d2)) (acos (/ (+ (* d1 d1) (* d2 d2) (- (* d3 d3))) (* 2 d1 d2))))) ;;; ACOS Retourne l'arc cosinus du nombre, en radians (defun acos (num) (cond ((equal num 1 1e-9) 0.0) ((equal num -1 1e-9) pi) ((< -1 num 1) (atan (sqrt (- 1 (expt num 2))) num) )))
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