svp j'ai une routine mais elle ne fait pas tous le travail c urgent si c possible. ( defun c:AXE ( / js i id ic ip ir) (command "cmdecho" 0) ;;;;;MET LES UNITةS AutoCAD => ORIGINE = EST - ANGLE = SENS TRIGO - (command "-UNITES" "2" "2" "1" "2" "0.00" "N" ) ;;;;;SE PLACE PROVISOIREMENT DANS LE SCU GةNةRAL - C.Richard DDE88 (command "scu" "ef" "Mpist") (command "scu" "s" "Mpist" ) (command "scu" "g") ;;;;;CHOIX DES ENTITES (alert "L'axe doit obligatoirement commencer et se terminer par une ligne.\n \nLe nom du fichier *.CAP ne comportera que 8 caractères maximum") (setq js (ssget) i 0 ir 1 ip 1 id 1 ic 1 ) ;;;;;ECRITURE DU FICHIER *.CAP POUR PISTE+ - C.Richard DDE88 (setq nf (getfiled "Ecriture de fichiers *.CAP pour PISTE+ (8 caractères maximum) " " " "CAP" 1)) (setq f (open nf "w")) (princ "REM Avertissement :\n" f) (princ "REM\n" f) (princ "REM 1) L'orientation des éléments correspond à un axe en plan\n" f) (princ "REM concu dans le sens des abscisses croissantes. Le cas échéant, \n" f) (princ "REM l'orientation d'un élément peut être modifiée avec la commande\n" f) (princ "REM INV.\n" f) (princ "REM 2) Il est préférable de saisir les éléments de l'axe dans le sens des\n" f) (princ "REM abscisses croissantes afin que le nom 'piste' de chacun d'eux \n" f) (princ "REM suive ce sens (par exemple D1 puis D2 ...)\n" f) (princ "REM 3) Le transfert de l'axe est correct si, dans AutoCAD :\n" f) (princ "REM * les angles sont orientés dans le sens trigonomètrique\n" f) (princ "REM et dont l'origine est l'EST,\n" f) (princ "REM * le système de coordonnées générales (SCG) est courant.\n" f) (princ "REM 4) La moulinette oriente uniquement les arcs de cercle et les\n" f) (princ "REM segments de droites (Cf.1), il est déconseillé de transferer\n" f) (princ "REM des cercles\n" f) (princ "REM 5) Le transfert de plusieurs axes est possible.\n" f) (princ "REM\n" f) (while (< i (sslength js)) (setq e (ssname js i) nom (cdr (assoc 0 (entget e))) ) (if (= nom "LINE") (progn (setq p1 (cdr (assoc 10 (entget e))) p2 (cdr (assoc 11 (entget e))) ) (princ "POI " f) (princ (strcat "P" (itoa ip) " ") f) (princ (rtos (car p1) 2 6) f) (princ " " f) (princ (rtos (cadr p1) 2 6) f) (princ "\n" f) (princ "POI " f) (princ (strcat "P" (itoa (1+ ip)) " ") f) (princ (rtos (car p2) 2 6) f) (princ " " f) (princ (rtos (cadr p2) 2 6) f) (princ "\n" f) (princ "DRO " f) (princ (strcat "D" (itoa id)) f) (princ " " f) (if (<= (car P1) (car P2)) (progn (princ (strcat "P" (itoa ip) " ") f) (princ (strcat "P" (itoa (1+ ip)) " ") f) ) (progn (princ (strcat "P" (itoa (1+ ip)) " ") f) (princ (strcat "P" (itoa ip) " ") f) ) ) (princ "\n" f) (setq ip (+ ip 2) id (1+ id)) ) ) (if (= nom "ARC") (progn (setq p1 (cdr (assoc 10 (entget e))) r (cdr (assoc 40 (entget e))) Ad (cdr (assoc 50 (entget e))) Aa (cdr (assoc 51 (entget e))) ) (princ "DIS " f) (princ (strcat "R" (itoa ir) " ") f) (if (<= Aa pi) (setq r (- r))) (princ r f) (princ " \n" f) (princ "POI " f) (princ (strcat "P" (itoa ip) " ") f) (princ (rtos (car p1) 2 6) f) (princ " " f) (princ (rtos (cadr p1) 2 6) f) (princ "\n" f) (princ "CER " f) (princ (strcat "CE" (itoa ic) " ") f) (princ (strcat "P" (itoa ip) " ") f) (princ (strcat "R" (itoa ir) " ") f) (princ "\n" f) (setq ip (1+ ip) ir (1+ ir) ic (1+ ic)) );;; fin progn ) (if (= nom "CIRCLE") (progn (setq p1 (cdr (assoc 10 (entget e))) r (cdr (assoc 40 (entget e))) ) (princ "DIS " f) (princ (strcat "R" (itoa ir) " ") f) (princ r f) (princ " \n" f) (princ "POI " f) (princ (strcat "P" (itoa ip) " ") f) (princ (rtos (car p1) 2 6) f) (princ " " f) (princ (rtos (cadr p1) 2 6) f) (princ "\n" f) (princ "CER " f) (princ (strcat "CE" (itoa ic) " ") f) (princ (strcat "P" (itoa ip) " ") f) (princ (strcat "R" (itoa ir) " ") f) (princ "\n" f) (setq ip (1+ ip) ir (1+ ir) ic (1+ ic)) );;; fin progn ) (setq i (1+ i)) );;; fin while (princ "GRA\n" f) (princ "REM\n" f) (close f) ;;;;;REVIENT DANS LE SCU PARTICULIER - C.Richard DDE88 (command "scu" "R" "Mpist" ) (command "cmdecho" 1) (princ) );;; fin defun