Invité ingoenius Posté(e) le 19 février 2010 Posté(e) le 19 février 2010 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]
(gile) Posté(e) le 19 février 2010 Posté(e) le 19 février 2010 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) le 19 février 2010 Posté(e) le 19 février 2010 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 Anelloconstitue 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 )
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