Aller au contenu

transformer coordonnes point


Messages recommandés

Invité ingoenius
Posté(e)

Toujours le même problème, et j'arrive aps a le comprendre,

 

si dans un script je crée les point P0 P1 et je dessine une ligne P0 P1, ensuite je tourne l'axe des z selon le même angle, mais comment récupérer les nouvelles coordonnes des point p0 et p1 ?

 

J'ai cherches des info pour la commande trans, mais j'y suis pas arrivé

 

comment ecrire la commande trans pour arriver a avoir 2 lignes superposes?

 

 

 

 
(defun c:LIG()
(setq P0 (getpoint "\nDebut Ligne\n"))
(setq P1 (getpoint "\nFin Ligne\n"))  
(command "_line" P0 P1 "")

(setq INCL(angle  P0 P1));radians
(setq INCL_G (angtos incl 0 3))	;degres
(command "_ucs" "n" "z" INCL_G "")  

(command "_line" P0 P1 "")
 
 
)

 

 

 

 

[Edité le 19/2/2010 par ingoenius]

Posté(e)

Salut,

 

Les fonctions Get* et Command fonctionnent en coordonnées SCU courant.

 

Donc P0 et P1 sont défins du coordonées du SCU courant quand (getpoint ...) a été invoqué.

 

Si tu modifies le SCU et que tu relances (command "_line" P0 P1 "") la ligne est dessinée avec le même coordonnées mais par rapport au nouveau SCU.

 

Les coordonnées définies dans le SCG sont immuables, tu peux donc, après avoir tracé la première ligne, traduire P0 et P1 en coordonnées SCG, puis changer de SCU et relancer (Command "_line" ...) avec P0 et P1 traduits dans ce nouveau SCU.

 

(defun c:LIG (/ P0 P1 P0W P1W INCL)
 (setq P0 (getpoint "\nDebut Ligne\n"))
 (setq P1 (getpoint "\nFin Ligne\n"))
 (setq P0W (trans P0 1 0))		; P0 dans le SCG
 (setq P1W (trans P1 1 0))		; P1 dans le SCG
 (command "_line" P0 P1 "")
 (setq INCL (angle P0 P1))		;radians
 (setq INCL_G (angtos incl 0 3))	;degres
 (command "_ucs" "n" "z" INCL_G "")
 (setq P0 (trans P0W 0 1))		; P0W dans le nouveau SCU
 (setq P1 (trans P1W 0 1))		; P1W dans le nouveau SCG
 (command "_line" P0 P1 "")
)

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

Invité ingoenius
Posté(e)

Ici grace a vos aides mes modif pour inserer les blocs Anello en suivant l'inclinaison de la ligne de depart sens antihoraire de rotation (avec des decalages que j'ai prevus)

 

il faut d'abord creer un bloc nommés Anello

constitue d'un cercle de diamètre 0.04

 

 

[surligneur] Par contre maintenant fonctionne seulement a partir de la vue TOP, il faut modifier quoi pour le faire fonctionner aussi en vue FACE ou n'importe quel vue de départ? [/surligneur]

 

(defun c:LIG()
;pour l'instint ca fonctionne seulement dans la vue TOP
 
(setq DTR (/ PI 180))		
(setq DESTRA (* 0 DTR))		
(setq SINISTRA (* 180 DTR))	
(setq SU (* 90 DTR))
(setq GIU (* 270 DTR))
(setq DIAG (* 45 DTR))
 
(SETQ OSN (GETVAR "OSMODE"))
(setvar "osmode" 3)  

(setq P0 (getpoint "\nDebut Ligne\n"))
;(setq P1 (getpoint "\nFin Ligne\n"))  
(command "_line" P0 pause "")
(setq linea (entlast))

(setq P1 (cdr(assoc 11(entget linea))))
(setvar "osmode" 0)
(setq P0 (trans P0 1 0))
(setq P1 (trans P1 1 0))  
(command "_erase" linea "" "")
(setq INCL(angle  P0 P1));radians
(setq INCL_G (angtos incl 0 3))	;degres
(command "_ucs" "n" "z" INCL_G "")  

(setq P0 (trans P0 0 1))
(setq P1 (trans P1 0 1))

(setq Disttruss 0.074)	;distanza linea a ponte
(setq P0 (polar P0 SU Disttruss))    
(setq P1 (polar P1 SU Disttruss))   
(command "_line" P0 P1 "")


(setq DIST (distance P0 P1))	;distance
 

 (setq Diam_anello 0.04)
 (setq Demidiam (/  Diam_anello 2.0))
 (setq Distbache 0.03)
 (Setq MoveAnello (+ Demidiam Distbache))
 (setq DistA 0.2)
 (setq DistB 0.16)
 (setq DistR (- Dist (* 2.0 Moveanello)))

 (setq Q (fix(+ 1.0(/ DistR DistA)))) 
 (setq anelli (* Q Diam_anello))
 (setq spazi(* DistB (- Q 1.0)))
 (setq occupato (+ anelli spazi))
 (setq spost1 (+ Demidiam (/ (- Dist occupato)2.0)))
 (setq spost2 0.05)


 (setq P0 (polar P0 DESTRA spost1))
 (setq P0 (polar P0 SU spost2))

 (setvar "osmode" 0)
 (setq Blocco "Anello")
 (command "_-insert" Blocco P0  "" "" "")
 (setq An (entlast))
 (command "reseau" An "" "R" 1 Q  0.2  "")

;;;  (setq Blocco "cordage_elastique")
;;;  (command "_-insert" Blocco P0  "" "" "")
;;;  (setq An (entlast))
;;;  (command "reseau" An "" "R" 1 Q  0.2  "")

 (command "_erase" linea "" "")



 
(command "_UCS" "g" "") ;remet le scu general  
(setvar "osmode" OSN)   ;remet les osmodes
 
)

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é