-
Compteur de contenus
33 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par onossa
-
Je vois que cette requête rejoint en partie mon post... Merci pour ton aide bonuscad (ce qui m'interesse c'est justement les polyligne 2d, même si ça ne me dérangerai vraiment pas qu'il puisse traiter les deux ! Je t'invite à voir mon post, chris_mtp (je suis novice et je sais pas créer un lien ici...)
-
Merci (Gile) Je vois que tu es bien matinal ! Il ne me reste "plus qu'à" ! grâce à votre aide, je pense avoir les éléments nécessaires. Je ne manquerai pas de poster le résultat, afin d'avoir vos commentaires et pourqsuoi pas, aider ceux pour qui cela pourrait servir ! Excellente journée à toi, et à tous !
-
Je reviens donc sur mon post initial. Je suis toujours aussi bloqué, avec une avancée: Une connaissance (thanks Aleksandr !!) m'a envoyé ces quelques lignes: (defun c:test(/ cPl cInd cDis oLst) (vl-load-com) (if(setq cPl(entsel "\nSelect polyline > ")) (progn (setq cInd 0 cPl(car cPl) ); end setq (while(setq cPt(vlax-curve-GetPointAtParam cPl cInd)) (if(/= cInd 0) (setq cDis(-(vlax-curve-GetDistAtParam cPl cInd) (vlax-curve-GetDistAtParam cPl(1- cInd))) ); end setq (setq cDis 0.0) ); end if (setq oLst(cons(list cInd cPt cDis) oLst) cInd(1+ cInd) ); end if ); end while (setq oLst(append(reverse oLst) (list(vlax-curve-GetDistAtParam cPl (1- cInd))))) ); end progn ); end if ); end of c:test Ce lisp renvoi une liste des points constituant la polyligne: coordonnées, longueur du segment, longueur totale. Pour la longueur cumulée, je n'aurai pas de probleme je pense. Egalement pour ce qui est de le placer dans un tableau. Je n'ai pas trouvé de doc sur vlax-curve dans l'aide d'AutoCAD ! Ce qu'il me reste à trouver, et je sollicite votre aide: c'est la direction du segment (vlax-curve-getFirstDeriv semblerai répondre à ma demande ? j'essayerai !), le radius dans le cas d'un segment arc, les coodonnées de centre dudit segment arc, ainsi que les coordonnes de l'intersection virtuelle de deux segments droits de chaque coté du segment arc... Merci aux virtuoses !
-
Afficher le périmètre de l\'objet
onossa a répondu à un(e) sujet de (gile) dans Programmer en s'amusant
Premièrement Bonuscad, merci pour avoir eu la gentillesse de me répondre. Néanmoins, petite mise au point: - Je n'ai jamais dit avoir écrit ce lisp (même si j'en ai écris quelques uns et récupéré bien d'autres) - J'ai essayé de retrouver l'auteur sans succès - Je suis tout nouveau sur le site et c'est le premier forum où je m'inscris, et suis étonné de voir cette réaction pour le moins accusatrice. Si c'est une accusation, je plaide coupable, car je récupère autant de lisp que j'ai su en créer. Des modestes, certes, mais qui répondaient toujours à un besoin précis. Lisps que j'ai d'ailleurs également distribué autour de moi, même si pas par forums. Ceci étant dit, je suis aujourd'hui dans une situation nouvelle: contrairement au passé, où à de nombreuses reprises j'ai eu le temps de me pencher longtemps sur un problème pour en trouver la solution, aujourd'hui ma situation perso et pro ne m'en donne très sincèrement pas le temps. Alors: OUI j'ai opté pour cette facilité. OUI, j'ai peut etre "pollué" ce sujet dans l'intention d'avoir les lumières de toi ou (Giles) ou autre passionné plein de talent, mais je pensais trouver de l'entraide. Et apparament je ne me suis pas totalement trompé vu l'aide que tu m'apporte. Même si je n'ai pas bien compris le problème: IP étant "intersection point": intersection étendue (virtuelle) de segments de la polyligne dont on rcupère les coordonnées et que l'on place dans le tableau... Je tâcherai de voir si on peut me prêter un ordi portable ou alors printer le lisp comme ça j'aurai le temps dans le RER de comprendre...! Je vois aujourd'hui que le visual lisp est largement utilisé voir privilégié au lisp standard... Je vais chercher aussi dans ce sens. Tout ceci dès que j'aurai un moment ! En attendant ce moment: Bien sur que j'aimerai que l'on m'aide là dessus. Bien sur que non: je ne sais aps comment faire un UP de mon sujet initial... Quelqu'un m'affranchit sur ce sujet également ? Enfin, oui c'est une vesion US et c'st là que l'on voit que j'ai pas créé ce lisp, car bossant sur les deux versions, j'ai adapté MES principaux lisp pour qu'ils tournent sur les deux... Tout ceci dit, merci encore et longue vie à vous virtuoses du lisp, et merci d'avance pour les bons princes qui éclaireront mes pas... -
Afficher le périmètre de l\'objet
onossa a répondu à un(e) sujet de (gile) dans Programmer en s'amusant
Bonjour ou bonsoir (Gile) Cette fonction est trè intéressante et a des similitudes avec une fonctionnalité que je cherche à obtenir: J'ai un lisp qui permet de dessiner un tableau en récupérant les propriétés de chacun des segment d'une polyligne choisie. Ce code a deux "problèmes": - La polyligne ne peut pas démarrer par un segment (dxf code 42 incriminé ??) - Il ne peut y avoir deux segments arcs contigus (le second ne me semble pas considéré comme un segment arc...) Le code est ci-après... Déolé s'il est loin d'être agréable, mais si quelqu'un pouvait m'aider à mettre le doisgt sur ce qui m'empêche qu'il fonctionne sans ses deux "bémols", ce serai le bonheur !!! Merci d'avance si vous pouvez m'aider... ; It makes a table with Route details from a picked POLYLINE (ROUTE). ; The polyline should by the original one, the one before converted ; by QUICKSURF. The program calculates centerpoints, radius, ; tangent points,intersection points, bearings and the length along ; the polyline. ; The program ask you to pick a polyline. After calculation the program ; ask for the insertion point for the table, an scalefactor for the ; coordinates,an offset value for the coordinates.After the tabel is ; drawn you vil be asked for a scale factor and rotations angel for ; the hole tabel. ; To load the program write at "command:" (load "rutetbl"), ; and start the program with command "table_tracks". ; The program consider that the coordinate system has 0 degr. at ; 90 degr. in the WCS of AutoCAD, and the angeles are clockwise. ; ; God Luck !! (Defun RTD (Vin) (* 180.0 (/ vin pi))) ; Radian to Degees (Defun DTR (vin) (* pi (/ vin 180.0))) ; Degees to Radian (Defun Closedown ();restaure l'etat (setvar "OSMODE" oldosmode) (setvar "plinetype" oldplinetype) (setvar "PLINEWID" oldpwid) (setvar "DIMZIN" olddimzin) (setvar "cmdecho" ocmd) (setvar "ANGBASE" angb) (setvar "ANGDIR" angd) (setvar "HIGHLIGHT" high) (setq *error* olderror) (princ) ) ;_ Fin de Defun (defun Myerror (s) (if (/= s "Fonction annulée!") (princ (strcat "\nErreur: " s)) ) ;_ Fin de if (closedown) ) ;_ Fin de defun ;function d'initialisation de variable et test sur calque (Defun Starttbl () (setq olderror *error*) (setq *error* myerror) (setq oldosmode (getvar "OSMODE")) (setq oldplinetype (getvar "PLINETYPE")) (setq oldpwid (getvar "PLINEWID")) (setq olddimzin (getvar "DIMZIN")) (setq angB (Getvar "Angbase")) (setq AngD (Getvar "AngDir")) (setq high (Getvar "Highlight")) (setq ocmd (GetVar "CMDECHO")) (if (= (tblsearch "LAYER" "TEXTE") nil) (COMMAND "_LAYER" "New" "TEXTE" "ON" "TEXTE" "");si existe pas on crée "Nouv" et le rends actif "AC" (pour "ACtif") (Command "_LAYER" "ON" "TEXTE" "");si existe on le rend actif ) ;_ Fin de if ;init de quelques variables (setvar "OSMODE" 0) (setvar "plinetype" 0) (setvar "PLINEWID" 0) (setvar "DIMZIN" 0) (SetVar "ANGBASE" 0) (SetVar "ANGDIR" 0) (SetVAR "HIGHLIGHT" 0) ) ;_ Fin de Defun (Defun ArcSeg () ; distance & Angle between two vertices (setq dvv (distance (cdr (assoc 10 v1)) (cdr (assoc 10 el)))) (setq avv (angle (cdr (assoc 10 v1)) (cdr (assoc 10 el)))) ; Included angle as calculated by bulge factor (setq ang (* (atan (cdr (assoc 42 v1))) 4)) ; Calculate angle opposite included angle. (if (< (abs ang) pi) (setq ang2 (/ (- pi (abs ang)) 2)) ;<180 (setq ang2 (/ (- pi (- (* 2 pi) (abs ang))) 2)) ;>180 ) ;_ Fin de if ; Calculate radius of arc (setq r (/ (* (sin ang2) dvv) (abs (sin ang)))) ; Angle From V1 to Centre (if (> ang 0) ; Condition for ccw arc (if (< ang pi) (setq aca (+ avv ang2)) ;arc < 180 (setq aca (- avv ang2)) ;arc > 180 ) ;_ Fin de if ; Condition for cw arc (if (< (abs ang) pi) (setq aca (- avv ang2)) ;arc < 180 (setq aca (+ avv ang2)) ;arc < 180 ) ;_ Fin de if ) ;_ Fin de if ; Calculate centre of arc (setq vcen (polar (cdr (assoc 10 v1)) aca r)) ) ;_ Fin de Defun ;************************************************************************** *********************************************** ;fonction principale (DEFUN C:table_tracks () (starttbl);appel de la function starttlb (setq PKtListe nil) (setq TPteller 0 IPTeller 1 ) ;_ Fin de setq (alert "ENTREZ L'INTITULE DE LA COLONNE DE LA DISTANCE RELATIVE : 'K.P.' (Kilometric Point) ou 'C.P.L.' (Cumulative Projected Length) : ") (setq kpoucpl (getstring "ENTREZ L'INTITULE DE LA COLONNE DE LA DISTANCE RELATIVE : 'K.P.' (Kilometric Point) ou 'C.P.L.' (Cumulative Projected Length) : ")) (Setq elem (car (EntSel "\nSelectionner une polyligne : "))) (command "CONVERTpoly" "H" elem "" "_redraw") (while (not (AND (/= elem nil) (OR (= (cdr (Assoc 0 (entget elem))) "POLYLINE") ;(= (cdr (Assoc 0 (entget elem))) "LWPOLYLINE") ) ;_ Fin de OR ) ;_ Fin de OR ) ;_ Fin de not (Setq elem (car (EntSel "\nSelectionner une polyligne : "))) ) ;_ Fin de while (progn (setq el (entget elem)) (setq elem (entnext elem)) (setq el (entget elem)) (setq v0 el v1 el ) ;_ Fin de setq (while (not (AND (/= elem nil)(= (cdr (Assoc 0 (entget elem))) "SEQEND") ;;; (OR (= (cdr (Assoc 0 (entget elem))) "POLYLINE") ;;; (= (cdr (Assoc 0 (entget elem))) "LWPOLYLINE") ;;; ) ;_ Fin de OR ) ;_ Fin de OR ) ;_ Fin de not (If (/= (cdr (Assoc 42 el)) 0.0) ; teste si on est sur un arc ou une ligne clé 42 rayon de courbure du segment 0 -> segment droit (progn;segment courbe (Setq v1 el) (setq elem (Entnext Elem)) (setq el (Entget elem)) (ArcSeg) (setq pkten (cdr (assoc 10 v1))) (if (= TPteller 0) (setq TPnr "START UP") (setq TPnr (Strcat "TP" (itoa TPteller))) ) ;_ Fin de if (if (/= (Distance (cdr (Assoc 10 v1)) (cdr (assoc 10 el)) ) ;_ Fin de Distance 0.0 ) ;_ Fin de /= (setq Dpkt (Distance (cdr (Assoc 10 v0)) (cdr (assoc 10 v1)) ) ;_ Fin de Distance ) ;_ Fin de setq (if (= TPteller 0) (setq Dpkt 0.000) (setq Dpkt nil) ) ;_ Fin de if ) ;_ Fin de if (setq NyLinje (List TPnr (Car pkten) (cadr pkten) Dpkt nil nil) ) ;_ Fin de setq (if (= PktListe nil) (setq PktListe (list NyLinje nil)) (setq PktListe (cons NyLinje pktListe)) ) ;_ Fin de if (setq el2 (polar (cdr (assoc 10 v1)) avv (/ dvv 2))) (setq IP (inters (cdr (assoc 10 v0)) (cdr (assoc 10 v1)) vcen el2 nil ) ;_ Fin de inters ) ;_ Fin de setq (setq Tpnr (Strcat "IP" (ITOA IPteller))) (setq NyLinje (List TPnr (Car IP) ; IP + angel (Cadr IP) nil (Rtd (angle (cdr (assoc 10 v0)) (cdr (assoc 10 v1)) ) ;_ Fin de angle ) ;_ Fin de Rtd nil ) ;_ Fin de List ) ;_ Fin de setq (setq PktListe (cons NyLinje pktListe)) (setq Tpnr (Strcat "CP" (ITOA IPteller))) (setq NyLinje (List Tpnr (Car vcen) ;CP+R (Cadr vcen) nil nil r ) ;_ Fin de List ) ;_ Fin de setq (setq PktListe (cons NyLinje pktListe)) (setq pkten (cdr (assoc 10 el))) (setq TPteller (+ TPteller 1)) (setq TPnr (StrCat "TP" (itoa TPteller))) (setq NyLinje (List TPnr (Car pkten) ;TPb (Cadr pkten) (* (ABS Ang) r) nil nil ) ;_ Fin de List ) ;_ Fin de setq (setq PktListe (cons NyLinje pktListe)) (setq v0 el v1 el ) ;_ Fin de setq (setq elem (Entnext Elem)) (if (/= elem nil) (progn (setq el (Entget elem)) (setq TPteller (+ TPteller 1)) (setq IPteller (+ IPteller 1)) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de progn (progn;segment droit (setq pkten (cdr (assoc 10 el))) (if (= TPteller 0) (setq TPnr "START UP") (setq TPnr (Strcat "TP" (itoa TPteller))) ) ;_ Fin de if (if (/= (Distance (cdr (Assoc 10 v1)) (cdr (assoc 10 el)) ) ;_ Fin de Distance 0.0 ) ;_ Fin de /= (setq Dpkt (Distance (cdr (Assoc 10 v1)) (cdr (assoc 10 el)) ) ;_ Fin de Distance ) ;_ Fin de setq (if (= TPteller 0) (setq Dpkt 0.000) (setq Dpkt nil) ) ;_ Fin de if ) ;_ Fin de if (setq NyLinje (List Tpnr (Car pkten) (cadr pkten) Dpkt nil nil) ) ;_ Fin de setq (if (= PktListe nil) (setq PktListe (list NyLinje nil)) (setq PktListe (cons NyLinje pktListe)) ) ;_ Fin de if (setq v0 el v1 el ) ;_ Fin de setq (setq elem (Entnext Elem)) (if (/= elem nil) (progn (setq el (Entget elem)) (setq TPteller (+ TPteller 1)) ) ;_ Fin de progn ) ;_ Fin de if ) ;progn ) ;if ) ;while (setq nylinje (car pktliste)) (setq pktliste (cdr pktliste)) (setq oldlinje (car pktliste)) (setq v0 (list (cadr oldlinje) (caddr oldlinje))) (setq v1 (list (cadr nylinje) (caddr nylinje))) (Rtd (Angle v0 v1)) (setq oldlinje (Cdr nylinje)) (setq nylinje (List "LAY DOWN" (Car oldlinje) (cadr oldlinje) (Caddr oldlinje) (Rtd (Angle v0 v1)) nil ) ;_ Fin de List ) ;_ Fin de setq (setq pktliste (Cons nylinje pktliste)) (setq pktliste (reverse pktliste)) (lagTabel) ) ;progn (closeDown) ) ;_ Fin de DEFUN (Defun LagFrame () ;Draws up the main frame of tabel (setq pk2 (polar stpkt 0.0 170)) (setq pk3 (polar pk2 (/ pi 2) (* (+ (* ant 5) 14) -1))) (setq pk4 (polar pk3 pi 170)) (Command "_PLINE" stpkt pk2 pk3 pk4 "C") (setq elliste (ssadd (entlast))) (Setq pk2 (List (+ (car stpkt) 85) (- (Cadr stpkt) 5.5))) (Command "_TEXT" "C" pk2 4.0 (RTD orient) streng) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (car stpkt) (- (Cadr stpkt) 7))) (setq pk3 (List (+ (Car stpkt) 170) (- (Cadr stpkt) 7))) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (car stpkt) (- (Cadr stpkt) 14))) (setq pk3 (List (+ (Car stpkt) 170) (- (Cadr stpkt) 14))) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (Setq y1 (- (Cadr stpkt) 12.5)) (Setq pk2 (List (+ (Car stpkt) 11) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "POINT") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 28) y1)) ;Added line below user name for KP or CPL column (Command "_TEXT" "C" pk2 "3.0" "0" kpoucpl) (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 49) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "EASTING") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 81) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "NORTHING") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 109) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "LENGTH") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 132.5) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "BEARING") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 157.5) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "RADIUS") (setq elliste (ssadd (entlast) elliste)) (setq y1 (- (Cadr stpkt) 7)) (setq y2 (- (Cadr stpkt) (+ 14 (* ant 5)))) (setq pk2 (List (+ (Car stpkt) 22) y1)) (setq pk3 (List (+ (Car stpkt) 22) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 34) y1)) (setq pk3 (List (+ (Car stpkt) 34) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 64) y1)) (setq pk3 (List (+ (Car stpkt) 64) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 98) y1)) (setq pk3 (List (+ (Car stpkt) 98) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 120) y1)) (setq pk3 (List (+ (Car stpkt) 120) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 145) y1)) (setq pk3 (List (+ (Car stpkt) 145) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de Defun ; Converts a string (6123456.123 to 6 123 456.123) (Defun KoordStr (nyord / tull delord1 delord2 delord3) (setq tull 1) (setq delord1 "") (if (/= (vl-string-search nyord ".") nil) (while (/= (Substr nyord tull 1) ".") (setq delord1 (Strcat delord1 (Substr nyord tull 1))) (setq tull (+ tull 1)) ) ;_ Fin de while ) ;_ Fin de if (setq nyord (Substr nyord tull)) (setq tull (- tull 1)) (while (> tull 3) (progn (setq delord2 (Substr delord1 (- tull 2) tull)) (setq delord1 (Substr delord1 1 (- tull 3))) (setq delord3 (strcat " " delord2 nyord)) (setq nyord delord3) (setq tull (- tull 3)) ) ;_ Fin de progn ) ;_ Fin de while (setq delord3 (StrCat delord1 nyord)) (setq nyord delord3) ) ;_ Fin de Defun (Defun LagTabel () (setq enLinje (car pktliste)) (if (= enLinje nil) (progn (setq Pktliste (Cdr pktliste)) (setq enLinje (Car pktliste)) (setq Pktliste (Cdr pktliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq ant (+ (Length pktliste) 1)) (setq elListe nil) (initget 1) (setq stpkt (Getpoint "\nCoin supérieur gauche de la table : ")) (setq orient 0.0) (setq scala 1) (initget 1) (Setq streng (GetString "\nNom de la table : ")) (LagFrame) (setq teller 1) (setq Tdist 0.000) (setq off1 0.000) (setq off2 0.000) (setq TPscale 1) (Print (Strcat "La valeur est " (RTOS (caddr enLinje) 2 3))) (Setq Tpscale (Getreal "\nFacteur d'echelle des valeurs <1.0>: ") ) ;_ Fin de Setq (if (/= (numberp Tpscale) T) (setq Tpscale 1.0) ) ;_ Fin de if (Print (Strcat "La valeur en EST est " (RTOS (* TPscale (cadr enLinje)) 2 2) ) ;_ Fin de Strcat ) ;_ Fin de Print (initget (+ 1 8)) (Setq off1 (Getreal "\nDécalage sur l'axe des X <0.0>: ")) (if (= off1 nil) (setq off1 0.0) ) ;_ Fin de if (Print (Strcat "La valeur en NORD est " (RTOS (* TPscale (caddr enLinje)) 2 2) ) ;_ Fin de Strcat ) ;_ Fin de Print (initget (+ 1 8)) (Setq off2 (Getreal "\nDécalage sur l'axe Y <0.0>: ")) (if (= off2 nil) (setq off2 0.0) ) ;_ Fin de if ;Fill in tabel (While (<= teller ant) (setq y1 (- (cadr stpkt) (+ (* teller 5) 14))) (setq pk2 (list (Car stpkt) y1)) (setq pk3 (List (+ (Car stpkt) 170) y1)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq y1 (- (cadr stpkt) (+ (* teller 5) 12.5))) (setq pk2 (list (+ (Car stpkt) 11) y1)) (setq tpnr (Car enLinje)) (setq enlinje (Cdr enlinje)) (setq Epkt (+ (* TPscale (Car Enlinje)) off1)) (setq enlinje (Cdr enlinje)) (setq Npkt (+ (* TPscale (Car Enlinje)) off2)) (setq enlinje (Cdr enlinje)) (setq Dpkt (Car Enlinje)) (setq enlinje (Cdr enlinje)) (setq Bpkt (Car Enlinje)) (setq enlinje (Cdr enlinje)) (setq Rpkt (Car Enlinje)) (setq enlinje (Cdr enlinje)) (setq enLinje (car pktliste)) (Setq Pktliste (cdr Pktliste)) (Command "_TEXT" "C" pk2 "2.5" 0.0 Tpnr) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (list (+ (Car stpkt) 28) y1)) (if (/= Dpkt nil) (progn (setq Tdist (+ Tdist (* TPscale Dpkt))) (setq Streng (RTOS (/ TDist 1000) 2 3)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq pk2 (list (+ (Car stpkt) 49) y1)) (setq Streng (RTOS Epkt 2 2)) (setq streng (KoordStr streng)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (list (+ (Car stpkt) 81) y1)) (setq Streng (RTOS Npkt 2 2)) (setq Streng (KoordStr streng)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (list (+ (Car stpkt) 109) y1)) (If (/= Dpkt nil) (progn (setq Dpkt (* Tpscale Dpkt)) (setq Streng (RTOS Dpkt 2 2)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de If (setq pk2 (list (+ (Car stpkt) 132.5) y1)) (if (/= Bpkt nil) (progn (setq Bpkt (- 90.000 Bpkt)) (if (< Bpkt 0) (setq Bpkt (+ 360 Bpkt)) ) ;_ Fin de if (setq Streng (strcat (RTOS Bpkt 2 2) "%%D")) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq pk2 (list (+ (Car stpkt) 157.5) y1)) (if (/= Rpkt nil) (progn (setq Rpkt (* TPscale Rpkt)) (setq Streng (StrCat (rtos Rpkt 2 0) "m")) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq teller (+ teller 1)) ) ;while (setq scala (GetReal "\nEchelle <1.0>: ")) (if (= scala nil) (setq scala 1.0) ) ;_ Fin de if (Command "_SCALE" elliste "" stpkt scala) (setq orient (Getangle stpkt "\nAngle de rotation <0.0>: ")) (if (= orient nil) (setq orient 0.0) ) ;_ Fin de if (Command "_ROTATE" elliste "" stpkt (rtD orient)) ) ;_ Fin de Defun ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -
Merci une fois de plus pour ton aide. J'ai testé ton programme, et il fonctionne très bien. Effectivement, avec la céation de points aux sommets, on se permet l'utilisation des champs. Cela répond à une question que je me posais: peut-on aller "taper" dans les segments d'une polyligne avec les champs. La réponse est non, à mon grand regret... Je changerai donc mon fusil d'épaule en restant sur ma toute première idée: corriger les 2 limitations de mon lisp initial... Ce ne sera pas chose aisée, étant donné que j'utilise des lisps quotidiennement, mais les nouvelles choses à faire et donc raisons de développer de nouvelles choses, sont rares et me laissent à un niveau bien modeste... Tout ça pour crier à l'aide ! Toute aide sera la bienvenue... MErci encore bonuscad !
-
Merci beaucoup Bonucad. Il y a deux choses qui m'embêtent (que je suis pinailleur...). C'est que la routine que j'ai posté avant, est utilisée par plusieurs dessinateurs, et hormis ses 2 limitations, permettait d'avoir un tableau (même si pas un "vrai" tableau), toujours formatté à l'identique, permettant ainsi des présentations homogènes... De plus, la polyligne évoluant souvent, ce genre d'aller-retour AutoCAD Excel n'est pas merveilleux dans mon utilisation quotidienne... Enfin, ce que je prévoyais de faire (avec un peu de temps) était de faire en sorte que cette routine utilise un tableau AutoCAD tels qu'ils sont sur les versions récentes, avec des fields afin de le rendre interactif (dans la mesure où les segments restent au même nombre...). Donc, tout ça pour dire que si au moins on pouvait me confirmer que le test de condition d'un segment droit ou pas du code 42 est incriminé dans ces deux "bugs", cela m'aiderait beaucoup... Merci pour votre aide.
-
Bonjour, j'ai un problème qui me bloque ! C'est le récent constat de deux bugs: j'utilise un lisp qui génère un tableau sur Autocad, d'après les points constituants une polyligne sélectionnée. Le hic: - impossible d'avoir un segment arc en début de polyligne - imopssible d'avoir une succession de 2 segments arc: le second est considéré comme segment ligne... Je suis bloqué, j'ai pensé à la courbure code 42, mais j'arrive pas bien à trouver où ça coince... Si quelqu'un peu m'aider... MErci d'avance ! Le code lisp que l'utilise( désolé c un peu long...): ; It makes a table with Route details from a picked POLYLINE (ROUTE). ; The polyline should by the original one, the one before converted ; by QUICKSURF. The program calculates centerpoints, radius, ; tangent points,intersection points, bearings and the length along ; the polyline. ; The program ask you to pick a polyline. After calculation the program ; ask for the insertion point for the table, an scalefactor for the ; coordinates,an offset value for the coordinates.After the tabel is ; drawn you vil be asked for a scale factor and rotations angel for ; the hole tabel. ; To load the program write at "command:" (load "rutetbl"), ; and start the program with command "TABEL". ; The program consider that the coordinate system has 0 degr. at ; 90 degr. in the WCS of AutoCAD, and the angeles are clockwise. ; ; God Luck !! (Defun RTD (Vin) (* 180.0 (/ vin pi))) ; Radian to Degees (Defun DTR (vin) (* pi (/ vin 180.0))) ; Degees to Radian (Defun Closedown ();restaure l'etat (setvar "OSMODE" oldosmode) (setvar "plinetype" oldplinetype) (setvar "PLINEWID" oldpwid) (setvar "DIMZIN" olddimzin) (setvar "cmdecho" ocmd) (setvar "ANGBASE" angb) (setvar "ANGDIR" angd) (setvar "HIGHLIGHT" high) (setq *error* olderror) (princ) ) ;_ Fin de Defun (defun Myerror (s) (if (/= s "Fonction annulée!") (princ (strcat "\nErreur: " s)) ) ;_ Fin de if (closedown) ) ;_ Fin de defun ;function d'initialisation de variable et test sur calque (Defun Starttbl () (setq olderror *error*) (setq *error* myerror) (setq oldosmode (getvar "OSMODE")) (setq oldplinetype (getvar "PLINETYPE")) (setq oldpwid (getvar "PLINEWID")) (setq olddimzin (getvar "DIMZIN")) (setq angB (Getvar "Angbase")) (setq AngD (Getvar "AngDir")) (setq high (Getvar "Highlight")) (setq ocmd (GetVar "CMDECHO")) (if (= (tblsearch "LAYER" "TEXTE") nil) (COMMAND "_LAYER" "New" "TEXTE" "ON" "TEXTE" "");si existe pas on crée "Nouv" et le rends actif "AC" (pour "ACtif") (Command "_LAYER" "ON" "TEXTE" "");si existe on le rend actif ) ;_ Fin de if ;init de quelques variables (setvar "OSMODE" 0) (setvar "plinetype" 0) (setvar "PLINEWID" 0) (setvar "DIMZIN" 0) (SetVar "ANGBASE" 0) (SetVar "ANGDIR" 0) (SetVAR "HIGHLIGHT" 0) ) ;_ Fin de Defun (Defun ArcSeg () ; distance & Angle between two vertices (setq dvv (distance (cdr (assoc 10 v1)) (cdr (assoc 10 el)))) (setq avv (angle (cdr (assoc 10 v1)) (cdr (assoc 10 el)))) ; Included angle as calculated by bulge factor (setq ang (* (atan (cdr (assoc 42 v1))) 4)) ; Calculate angle opposite included angle. (if (< (abs ang) pi) (setq ang2 (/ (- pi (abs ang)) 2)) ;<180 (setq ang2 (/ (- pi (- (* 2 pi) (abs ang))) 2)) ;>180 ) ;_ Fin de if ; Calculate radius of arc (setq r (/ (* (sin ang2) dvv) (abs (sin ang)))) ; Angle From V1 to Centre (if (> ang 0) ; Condition for ccw arc (if (< ang pi) (setq aca (+ avv ang2)) ;arc < 180 (setq aca (- avv ang2)) ;arc > 180 ) ;_ Fin de if ; Condition for cw arc (if (< (abs ang) pi) (setq aca (- avv ang2)) ;arc < 180 (setq aca (+ avv ang2)) ;arc < 180 ) ;_ Fin de if ) ;_ Fin de if ; Calculate centre of arc (setq vcen (polar (cdr (assoc 10 v1)) aca r)) ) ;_ Fin de Defun ;************************************************************************************************************************* ;fonction principale (DEFUN C:table_tracks () (starttbl);appel de la function starttlb (setq PKtListe nil) (setq TPteller 0 IPTeller 1 ) ;_ Fin de setq (alert "ENTREZ L'INTITULE DE LA COLONNE DE LA DISTANCE RELATIVE : 'K.P.' (Kilometric Point) ou 'C.P.L.' (Cumulative Projected Length) : ") (setq kpoucpl (getstring "ENTREZ L'INTITULE DE LA COLONNE DE LA DISTANCE RELATIVE : 'K.P.' (Kilometric Point) ou 'C.P.L.' (Cumulative Projected Length) : ")) (Setq elem (car (EntSel "\nSelectionner une polyligne : "))) (command "CONVERTpoly" "H" elem "" "_redraw") (while (not (AND (/= elem nil) (OR (= (cdr (Assoc 0 (entget elem))) "POLYLINE") ;(= (cdr (Assoc 0 (entget elem))) "LWPOLYLINE") ) ;_ Fin de OR ) ;_ Fin de OR ) ;_ Fin de not (Setq elem (car (EntSel "\nSelectionner une polyligne : "))) ) ;_ Fin de while (progn (setq el (entget elem)) (setq elem (entnext elem)) (setq el (entget elem)) (setq v0 el v1 el ) ;_ Fin de setq (while (not (AND (/= elem nil)(= (cdr (Assoc 0 (entget elem))) "SEQEND") ;;; (OR (= (cdr (Assoc 0 (entget elem))) "POLYLINE") ;;; (= (cdr (Assoc 0 (entget elem))) "LWPOLYLINE") ;;; ) ;_ Fin de OR ) ;_ Fin de OR ) ;_ Fin de not (If (/= (cdr (Assoc 42 el)) 0.0) ; teste si on est sur un arc ou une ligne clé 42 rayon de courbure du segment 0 -> segment droit (progn;segment courbe (Setq v1 el) (setq elem (Entnext Elem)) (setq el (Entget elem)) (ArcSeg) (setq pkten (cdr (assoc 10 v1))) (if (= TPteller 0) (setq TPnr "START UP") (setq TPnr (Strcat "TP" (itoa TPteller))) ) ;_ Fin de if (if (/= (Distance (cdr (Assoc 10 v1)) (cdr (assoc 10 el)) ) ;_ Fin de Distance 0.0 ) ;_ Fin de /= (setq Dpkt (Distance (cdr (Assoc 10 v0)) (cdr (assoc 10 v1)) ) ;_ Fin de Distance ) ;_ Fin de setq (if (= TPteller 0) (setq Dpkt 0.000) (setq Dpkt nil) ) ;_ Fin de if ) ;_ Fin de if (setq NyLinje (List TPnr (Car pkten) (cadr pkten) Dpkt nil nil) ) ;_ Fin de setq (if (= PktListe nil) (setq PktListe (list NyLinje nil)) (setq PktListe (cons NyLinje pktListe)) ) ;_ Fin de if (setq el2 (polar (cdr (assoc 10 v1)) avv (/ dvv 2))) (setq IP (inters (cdr (assoc 10 v0)) (cdr (assoc 10 v1)) vcen el2 nil ) ;_ Fin de inters ) ;_ Fin de setq (setq Tpnr (Strcat "IP" (ITOA IPteller))) (setq NyLinje (List TPnr (Car IP) ; IP + angel (Cadr IP) nil (Rtd (angle (cdr (assoc 10 v0)) (cdr (assoc 10 v1)) ) ;_ Fin de angle ) ;_ Fin de Rtd nil ) ;_ Fin de List ) ;_ Fin de setq (setq PktListe (cons NyLinje pktListe)) (setq Tpnr (Strcat "CP" (ITOA IPteller))) (setq NyLinje (List Tpnr (Car vcen) ;CP+R (Cadr vcen) nil nil r ) ;_ Fin de List ) ;_ Fin de setq (setq PktListe (cons NyLinje pktListe)) (setq pkten (cdr (assoc 10 el))) (setq TPteller (+ TPteller 1)) (setq TPnr (StrCat "TP" (itoa TPteller))) (setq NyLinje (List TPnr (Car pkten) ;TPb (Cadr pkten) (* (ABS Ang) r) nil nil ) ;_ Fin de List ) ;_ Fin de setq (setq PktListe (cons NyLinje pktListe)) (setq v0 el v1 el ) ;_ Fin de setq (setq elem (Entnext Elem)) (if (/= elem nil) (progn (setq el (Entget elem)) (setq TPteller (+ TPteller 1)) (setq IPteller (+ IPteller 1)) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de progn (progn;segment droit (setq pkten (cdr (assoc 10 el))) (if (= TPteller 0) (setq TPnr "START UP") (setq TPnr (Strcat "TP" (itoa TPteller))) ) ;_ Fin de if (if (/= (Distance (cdr (Assoc 10 v1)) (cdr (assoc 10 el)) ) ;_ Fin de Distance 0.0 ) ;_ Fin de /= (setq Dpkt (Distance (cdr (Assoc 10 v1)) (cdr (assoc 10 el)) ) ;_ Fin de Distance ) ;_ Fin de setq (if (= TPteller 0) (setq Dpkt 0.000) (setq Dpkt nil) ) ;_ Fin de if ) ;_ Fin de if (setq NyLinje (List Tpnr (Car pkten) (cadr pkten) Dpkt nil nil) ) ;_ Fin de setq (if (= PktListe nil) (setq PktListe (list NyLinje nil)) (setq PktListe (cons NyLinje pktListe)) ) ;_ Fin de if (setq v0 el v1 el ) ;_ Fin de setq (setq elem (Entnext Elem)) (if (/= elem nil) (progn (setq el (Entget elem)) (setq TPteller (+ TPteller 1)) ) ;_ Fin de progn ) ;_ Fin de if ) ;progn ) ;if ) ;while (setq nylinje (car pktliste)) (setq pktliste (cdr pktliste)) (setq oldlinje (car pktliste)) (setq v0 (list (cadr oldlinje) (caddr oldlinje))) (setq v1 (list (cadr nylinje) (caddr nylinje))) (Rtd (Angle v0 v1)) (setq oldlinje (Cdr nylinje)) (setq nylinje (List "LAY DOWN" (Car oldlinje) (cadr oldlinje) (Caddr oldlinje) (Rtd (Angle v0 v1)) nil ) ;_ Fin de List ) ;_ Fin de setq (setq pktliste (Cons nylinje pktliste)) (setq pktliste (reverse pktliste)) (lagTabel) ) ;progn (closeDown) ) ;_ Fin de DEFUN (Defun LagFrame () ;Draws up the main frame of tabel (setq pk2 (polar stpkt 0.0 170)) (setq pk3 (polar pk2 (/ pi 2) (* (+ (* ant 5) 14) -1))) (setq pk4 (polar pk3 pi 170)) (Command "_PLINE" stpkt pk2 pk3 pk4 "C") (setq elliste (ssadd (entlast))) (Setq pk2 (List (+ (car stpkt) 85) (- (Cadr stpkt) 5.5))) (Command "_TEXT" "C" pk2 4.0 (RTD orient) streng) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (car stpkt) (- (Cadr stpkt) 7))) (setq pk3 (List (+ (Car stpkt) 170) (- (Cadr stpkt) 7))) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (car stpkt) (- (Cadr stpkt) 14))) (setq pk3 (List (+ (Car stpkt) 170) (- (Cadr stpkt) 14))) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (Setq y1 (- (Cadr stpkt) 12.5)) (Setq pk2 (List (+ (Car stpkt) 11) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "POINT") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 28) y1)) ;Added line below user name for KP or CPL column (Command "_TEXT" "C" pk2 "3.0" "0" kpoucpl) (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 49) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "EASTING") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 81) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "NORTHING") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 109) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "LENGTH") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 132.5) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "BEARING") (setq elliste (ssadd (entlast) elliste)) (Setq pk2 (List (+ (Car stpkt) 157.5) y1)) (Command "_TEXT" "C" pk2 "3.0" "0" "RADIUS") (setq elliste (ssadd (entlast) elliste)) (setq y1 (- (Cadr stpkt) 7)) (setq y2 (- (Cadr stpkt) (+ 14 (* ant 5)))) (setq pk2 (List (+ (Car stpkt) 22) y1)) (setq pk3 (List (+ (Car stpkt) 22) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 34) y1)) (setq pk3 (List (+ (Car stpkt) 34) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 64) y1)) (setq pk3 (List (+ (Car stpkt) 64) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 98) y1)) (setq pk3 (List (+ (Car stpkt) 98) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 120) y1)) (setq pk3 (List (+ (Car stpkt) 120) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq pk2 (List (+ (Car stpkt) 145) y1)) (setq pk3 (List (+ (Car stpkt) 145) y2)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de Defun ; Converts a string (6123456.123 to 6 123 456.123) (Defun KoordStr (nyord / tull delord1 delord2 delord3) (setq tull 1) (setq delord1 "") (if (/= (vl-string-search nyord ".") nil) (while (/= (Substr nyord tull 1) ".") (setq delord1 (Strcat delord1 (Substr nyord tull 1))) (setq tull (+ tull 1)) ) ;_ Fin de while ) ;_ Fin de if (setq nyord (Substr nyord tull)) (setq tull (- tull 1)) (while (> tull 3) (progn (setq delord2 (Substr delord1 (- tull 2) tull)) (setq delord1 (Substr delord1 1 (- tull 3))) (setq delord3 (strcat " " delord2 nyord)) (setq nyord delord3) (setq tull (- tull 3)) ) ;_ Fin de progn ) ;_ Fin de while (setq delord3 (StrCat delord1 nyord)) (setq nyord delord3) ) ;_ Fin de Defun (Defun LagTabel () (setq enLinje (car pktliste)) (if (= enLinje nil) (progn (setq Pktliste (Cdr pktliste)) (setq enLinje (Car pktliste)) (setq Pktliste (Cdr pktliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq ant (+ (Length pktliste) 1)) (setq elListe nil) (initget 1) (setq stpkt (Getpoint "\nCoin supérieur gauche de la table : ")) (setq orient 0.0) (setq scala 1) (initget 1) (Setq streng (GetString "\nNom de la table : ")) (LagFrame) (setq teller 1) (setq Tdist 0.000) (setq off1 0.000) (setq off2 0.000) (setq TPscale 1) (Print (Strcat "La valeur est " (RTOS (caddr enLinje) 2 3))) (Setq Tpscale (Getreal "\nFacteur d'echelle des valeurs <1.0>: ") ) ;_ Fin de Setq (if (/= (numberp Tpscale) T) (setq Tpscale 1.0) ) ;_ Fin de if (Print (Strcat "La valeur en EST est " (RTOS (* TPscale (cadr enLinje)) 2 2) ) ;_ Fin de Strcat ) ;_ Fin de Print (initget (+ 1 8)) (Setq off1 (Getreal "\nDécalage sur l'axe des X <0.0>: ")) (if (= off1 nil) (setq off1 0.0) ) ;_ Fin de if (Print (Strcat "La valeur en NORD est " (RTOS (* TPscale (caddr enLinje)) 2 2) ) ;_ Fin de Strcat ) ;_ Fin de Print (initget (+ 1 8)) (Setq off2 (Getreal "\nDécalage sur l'axe Y <0.0>: ")) (if (= off2 nil) (setq off2 0.0) ) ;_ Fin de if ;Fill in tabel (While (<= teller ant) (setq y1 (- (cadr stpkt) (+ (* teller 5) 14))) (setq pk2 (list (Car stpkt) y1)) (setq pk3 (List (+ (Car stpkt) 170) y1)) (Command "_LINE" pk2 pk3 "") (setq elliste (ssadd (entlast) elliste)) (setq y1 (- (cadr stpkt) (+ (* teller 5) 12.5))) (setq pk2 (list (+ (Car stpkt) 11) y1)) (setq tpnr (Car enLinje)) (setq enlinje (Cdr enlinje)) (setq Epkt (+ (* TPscale (Car Enlinje)) off1)) (setq enlinje (Cdr enlinje)) (setq Npkt (+ (* TPscale (Car Enlinje)) off2)) (setq enlinje (Cdr enlinje)) (setq Dpkt (Car Enlinje)) (setq enlinje (Cdr enlinje)) (setq Bpkt (Car Enlinje)) (setq enlinje (Cdr enlinje)) (setq Rpkt (Car Enlinje)) (setq enlinje (Cdr enlinje)) (setq enLinje (car pktliste)) (Setq Pktliste (cdr Pktliste)) (Command "_TEXT" "C" pk2 "2.5" 0.0 Tpnr) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (list (+ (Car stpkt) 28) y1)) (if (/= Dpkt nil) (progn (setq Tdist (+ Tdist (* TPscale Dpkt))) (setq Streng (RTOS (/ TDist 1000) 2 3)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq pk2 (list (+ (Car stpkt) 49) y1)) (setq Streng (RTOS Epkt 2 2)) (setq streng (KoordStr streng)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (list (+ (Car stpkt) 81) y1)) (setq Streng (RTOS Npkt 2 2)) (setq Streng (KoordStr streng)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) (setq pk2 (list (+ (Car stpkt) 109) y1)) (If (/= Dpkt nil) (progn (setq Dpkt (* Tpscale Dpkt)) (setq Streng (RTOS Dpkt 2 2)) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de If (setq pk2 (list (+ (Car stpkt) 132.5) y1)) (if (/= Bpkt nil) (progn (setq Bpkt (- 90.000 Bpkt)) (if (< Bpkt 0) (setq Bpkt (+ 360 Bpkt)) ) ;_ Fin de if (setq Streng (strcat (RTOS Bpkt 2 2) "%%D")) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq pk2 (list (+ (Car stpkt) 157.5) y1)) (if (/= Rpkt nil) (progn (setq Rpkt (* TPscale Rpkt)) (setq Streng (StrCat (rtos Rpkt 2 0) "m")) (Command "_TEXT" "C" pk2 "2.5" 0.0 streng) (setq elliste (ssadd (entlast) elliste)) ) ;_ Fin de progn ) ;_ Fin de if (setq teller (+ teller 1)) ) ;while (setq scala (GetReal "\nEchelle <1.0>: ")) (if (= scala nil) (setq scala 1.0) ) ;_ Fin de if (Command "_SCALE" elliste "" stpkt scala) (setq orient (Getangle stpkt "\nAngle de rotation <0.0>: ")) (if (= orient nil) (setq orient 0.0) ) ;_ Fin de if (Command "_ROTATE" elliste "" stpkt (rtD orient)) ) ;_ Fin de Defun ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
