-
Compteur de contenus
406 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par chris_mtp
-
Merci pour ta réponse Tupolev ou mahr.francois mais je ne vois pas comment faire cela d'une seule manip sans lisp bien codé. Surtout si le rectangle ou le contour comprend un nombre de polylignes conséquent. Je ne vais pas non plus taillader ton esprit vocabulaire à priori hors norme mais ta réponse serait mieux adapté si il y aurait au moins le code du Crabe joint à ta réponse. Je pourrais essayer de l'adapter à mes besoins. IL faudrait à mon avis seulement intégrer la commande couper au bout de code ci dessus en déterminant le point crée comme point de coupure. J'essaierai d'abord un getsel pour le jeu de polylignes à couper, puis un entget pour le rectangle Inutile le code le fait déjà. Par contre, pour l'incrémentation des polylignes d'accord. John.
-
A mon avis mahr.francois tu ne dois pas très bien comprendre ma demande ou te ne sais pas lire. J'ai bien dit .De plus, si dans le titre de ce post, il y a le mot COUPER ce n'est pas pour rien J'ai essayé de récupérer un bout de lisp de bonuscad d'un autre post pour insérer un point à chaque intersection du rectangle et des polylignes mais après pour intégrer la commande COUPER je bloque Voici le lisp origine. (defun c:rec_inters3d ( / ent dxf_ent ldxf_10 js n ename l_pt3D l_pt2D l_int2D) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0)) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (princ "\nChoisir la polyligne contour") (while (null (setq ent (entsel)))) (setq dxf_ent (entget (car ent))) (cond ((eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE") (setq ldxf_10 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_ent))) (setq js (ssget "_F" ldxf_10 '((0 . "POLYLINE") (-4 . "&") (70 . 8)))) (cond (js (setq n -1) (vl-load-com) (repeat (sslength js) (setq ename (vlax-ename->vla-object (ssname js (setq n (1+ n)))) l_pt3D nil l_pt3D (append (l-coor2l-pt (vlax-get ename 'Coordinates) T) l_pt3D) l_pt2D (mapcar 'list (mapcar 'car l_pt3D) (mapcar 'cadr l_pt3D)) ) (foreach n (mapcar 'list ldxf_10 (cdr ldxf_10)) (setq l_int2D (vl-remove nil (mapcar '(lambda (p3 p4) (setq pt_int (inters (car n) (cadr n) p3 p4 T)) ) l_pt2D (append (cdr l_pt2d) (list (last l_pt2d))) ) ) ) (if (not (null l_int2d)) (progn (setq l_int3D (vl-remove nil (mapcar '(lambda (p3 p4) (setq pt_int (inters (list (caar l_int2d) (cadar l_int2d) 0.0) (list (caar l_int2d) (cadar l_int2d) 100.0) p3 p4 nil ) ) ) l_pt3d (append (cdr l_pt3d) (list (last l_pt3d))) ) ) ) (command "_.point" "_none" (car l_int3d)) ) ) ) ) ) ) ) ) (prin1) ) En fait mon probleme est principalement de choisir la polyligne qui coupe le rectangle. Attention ce bout de code n'est valable que pour les polylignes 3D. Merci par avance de votre aide. John.
-
Rebonjour, Je ne sais pas comment couper les polylignes 2D et 3D qui sont à l'intérieur de mon rectangle au point d'intersection de celui ci sans effacer les polylignes qui sont en dehors de celui-ci. Quand je parle de rectangle, c'est en fait une polyligne 2D fermée. Merci par avance de votre aide sur ce sujet. John.
-
C'est bon. Avec beaucoup de recherches car je ne suis pas un pro du lisp, j'ai réussi à faire ce que je voulais si cela peut en aider certains d'entre vous. (setq blo nil) (setq d 0) (repeat (length layers) (setq nom_plan (nth d layers)) (if (ssget "X" (list (cons 0 "INSERT") (cons 8 nom_plan))) (while (setq blo (tblnext "BLOCK" (not blo))) (setq nom_bloc (cdr (assoc 2 blo))) (if (/= nom_bloc nom_plan) (if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 nom_bloc) (cons 8 nom_plan)))) (write-line (strcat "\Il y a " (rtos (sslength ss) 2 0) " blocs " nom_bloc " contenu(s) dans le calque " nom_plan ) file) ) )) ) (setq d (+ d 1)) ) John
-
Bonjour, Je n'ai pas trouvé le moyen de comparer le nom d'un bloc avec le nom du calque auquel il appartient. J'ai essayé de faire la liste des noms de blocs contenues dans ce dessin puis de la faire comparer au nom de calque. Car dans ma nomenclature, un bloc qui s'appelle BLOCK1 doit se trouver dans le calque nommé BLOCK1 et non dans un autre. Merci par avance de votre aide. John.
-
Décolé d'avoir posé certaines questions dans ce post mais dans mon cas, les deux sont liés. J'ai compris maintenant pour les filtres de sélection. Un peu complexe mais c'est bon. Merci pour ton aide. Je vais m'en sortir je pense. John.
-
Merci Gile pour ta réponse. Je travaille avec l'aide de Visual Lisp mais des fois je ne comprend pas très bien du fait de manque de connaissances. Un autre truc que je ne comprend pas. Je veux sélectionner suivant le nom d'un calque les polylignes 3D fermées ou non appartenant à ce calque. J'ai donc fait (setq ss1 (ssget "X" (list (cons 0 "POLYLINE") (cons 70 1) (cons 8 lay)))) mais ceci ne marche pas. J'ai donc essayé par une autre méthode (setq ss1 (ssget "X" (list((0 . "POLYLINE") (-4 . "&") (70 . 1) (-4 . ""))))) alors que ce code sans le 70 (qui indique la fermeture ou non d'une polyligne) marche bien (setq ss1 (ssget "X" (list (cons 0 "POLYLINE") (cons 8 lay)))) Pourquoi ? De même, j'essaye de comparer le noms des blocs contenu dans un calque avec le nom de ce même calque qui doivent dans ma nomenclature identique. Ainsi, un bloc BLOCK1 doit être dans le calque nommé "BLOCK1" Si il y en a un autre c pas bon, du coup j'ai essayé de suivre tes conseils avec (setq bloc nil) (setq d 0) (repeat (length layers) (setq nom_plan (nth d layers)) (if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 8 nom_plan)))) (while (setq bloc (tblnext "BLOCK" (not bloc))) (setq nom_bloc (cdr (assoc 2 bloc))) (if (not (= nom_bloc nom_plan)) (princ (strcat "\nLe bloc " nom_bloc " est contenu dans le calque " nom_plan ) ) ) ) ) (setq d (+ d 1)) ) Mais je n'arrive pas à faire la liste des blocs contenu dans un seul calque vu que je fais un repeat. Pour ce qui concerne la partie précedente en première partie du post, j'ai utilisé la fonction member qui est très pratique et simple.. Ca fonctionne nickel. Merci par avance de ton aide. John.
-
Bonjou à tous, j'ai une liste calques que j'ai moi-même défini par (setq liste1 (list "calque1" "calque2" ...) puis une autre de liste des calques liste2 du dessin que je veux analyser. J'ai fait ca (setq d 0) (repeat (length liste2) (setq nom_plan (nth d liste2)) [surligneur] (if (tblsearch liste1 nom_plan)[/surligneur] (prompt (strcat "Le calque " nom_plan " est compris dans la liste")) (setq d (+ d 1)) ) Je voudrais mettre une condition que si un des calques de la liste2 est le même que celui d'un des calques de la liste1 alors j'affiche dans la barre de commande autocad un texte avec un prompt. J'ai un problème avec le if et le tblsearch qui à mon avis n'est pas approprié, je ne sais pas comment faire pour rechercher si le nom d'un calque de la liste2 est compris dans la liste1. Merci par avance de votre aide. John.
-
Supprimer sommet superposés par calque
chris_mtp a répondu à un(e) sujet de chris_mtp dans Routines LISP
C'est vrai que vu comme ca, c'est plus facile de traiter les entités. J'avais essayer d'utiliser le if après la sélection et chaque fois le lîsp ne voulait pas aller au bout. Maintenant j'ai compris. Merci Gile. John. -
Supprimer sommet superposés par calque
chris_mtp a répondu à un(e) sujet de chris_mtp dans Routines LISP
Merci Gile de ta réponse. Voila ce que j'ai pu faire (defun trunc (expr lst) (if (and lst (not (equal (car lst) expr)) ) (cons (car lst) (trunc expr (cdr lst))) ) ) (defun c:clean_poly (/ lay layers ss1 ent e_lst p_lst vtx1 vtx2) (while (setq lay (tblnext "LAYER" (not lay))) (setq layers (cons (cons (cdr (assoc 2 lay)) (cdr (assoc 62 lay))) layers))) (setq layers (vl-sort (mapcar 'car layers) '<)) (setq d 0) (repeat (length layers) (setq lay (nth d layers)) (setq ss1 (list (cons 8 lay) '(-4 . " '(0 . "LWPOLYLINE") '(-4 . " '(0 . "POLYLINE") '(-4 . "&") '(70 . 8) '(-4 . "AND>") '(-4 . "OR>") )) (while (not (setq ent (car (entsel "\nSélectionnez une polyligne: "))) ) ) (setq e_lst (entget ent)) (cond ((= "LWPOLYLINE" (cdr (assoc 0 e_lst))) (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 40) (= (car x) 41) (= (car x) 42) ) ) e_lst ) e_lst (vl-remove-if '(lambda (x) (member x p_lst) ) e_lst ) ) (if (= 1 (cdr (assoc 70 e_lst))) (while (equal (car p_lst) (assoc 10 (reverse p_lst))) (setq p_lst (reverse (cdr (member (assoc 10 (reverse p_lst)) (reverse p_lst) ) ) ) ) ) ) (while p_lst (setq e_lst (append e_lst (trunc (assoc 10 (cdr p_lst)) p_lst)) p_lst (member (assoc 10 (cdr p_lst)) (cdr p_lst)) ) ) (entmod e_lst) ) ((and (= "POLYLINE" (cdr (assoc 0 e_lst))) (zerop (logand 240 (cdr (assoc 70 e_lst)))) ) (setq e_lst (cons e_lst nil) vtx1 (entnext ent) vtx2 (entnext vtx1) ) (while (= (cdr (assoc 0 (entget vtx1))) "VERTEX") (if (= (cdr (assoc 0 (entget vtx2))) "SEQEND") (if (or (not (equal (assoc 10 (entget vtx1)) (assoc 10 (last (reverse (cdr (reverse e_lst))))) ) ) (zerop (logand 1 (cdr (assoc 70 (last e_lst))))) ) (setq e_lst (cons (entget vtx1) e_lst)) ) (if (not (equal (assoc 10 (entget vtx1)) (assoc 10 (entget vtx2)) 1e-9) ) (setq e_lst (cons (entget vtx1) e_lst)) ) ) (setq vtx1 vtx2 vtx2 (entnext vtx1) ) ) (setq e_lst (reverse (cons (entget vtx1) e_lst))) (entdel ent) (mapcar 'entmake e_lst) ) (T (princ "\nEntité non valide.")) ) (setq d (+ d 1)) ) (princ) ) Pourquoi j'ai voulu faire une première liste puis ensuite un jeu de sélection ? Le lisp Clean_poly ne permet de sélectionner une seule entité à la fois d'ou mon idée de d'abord faire la liste des calques, puis la liste des poly 2D et 3D par calque puis enfin de traiter chaque entité une par une. C'est le seul moyen que j'ai trouvé pour appliquer ce lisp à une sélection des entités par calques. Mais j'ai deux problèmes, 1-lorsque la sélection ss1 est nulle il faudrait que le repeat passe au calque suivant ? 2-Comment faire pour traiter les entités par calque une à une ? Voila mes deux principaux problèmes. Merci encore de ton aide. John. -
Supprimer sommet superposés par calque
chris_mtp a répondu à un(e) sujet de chris_mtp dans Routines LISP
C'est vrai que sans aucune réponse depuis le début de ce post, je vais bien comprendre et avancer. Merci. -
Bonjour à tous, J'ai plusieurs polylignes 2D ou 3D qui sont à l'intérieur d'un rectangle et d'autres dans un contour matérialisé par une poly2D fermé.. Est il possible de sélectionner toutes les lwpolylignes et polylignes à l'intérieur de ce rectangle puis de les couper (en utilisant l'option du premier point de la commande couper) aux intersections du rectangle ou du contour en question ? Merci par avance de votre aide. John.
-
Supprimer sommet superposés par calque
chris_mtp a répondu à un(e) sujet de chris_mtp dans Routines LISP
Avant d'utiliser la boite de dialogue de Gile, j'ai essayé de simplifier de lisp en intégrant les deux lignes de code suivantes en début de lisp (setq lay (getstring "\nEntrer le nom du calque à sélectionner : ")) (setq ss1 (ssget "X" (list (cons 0 "LWPOLYLINE,POLYLINE") (cons 8 lay)))) mais j'ai une question Est il possible de faire une liste de polyligne ou de Lwpolyligne ? Puis de faire traiter ces entités une par une avec un repeat. Merci par avance de votre aide. John. -
Copie et rotation mais en boucle
chris_mtp a répondu à un(e) sujet de brunopub333 dans Débuter en LISP
cA YEST. J'ai pu m'en sortir mais avec pas mal d'essais et de test. Merci encore à tous ceux qui ont participé à ce post. John. -
Copie et rotation mais en boucle
chris_mtp a répondu à un(e) sujet de brunopub333 dans Débuter en LISP
J'ai réussi à pondre çà pour avoir le point de base qui se place automatiquement à la suite des sommets de la polyligne mais il ya un pb. J'ai pu faire la liste des sommets. Au départ, je sélectionne tous les objets dont je veux apliquer la copie et rotation en boucle, ensuite je sélectionne la polyligne projet, celle pour faire la liste des sommets et incrémenter le point de base. La copie se passe bien mais la rotation non car elle ne concerne que la polyligne projet et non pas les objets sélectionnés au début. (defun c:crrotmult (/ i bdent pol ptlst cmd der js js2 pt) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (vl-cmdf "_.undo" "_group") (and (setq js (ssget)) (setq pol (car (entsel "\nCliquez la polyligne projet:"))) (setq bdent (entget pol)) (setq ptlst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) bdent))) (setq i 0) (repeat (length ptlst) (setq pt (nth i ptlst)) (setq der (entlast)) (vl-cmdf "_.copy" js "" pt pause) (setq js2 (ssadd)) (setq der (entnext der)) (ssadd der js2) (princ "\nAngle de Rotation : ") (vl-cmdf "_.rotate" js2 "" (getvar "lastpoint") "_r" "@" pause pause) (setq der (entlast)) (setq i (+ i 1)) ) ) (vl-cmdf "_.undo" "_end") (setvar "cmdecho" cmd) (princ) ) De plus, lorsque que la copie est faite, il faudrait que le point de base suiivant soit celui de la poly projet copié et non celui de la poly d'origine. Merci par avance de votre aide. John. [Edité le 31/1/2009 par chris_mtp] -
Supprimer sommet superposés par calque
chris_mtp a répondu à un(e) sujet de chris_mtp dans Routines LISP
J'ai modifié le lisp déposé avec ceux que j'ai pu faire mais j'ai le retour ; erreur: valeur de liste SSGET incorrecte Ya un truc qui cloche dans ma sélection par calques mais je ne sais pas comment sélectionner seulement les polylignes 2D et 3D par calques ? Merci par avance de votre aide. John. -
Bonjour à tous, J'essaye de faire un lisp qui supprimerai les sommets supperposés des polylignes 2D et 3D en proposant un traitement des polylignes par calques et non de l'ensemble des polylignes d'un dessin d'un coup car parfois cela peut réserver des surprises comme la suppression de sommets inattendues. Voici donc le lisp en question. En utilisant deux lips de Gile, dcl GetLayers et lisp Clean poly, 'encore merci à gile pour deux merveilles (defun trunc (expr lst) (if (and lst (not (equal (car lst) expr)) ) (cons (car lst) (trunc expr (cdr lst))) ) ) (defun c:clean_polylayer (/ ss1 lst1 ent e_lst p_lst vtx1 vtx2) (setq lst1 (getlayers "Calques à traiter séparément" nil nil)) (repeat (length lst1) (setq ss1 (ssget "X" (list (cons 8 lst1)))) (while (not (foreach ent lst1 (setq e_lst (entget ent)) (cond ((= "LWPOLYLINE" (cdr (assoc 0 e_lst))) (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 40) (= (car x) 41) (= (car x) 42) ) ) e_lst ) e_lst (vl-remove-if '(lambda (x) (member x p_lst) ) e_lst ) ) (if (= 1 (cdr (assoc 70 e_lst))) (while (equal (car p_lst) (assoc 10 (reverse p_lst))) (setq p_lst (reverse (cdr (member (assoc 10 (reverse p_lst)) (reverse p_lst) ) ) ) ) ) ) (while p_lst (setq e_lst (append e_lst (trunc (assoc 10 (cdr p_lst)) p_lst)) p_lst (member (assoc 10 (cdr p_lst)) (cdr p_lst)) ) ) (entmod e_lst) ) ((and (= "POLYLINE" (cdr (assoc 0 e_lst))) (zerop (logand 240 (cdr (assoc 70 e_lst)))) ) (setq e_lst (cons e_lst nil) vtx1 (entnext ent) vtx2 (entnext vtx1) ) (while (= (cdr (assoc 0 (entget vtx1))) "VERTEX") (if (= (cdr (assoc 0 (entget vtx2))) "SEQEND") (if (or (not (equal (assoc 10 (entget vtx1)) (assoc 10 (last (reverse (cdr (reverse e_lst))))) ) ) (zerop (logand 1 (cdr (assoc 70 (last e_lst))))) ) (setq e_lst (cons (entget vtx1) e_lst)) ) (if (not (equal (assoc 10 (entget vtx1)) (assoc 10 (entget vtx2)) 1e-9) ) (setq e_lst (cons (entget vtx1) e_lst)) ) ) (setq vtx1 vtx2 vtx2 (entnext vtx1) ) ) (setq e_lst (reverse (cons (entget vtx1) e_lst))) (entdel ent) (mapcar 'entmake e_lst) ) (T (princ "\nEntité non valide.")) ) ) ) ) ) (princ) ) (defun getlayers (titre lst1 lst2 / toggle_column tmp file lay layers len dcl_id) (defun sublist (lst start leng / n r) (if (or (not leng) (< (- (length lst) start) leng)) (setq leng (- (length lst) start)) ) (setq n (+ start leng)) (repeat leng (setq r (cons (nth (setq n (1- n)) lst) r)) ) ) (defun toggle_column (lst) (apply 'strcat (mapcar (function (lambda (x) (strcat ":toggle{key=" (vl-prin1-to-string x) ";label=" (vl-prin1-to-string x) ";}" ) ) ) lst ) ) ) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (while (setq lay (tblnext "LAYER" (not lay))) (setq layers (cons (cons (cdr (assoc 2 lay)) (cdr (assoc 62 lay))) layers)) ) (setq l_layers layers layers (vl-sort (mapcar 'car layers) '<) len (length layers) ) (write-line (strcat "GetLayers:dialog{label=" (cond (titre (vl-prin1-to-string titre)) ("\"Choisir les calques\"") ) ";:boxed_row{:column{" (cond ((< len 12) (toggle_column layers)) ((< len 24) (strcat (toggle_column (sublist layers 0 (/ len 2))) "}:column{" (toggle_column (sublist layers (/ len 2) nil)) ) ) ((< len 45) (strcat (toggle_column (sublist layers 0 (/ len 3))) "}:column{" (toggle_column (sublist layers (/ len 3) (/ len 3))) "}:column{" (toggle_column (sublist layers (* (/ len 3) 2) nil)) ) ) (T (strcat (toggle_column (sublist layers 0 (/ len 4))) "}:column{" (toggle_column (sublist layers (/ len 4) (/ len 4))) "}:column{" (toggle_column (sublist layers (/ len 2) (/ len 4))) "}:column{" (toggle_column (sublist layers (* (/ len 4) 3) nil)) ) ) ) "}}spacer;ok_cancel;}" ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "GetLayers" dcl_id)) (exit) ) (foreach n lst1 (set_tile n "1") ) (foreach n lst2 (mode_tile n 1) ) (action_tile "accept" "(setq lst nil) (foreach n layers (if (= (get_tile n) \"1\") (setq lst (cons n lst)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) lst ) J'ai un petit souci avec la partie surligné car je n'arrive pas à créer un jeu d'entité par calque et surtout de pouvoir traiter les poly une à une par calque. Merci par avance de votre aide. John. [Edité le 31/1/2009 par chris_mtp][Edité le 31/1/2009 par chris_mtp]
-
C'est sur. Pour ma part, j'ai testé le lisp selon les 4 config. J'ai pris une polyligne que j'ai copié 4 fois et appliquer une rotation selon le Nord Sud Est et Ouest. Avec ANGBASE à 100 et ANGDIR à 1, sens topo, je trouve les mêmes valeurs pour les angles et les gisements. Donc cette config me va. On peut le configurer selon ses besoins. J'ai testé également avec la fonction que tu as modifé. Résultat, en tout cas pour ce genre de lisp, on ne peut pas, à mon avis l'uniformiser. Merci encore de ton aide. John.
-
Merci Gile ca marche nickel maintenant. Par contre, il faut quand même configurer la variable ANGDIR à 1 et ANGBASE 100 pour avoir les angles corrects style topo. John
-
Bonjour Gile Ne serait il pas possible de soustraire la valeur de l'angle à 500gr ? Pourquoi ? Je sais pas mais constamment et ceci sur plusieurs dessins, en sousttriyant la valeur de l'angle donnée à 500gr, le résultat est celui escompté.. J'ai essayé de modifier le lisp mais je ne comprends pas très bien la fonction ang2d. Merci par avance de ton aide. John
-
Copie et rotation mais en boucle
chris_mtp a répondu à un(e) sujet de brunopub333 dans Débuter en LISP
Bonjour au lieu de la ligne, (vl-cmdf "_.rotate" js2 "" (getvar "lastpoint") pause) je vous propose (vl-cmdf "_.rotate" js2 "" (getvar "lastpoint") "_r" "@" pause pause) qui permet de choisir un angle de référence bien précis. Admettons maintenant qu'on ait une polyligne de 30 sommet, serait il possible de répéter cette boucle 30 fois ? Je m'explique, on choisit la polyligne avec comme point de base le premier sommet, on oriente l'objet avec référence avec le second sommet de la polyligne puis on utilise comme point de base suivant le second point de la polyligne et ainsi de suite,.......jusqu'au 30eme sommet ou le lisp s'arrête. C'est peut être un peut de charabia.... Bonne journée. John. -
Merci Gile pour ta réponse mais il ya des bugs. Bonuscad sur l'autre post a fait un lisp identique au tien. J'ai testé les deux en profondeur avec des polylignes dans tous les sens. J'ai essayé d'intégrer les variables ANGBASE à 0 et ANGDIR à 100 mais il ne retourne que les angles à gauche de la polyligne hors lorque l'angle est supérieur à 200 gr il faut indiquer son complément à 400. J'ai réussi à le modifier pour avoir les angles à droite mais pas pour avoir le complément à 400gr. En tout cas, merci quand même de ton aide. John.
-
[Edité le 26/1/2009 par chris_mtp]
-
Merci bonuscad pour ce lisp. C'est exactement ce que j'essayé de faire avec le peu de connaissances que j'ai. J'ai fait plusieurs tests. Il n'y a oas de coquilles apparelent. Le lisp est fiable. C'est vrai pour la valeur du gisement. IL ne faut pas mettre le Nord à 300 gr sinon le lisp affiche les angles complémentaires à +200. Merci encore. John.
-
Bonuscad, c'est bon. Pour le gisement. Il ne faut pas en fait modifier la variable ANGBASE mais simplement indiquer le Nord à 300g. Par contre, ce qui est de l'angle d'un sommet de LWPOLYLINE formé par deux cotés, c'est possible de la calculé. Merci par avance. John
