Aller au contenu

rotation sur copie de l\'object


Messages recommandés

Invité ingoenius
Posté(e)

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

Invité ingoenius
Posté(e)

merci gile je vais etudier ;-)

Invité ingoenius
Posté(e)

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

 

 

Posté(e)

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)

Et voilà avec votre aide

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

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é