-
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 Gile pour ta réponse. En effet, dans les cas généraux, il ne faut pas changer les variables si on ne les restaure pas après mais vu que je travaille chaque fois dans le format d'unités, j'ai insérer ces variables selon mes besoins. Par contre, si j'ai bien compris, il n'existe pas de fonction AutoCAD qui permet de récupérer l'angle d'un sommet d'une polyligne formé par deux cotés. Seulement le gisement d'un vecteur. Merci de ton aide. John.
-
Bonjour, En effet, comme m'a dit onossa, ce post renvoie sur le mien. Bonuscad, si on met la variable ANGDIR à 1 et ANGBASE à 0. On a dans la colonne Directions qui en fait représente le gisement la valeur de celui ajouté de +100. En définissant le Nord à 0, on devrait avoir la valeur de gisement -100. J'ai essayé de modifier ton lisp selon mes besoins par (setvar "ANGBASE" 100) ou bien alpha (if (zerop seg_bulge) (- (angle pt_start pt_end) 100) 0.0) mais aucunes des deux ne marchent. De plus, au lieu d'avoir la colonne rayon, comme ma polyligne est constitué de segments droits, j'ai modifié cette colonne pour avoir la valeur de l'angle du sommet correspondant. Comment puis je faire ? Merci par avance de ton aide. John.
-
Gile meric pour tes petites suggestions. J'ai fait ce petit lisp mais je manque de connaissances sur les listes. Je pense que la première est la seconde liste se confonde. Du coup, je n'ai pas tous les sommets de la polyligne. (defun c:tblang (/ gitxt ptgi ptag agtxt ptlst osm rot ht ts pt pti ent bdent typent entit codeentit xentit yentit xtxt ytxt atxt i a) (setq osm (getvar "OSMODE")) (setvar "OSMODE" 0) (setvar "TEXTSTYLE" "STANDARD") (setq ts (getvar "TEXTSIZE")) (setvar "AUNITS" 2) (setvar "ANGDIR" 1) (setvar "AUPREC" 3) (setvar "ANGBASE" 0) (setq rot (angtos (angle '(0 0) '(1 0)) (getvar "AUNITS") 14)) (setq ht (* 1.5 ts)) (setq ent (car (entsel "\nCliquez une polyligne :"))) (setq bdent (entget ent)) (setq ptlst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) bdent))) (setq typent (cdr (assoc 0 bdent))) (if (= typent "LWPOLYLINE") (progn (setq pt (getpoint "\nSpécifiez le point d'insertion des coordonnées: " ) ) (setq i 1) (setq a 1) (repeat (length bdent) (setq entit (nth i bdent)) (setq codeentit (car entit)) (if (= codeentit 10) (progn (setq xentit (car (cdr entit))) (setq yentit (cadr (cdr entit))) (setq atxt (strcat (rtos a 2 0))) (setq xtxt (strcat (rtos xentit 2 2))) (setq ytxt (strcat (rtos yentit 2 2))) (command "_text" "c" (list (+ (car pt) 2.5) (cadr pt)) ts rot atxt) (command "_text" "c" (list (+ (car pt) (* 6.25 ts)) (cadr pt)) ts rot xtxt) (command "_text" "c" (list (+ (car pt) (* 15 ts)) (cadr pt)) ts rot ytxt) (setq a (+ a 1)) (setq agtxt (angtos (angle (nth (1- i) ptlst) (nth i ptlst)))) (setq gitxt (angtos (angle (nth (1- i) ptlst) (nth i ptlst)))) (setq ptag (list (+ (car pt) (* 23 ts)) (cadr pt))) (setq ptgi (list (+ (car pt) (* 30 ts)) (cadr pt))) (command "_text" "c" ptag ts rot agtxt) (command "_text" "c" ptgi ts rot gitxt) (setq pt (list (car pt) (- (cadr pt) ht))) ) ) (setq i (+ i 1)) ) ) (alert "L'objet séléctionné n'est pas une polyligne 2d.") ) (setvar "OSMODE" osm) (prin1) ) Il faut certainement compiler les deux listes pour en faire une seule mais comment ? De plus, l'angle retourné dans la variable agtxt correspond non pas au gisement mais à un autre angle lequel ?????? Et pour le gisement, on peut le calculer à partir de l'angle de deux sommets consécutifs mais comment récupérer la valeur de l'angle suivant ? Merci par avance de votre aide. John.
-
C'est bon j'ai modifié le lips précédent pour avoir un listing N° X Y d'une LWPOLYLIGN Voici le code (defun c:tblang (/ ht ts pt pti ent bdent typent entit codeentit xentit yentit xtxt ytxt atxt i a) (command "_osnap" "auc") (setq ts (getvar "TEXTSIZE")) (setq ht (* 1.5 ts)) (setq ent (car (entsel "\nCliquez une polyligne :"))) (setq bdent (entget ent)) (setq typent (cdr (assoc 0 bdent))) (if (= typent "LWPOLYLINE") (progn (setq pt (getpoint "\nSpécifiez le point d'insertion des coordonnées: " ) ) (setq i 1) (setq a 1) (repeat (length bdent) (setq entit (nth i bdent)) (setq codeentit (car entit)) (if (= codeentit 10) (progn (setq xentit (car (cdr entit))) (setq yentit (cadr (cdr entit))) (setq atxt (strcat (rtos a 2 0))) (setq xtxt (strcat (rtos xentit 2 2))) (setq ytxt (strcat (rtos yentit 2 2))) (command "_text" "c" (list (+ (car pt) 2.5) (cadr pt)) ts "100" atxt) (command "_text" "c" (list (+ (car pt) (* 6.25 ts)) (cadr pt)) ts "100" xtxt) (command "_text" "c" (list (+ (car pt) (* 15 ts)) (cadr pt)) ts "100" ytxt) (setq pt (list (car pt) (- (cadr pt) ht))) (setq a (+ a 1)) ) ) (setq i (+ i 1)) ) ) (alert "L'objet séléctionné n'est pas une polyligne 2d.") ) (prin1) ) Mais maintenant pour déterminer la valeur de l"angle de chaque sommet, j'ai essayé la fonction angle qui marche bien mais je ne sais pas choisir le point suivant de la polylign. En fait il me faudrait insérer deux colonnes supplémentaires, une pour l'angle de chaque sommet et une autre pour le gisement. Si vous avez une idée. Merci par avance de votre aide. John.
-
Merci Bonuscad pour cette info et merci onossa pour ta réponse. Si la commande permet de récupérer tous les sommets d'une polyligne, Comment extraire puis écrire les coordonnées X Y et surtout comment savoir le nombre de sommet de la polyligne sélectionné ? J'ai modifié ce lisp donc comme suit mais il me manque un truc..... (defun c:tblpoly2d (/ ht ts pt pti bdent typent entsel code10 xentit yentit xtxt ytxt i) (command "_osnap" "auc") (setq ts (getvar "TEXTSIZE")) (setq ht (* 1.5 ts)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget (car (entsel))))) (setq bdent (entget entsel)) (setq typent (cdr (assoc 0 bdent))) (setq code10 (cdr (assoc 10 bdent1))) (setq pt (getpoint "\nSpécifiez le point d'insertion des coordonnées: " ) ) (if (= typent "LWPOLYLINE") (progn (setq i 1) (setq xentit (car code10)) (setq yentit (cadr code10)) (setq itxt (strcat (rtos i 2 0))) (setq xtxt (strcat (rtos xentit 2 2))) (setq ytxt (strcat (rtos yentit 2 2))) (command "_text" "c" pt ts "100" itxt) (command "_text" "c" (list (+ (car pt) (* 6 ts)) (cadr pt)) ts "100" xtxt) (command "_text" "c" (list (+ (car pt) (* 15 ts)) (cadr pt)) ts "100" ytxt) (setq pt (list (car pt) (- (cadr pt) ht))) (setq i (+ i 1)) ) (alert "L'objet séléctionné n'est pas une polyligne 2d.") ) (prin1) ) Et surtout ce qui m'intéresse, commet extraire les coordonnées de 3 points à la suite pour avoir la valeur de l'angle de chaque sommet de la LWPOLYLIGNE? J'ai essayé la fonction polar mais ca marche pas.... Merci par avance de votre aide. John.
-
C'est bon j'ai trouvé comment numéroter les sommets avec la variable i mais maintenant avec une polyligne 2D pourquoi ce lisp ne marche pas ? Il me retourne erreur: type d'argument incorrect: lentityp nil (defun c:tblpoly2d (/ ht ts pt pti bdent typent ent ent1 bdent1 typent1 code10 xentit yentit xtxt ytxt i) (command "_osnap" "auc") (setq ts (getvar "TEXTSIZE")) (setq ht (* 1.5 ts)) (setq ent (car (entsel "\nCliquez la polyligne 2D:"))) (setq bdent (entget ent)) (setq typent (cdr (assoc 0 bdent))) (setq pt (getpoint "\nSpécifiez le point d'insertion des coordonnées: " ) ) (if (= typent "LWPOLYLINE") (progn (setq i 1) (setq ent1 (entnext ent)) (setq bdent1 (entget ent1)) (setq typent1 (cdr (assoc 0 bdent1))) (while (= typent1 "VERTEX") (setq code10 (cdr (assoc 10 bdent1))) (setq xentit (car code10)) (setq yentit (cadr code10)) (setq itxt (strcat (rtos i 2 0))) (setq xtxt (strcat (rtos xentit 2 2))) (setq ytxt (strcat (rtos yentit 2 2))) (command "_text" "c" pt ts "100" itxt) (command "_text" "c" (list (+ (car pt) (* 6 ts)) (cadr pt)) ts "100" xtxt) (command "_text" "c" (list (+ (car pt) (* 15 ts)) (cadr pt)) ts "100" ytxt) (setq pt (list (car pt) (- (cadr pt) ht))) (setq ent1 (entnext ent1)) (setq bdent1 (entget ent1)) (setq typent1 (cdr (assoc 0 bdent1))) (setq i (+ i 1)) ) ) (alert "L'objet séléctionné n'est pas une polyligne 2d.") ) (prin1) ) Je pense qu'il consiédère encore la polyligne sélectionné comme une 3D mais je ne vois pas quelle partie du code faut modifier. Merci par avance de votre aide. John.
-
C'est bon ca marche nickel. Merci Gile. Je vais essayer de récupérer la valeur de l'angle pour chaque sommet pour l'intégrer dans le tableau. Par contre, comment numéroter les sommets de polyligne de 1 à n par exemple? John.
-
A nouveau J'ai copié le code de Tramber. Je sélectionne la polyligne et le point d'insertion des textes mais rien de s'affiche même pas le moindre texte. J'ai vérifié aussi les accrobj. Rien ne plus. si tu as une solution. Merci par avance. John.
-
J'ai essayé de voir si il n'y avait pas un probleme dans ma liste. J'ai enlevé la variable locale i qui ne sert à mon avis à rien mais ca ne marche pas. Je ne comprends pas. Merci par avance de votre aide. John.
-
Cette fois, il me propose le point d'insertion mais ne m'insère aucun texte et j'ai beau voir et revoir ce qui cloche walou ....... J'ai définit en début de lisp un (command "_osnap" "auc") et ma chaine de caractere semble correcte.
-
J'ai changé mon fusil d'épaule et essayé de faire un petit lisp mais je ne comprend pas pourquoi ca na marche pas. (defun c:tblcoord (/ ht ts pt pti bdent typent ent ent1 bdent1 typent1 code10 xentit yentit zentit xyzentit i) (setq ts (getvar "TEXTSIZE")) (setq ht (* 1.5 ts)) (setq ent (car (entsel "\nCliquez une polyligne :"))) (setq bdent (entget ent)) (setq typent (cdr (assoc 0 bdent))) (if (= typent "POLYLINE") (setq i 0) (setq ent1 (entnext ent)) (setq bdent1 (entget ent1)) (setq typent1 (cdr (assoc 0 bdent1))) (while (= typent1 "VERTEX") (setq pt pti) (setq code10 (cdr (assoc 10 bdent1))) (setq xentit (car code10)) (setq yentit (cadr code10)) (setq zentit (caddr code10)) (setq xyzentit (strcat (rtos xentit 2 3) " " (rtos yentit 2 3) " " (rtos zentit 2 3))) (setq pti (getpoint ptb "\nSpécifiez le point d'insertion des coordonnées: ")) (command "_text" "bg" pti "5" "100" xyzentit) (setq ent1 (entnext ent1)) (setq bdent1 (entget ent1)) (setq typent1 (cdr (assoc 0 bdent1))) (setq pt (list (car pt) (- (cadr pt) ht))) ) ) (prin1) ) Je sélectionne la polyligne 3D mais après il ne me propose pas de choisir le point d'insertion des textes. Pourquoi ? De plus, comment puis je récupérer la valeur des angles des sommets de ma polyligne ? Merci par avance de votre aide. John.
-
Bonjour à tous, Comment puis je modifier ce fabuleux lisp de Bonuscad pour avoir un tableau de coordonnées avec des en têtes de colonnes Numéro de point, X, Y Z et intégré une colonne supplémentaire avec les angles de la polyligne sur chacun de ces sommets ? (sauf bien sur sur le premier et dernier sommet de la polyligne) (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) ) ) ) (defun make_field (pt / obj) (vlax-put (vla-AddPoint Space (vlax-3d-point pt)) 'layer "Id-Point") (setq obj (entlast)) (mapcar '(lambda (lx) (apply '(lambda (ins_point value_field att_point txt_height dwg_dir name_style name_layer txt_rot / nw_obj) (setq nw_obj (vla-addMtext Space (vlax-3d-point ins_point) 0.0 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) value_field ) ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation) (list att_point txt_height dwg_dir ins_point name_style name_layer txt_rot) ) ) lx ) ) (list (list pt_ins ">%).Coordinates \\f \"%lu2%pr3\">%" 7 (getvar "TEXTSIZE") 5 "Romand-Field" "Id-XYZ" rtx ) ) ) (setq pt_ins (mapcar '- pt_ins (list 0.0 (+ (* (getvar "TEXTSIZE") (sin rtx0) 2.0) (* (* (getvar "TEXTSIZE") 2.0) (cos rtx0))) 0.0 ) ) ) ) (defun c:cell-xyz_field ( / js pt_ins htx rtx rtx0 AcDoc Space ncol nw_style dxf_cod n lremov ent ename l_pt l_pr) (princ "\nChoix d'un objet modèle pour le filtrage: ") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "LINE,POLYLINE,LWPOLYLINE,POINT,ARC,CIRCLE,ELLIPSE,INSERT") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) ) ) (princ "\nCe n'est pas un objet valable pour cette fonction!") ) (initget 1) (setq pt_ins (getpoint "\nPoint de départ pour l'écriture des coordonnées: ")) (initget 6) (setq htx (getdist pt_ins (strcat "\nSpécifiez la hauteur du champ <" (rtos (getvar "TEXTSIZE")) ">: "))) (if htx (setvar "TEXTSIZE" htx)) (if (not (setq rtx (getorient pt_ins "\nSpécifiez l'orientation du champ <0.0>: "))) (setq rtx 0.0)) (setq rtx0 (+ (angle '(0 0 0) (getvar "UCSXDIR")) rtx)) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ncol '(96 2) ) (foreach n '("Id-XYZ" "Id-Point") (cond ((null (tblsearch "LAYER" n)) (vlax-put (vla-add (vla-get-layers AcDoc) n) 'color (car ncol)) ) ) (setq ncol (cdr ncol)) ) (cond ((null (tblsearch "STYLE" "Romand-Field")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand-Field")) (mapcar '(lambda (pr val) (vlax-put nw_style pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list "romand.shx" 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) ) ) (setq dxf_cod (entget (ssname js 0))) (initget "Unique Multiple _Single Multiple") (if (eq (getkword "\nSélection filtrée [unique/Multiple]: ") "Single") (setq n -1) (setq dxf_cod (entget (ssname js 0)) js (ssget "_X" (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 420 70))) (setq lremov (cons (car n) lremov)))) (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) ) n -1 ) ) (repeat (sslength js) (setq ename (vlax-ename->vla-object (ssname js (setq n (1+ n)))) l_pt nil) (setq l_pr (list 'StartPoint 'EndPoint 'Center 'InsertionPoint 'Coordinates 'FitPoints)) (foreach n l_pr (if (vlax-property-available-p ename n) (setq l_pt (if (eq n 'Coordinates) (progn (append (if (eq (vla-get-ObjectName ename) "AcDbPolyline") (l-coor2l-pt (vlax-get ename n) nil) (l-coor2l-pt (vlax-get ename n) T) ) l_pt ) ) (cons (vlax-get ename n) l_pt) ) ) ) ) (mapcar 'make_field l_pt) (setq pt_ins (mapcar '- pt_ins (list 0.0 (+ (* (getvar "TEXTSIZE") (sin rtx0) 2.0) (* (* (getvar "TEXTSIZE") 2.0) (cos rtx0))) 0.0 ) ) ) ) (prin1) ) Merci par avance de votre aide. John.
-
Merci pour cet aide. C'est vrai. Si le lisp est alétoire, mieux vaut tracer la poly3d soi meme puis ca permet de se controler aussi. Mais je vais quand même essayer. Merci et Bravo. John.
-
Bravo. Mais ensuite pour joindre les points en une polyligne 3D, c'est plus compliqué ? Merci quand même
-
C'est une autre méthode que tu me proposes là mais mon idée de calculer l'interpolation en Z était valable aussi non ?
-
En effet, il manquait une parenthèses à la fin mais toujours erreur de syntaxe.
-
Petite erreur de ma part, je n'avais pas inclu le calcul dans la boucle mais toujours rien à faire. Cette fois ci c'est erreur: structure incorrecte de la liste en entrée (defun c:inters3d () ((lambda ( / de1 de2 dn1 dn2 dist1 dist2 zn dz1 dz2 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 une polyligne2D") (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 (car l_pt2d))) ) ) ) (setq dz1 (- (caddr p3) (caddr p4))) (setq de1 (- (car p3) (car p4))) (setq dn1 (- (cadr p3) (cadr p4))) (setq dist1 sqrt((+ (* de1 de1) (* dn1 dn1)))) (setq de2 (- (car p3) (car n))) (setq dn2 (- (cadr p3) (cadr n))) (setq dist2 sqrt((+ (* de2 de2) (* dn2 dn2)))) (setq dz2 (/ (* dist2 dz1) dist1)) (setq zn (+ dz2 caddr p3)) (if (not (null l_int2d))(command "_.point" "_none" list((car l_int2D) (caddr zn))) ) ) ) ) ) ) )) (prin1) ) Merci par avance piur votre aide. John.
-
J'ai oublié de'intégrer les variables dn1 et dn2 mais toujours Erreur de syntaxe après la sélection de la polyligne. John.
-
Si j'ai bien compris, les points p3 et p4 sont les points 3D les plus proches à l'intersection de la poly2D. J'ai fait ce lisp. Je dois pas être loin du fond mais il me manque la forme car quand je lance dans autocad le lisp, il m'indique erreur de syntaxe. ((lambda ( / 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 une polyligne2D") (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 (car l_pt2d))) ) ) ) ) ) ) ) ) ) )) (defun c:inters3d (/ dz1 dz2 de1 de2 dist1 dist2 zn) (setq dz1 (- (caddr p3) (caddr p4))) (setq de1 (- (car p3) (car p4))) (setq dn1 (- (cadr p3) (cadr p4))) (setq dist1 sqrt((+ (* de1 de1) (* dn1 dn1)))) (setq de2 (- (car p3) (car n))) (setq dn2 (- (cadr p3) (cadr n))) (setq dist2 sqrt((+ (* de2 de2) (* dn2 dn2)))) (setq dz2 (/ (* dist2 dz1) dist1)) (setq zn (+ dz2 caddr p3)) (command "_osnap" "_appint") (command "_point" (list(car n cadr n caddr zn))) (prin1) ) Par contre, je n'ai pas trouver la commande valeur absolue dans l'aide à intégrer après chaque variable à définir pour avoir une interpolation Z correcte. Merci par avance de votre aide et merci encore à ta fonction Bonuscad. John
-
T'as CoVADIS ? Sinon tu dois faire un fichier TEXTE format TOPOJIS (avec Excel c'est facile) pour le transférer dans la station. John.
-
Je suis bloqué avec la liste et le jeu de sélection ssget. Merci pour votre aide. John
-
Sérieux c pas simple. Voila ce que j'ai pu faire à partir de lisp déjà éxistant mais ..... (defun c:inters3d (/ plo) (setq plo (entsel "\nSélectionnez une polyligne: ")) (l-coor2l-pt (plo)) (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) ) ) ) (prin1) ) j'ai ça comme erreur erreur: fonction incorrecte: ( 7dcce170> (452660.0 221477.0 0.0)) John
-
Non il n'y a pas d'arc dans la poly2D. JE vais essayer avec vos explications. Merci. John.
-
Attention, je ne veux pas que tu m'écrive un code. Je commence tout juste à apprendre le lisp. C'est pas en l'écrivant toi même que ca va m'aider. De plus, je connais l'intersection projeté. Mais je souhaiterais simplement automatiser certaines tâches. Ce que je demande, c'est comment faire (ou du moins avoir une idée de début) pour sans sélectionner les polylignes 3D crée un point tout simple aux intersections de la poly2D et des poly3D. J'ai commencé à regarder certains lisp de gile et de bonuscad mais je patoge. Voilà tout. John.
-
Bonjour à tous, J'ai un axe en plan 2D à Z=0 qui coupe des polylignes 3D. Serait il possible de créer une polyligne 3D reliant les points d'intersection projetée de la poly2D avec les 3D avec comme altitude des points d'intersections un Z interpolé des deux sommets les plus proches des poly3D avec la poly2D d'origine ? Jusqu'à présent, je calculais des interpolations via Distance et pente, insérer un bloc au point d'intersection avec un Z manuel puis je tracé après la polyligne 3D qui joint les points d'intersection projeté ainsi crées. Mais si on n'a une polyligne qui fait 500m de long avec un point ts les 5m, c'est fastidieux. Merci par avance de votre aide. John.
