Aller au contenu

chris_mtp

Membres
  • Compteur de contenus

    406
  • Inscription

  • Dernière visite

Tout ce qui a été posté par chris_mtp

  1. chris_mtp

    liste à comparer

    Bonjour, J'ai dans un dessin un grand nombre de blocs type point avec un seul attribut et je dois être sur qu'il n'y a pas de doublons dans les attributs, c'est à dire deux blocs de position différente mais avec un attribut numéro identique. J'ai pensé à faire une liste de tous les attributs d'un dessin mais après pour voir s'il n'y a pas de doublons, la je bloque. Un conseil ? Merci par avance. John
  2. chris_mtp

    cote polyligne

    Pas mal la fonction SetAttValue. C'est exactement ce que je souhaité. Merci John
  3. chris_mtp

    cote polyligne

    Merci Gile, Si mes demandes sont confuses, je m'explique. J'ai voulu faire un lisp qui permet d'afficher la distance cumulée de chaque sommet d'une polyligne et la dénivelé par rapport au premier point sous forme de listing dans autocad mais j'ai pu m'en sortir avec tes infos. Par contre, il me faudrait maintenant insérer un bloc sur chaque point de la polyligne 3D avec comme valeur d'attribut la cote Z de chaque sommet. Voila ce que j'ai pu faire en tirant des exemples à droite et à gauche mais j'ai le retour VLA-OBJECT nil (foreach pt lstpt (setq valz (caddr pt)) (setq att (command "_insert" "nod" pt ech ech "0")) (setq tag (vla-get-TagString att)) (cond ((= "Z" tag) (vla-put-TextString att (rtos valz 2 2)) )) Pourquoi ? John.
  4. chris_mtp

    cote polyligne

    Merci Gile pour ces infos mais en fait, je souhaiterais faire une liste des distances cumulées d'une polyligne et des delta z à partir du premier point. J'ai essayé donc de faire une liste mais j'ai le retour numberp: nil (setq pt0 (nth 0 lst_pl)) (foreach pt lst_pl (setq 2dptlst (mapcar '(lambda (pt) (list (distance pt0 pt) (- (caddr pt) (caddrpt0))) lst_pl)))) Je dois donc construire ma liste autrement non ? John.
  5. chris_mtp

    cote polyligne

    Merci Gile pour ta réponse. J'ai pu m'en sortir avec le logand. Par contre, maintenant j'ai un autre pb qui me bloque. Comment faire pour créer une liste de coordonnées type xy puis de tracer par la suite une polyligne 3D qui passe par chacun des points de la liste ? En fait je calcule des distances qui correspondent à des coordonnées locales. John.
  6. chris_mtp

    cote polyligne

    J'ai essayé dans ce cas d'utiliser les fonctions repeat ou foreach mais c'est vrai toujours le même pb. Faudrait que je change le code dans sa structure mais je ne vois pas comment ? Si tu as une solution ? Merci. John.
  7. MErci Gile.
  8. Bonjour, J'ai fait ce petit lisp qui permet de coter une lwpolyligne mais à la fin j'ai le retour suivant : ; erreur: type d'argument incorrect: point 2D/3D: nil (defun c:nettoie_pro (/ i ent bdent ptlst typent pt0 pt ptn di dn txt txtn ts ht htb ech tr) (command "-UNITES" 2 2 3 3 300.000g) (command "_osnap" "auc") (setq ent (car (entsel "\nCliquez une polyligne :"))) (setq ech (getreal "\nECHELLE : ")) (setq ts (* ech 0.0016)) (setq ht (* ech 0.005)) (setq htb (* ech 0.0075)) (setq tr (* ech 0.01)) (setq bdent (entget ent)) (setq ptlst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) bdent))) (setq typent (cdr (assoc 0 bdent))) (setq i 0) (if (= typent "LWPOLYLINE") (while (< i (length ptlst)) (setq pt0 (nth 0 ptlst)) (setq pt (nth i ptlst)) (setq ptn (nth (+ i 1) ptlst)) (setq di (distance pt ptn)) (setq dn (distance pt0 ptn)) (setq txt (strcat (rtos di 2 2))) (setq txtn (strcat (rtos dn 2 2))) (command "texte" "mc" (list (+ (/ (- (car ptn) (car pt)) 2) (car pt)) (+ (cadr ptn) ht) 0) ts 200 txt) (command "texte" "mc" (list (car ptn) (- (cadr ptn) htb) 0) ts 200 txtn) (setq i (+ i 1)) )) (command "-UNITES" 2 4 3 3 300.000g) (prin1) ) Le pb doit venir de la boucle while mais pourquoi ? Merci par avance de votre aide. John.
  9. En effet, c'est beaucoup plus rapide que ma méthode. mais ton dxf -4, c'est quoi (-4 . "*,*,=") (10 0.0 0.0 0.0)
  10. Merci Bonuscad pour ton aide. Ca marche nickel. Par contre, le traitement pour effacer les points d'altitude à 0 est un peu long avec un grand nombre de points. Je vais essayer de le simplifier. Et merci à Gile pour sa fonction INTERS-3DFACE-POINT John
  11. Et pour le plaquage des points sur le MNT, j'ai pu faire ca mais il me retourne Erreur de syntaxe j'ai vérifié les parenthèses mais il doit y avoir un probleme dans le code. (defun c:grille_nod (/ p1 p2 m lon lar x y ss1 i nom entit pt alt1 pti) (prompt "\nCREATION D'UNE GRILLE TYPE NODAL") (if (not (tblsearch "LAYER" "MAILLAGE")) (command "_layer" "_N" "MAILLAGE" "_CO" "3" "MAILLAGE" "")) (setvar "CLAYER" "MAILLAGE") (setvar "PDMODE" 3) (setvar "PDSIZE" 0.1) (setq p1 (getpoint "\nPoint bas gauche de la grille : ")) (setq p2 (getcorner p1 "\nPoint haut droit de la grille : ")) (setq lon (- (car p2) (car p1))) (setq lar (- (cadr p2) (cadr p1))) (setq m (getdist "\nEntrer la taille d'une maille (m) : ")) (setq x (/ lon m)) (setq y (/ lar m)) (command "point" p1 "") (command ".-reseau" (entlast) "" "R" (rtos y 2 0) (rtos x 2 0) m m) (setq ss1 (ssget "_X" (list (cons 0 "POINT") (cons 8 "MAILLAGE")))) (setq i 0) (while (< i (sslength ss1)) (setq nom (ssname ss1 i)) (setq i (+ i 1)) (setq entit (entget nom)) (setq pt (cdr (assoc 10 entit))) (if (and (setq ss2 (ssget "_F" (list pt (list (car pt) (+ (cadr pt) (getvar "VIEWSIZE")))))) (list '(0 . "3DFACE") (cons 8 "MNT")) ) ) (setq alt1 (Inters-3dFace-Point (trans pt 1 0) ss1)) (setq pti (list (car pt) (cadr pt) (caddr pt))) (command "_move" pt pti (list (car pt) (cadr pt) (rtos alt1 2 3))) ) (prin1) )
  12. J'ai pu faire pour la sélection des points d'altitude à 0 (defun c:erase_pt (/ i ss len nom entit pt) (setq jeu (ssget "X" (list(cons 0 "POINT") (cons 8 "MAILLAGE")))) (progn (setq i 0) (setq len (sslength jeu)) (while (< i len) (setq i (+ i 1)) (setq nom (ssname jeu i)) (setq entit (entget nom)) (setq pt (cdr (assoc 10 entit))) (setq val (caddr pt)) (if (= val 0) (command "_erase" pt "")))) (prin1) ) mais à la fin j'ai l'erreur "lentityp nil" Pourquoi ? John
  13. Sérieux je suis bloqué Je ne sais pas comment je peux déplacer les points qui ont des faces 3D à leur verticale. Merci de m'aider please. John
  14. chris_mtp

    entourer un texte

    EN RECHERCHANT SIMPLEMENT SUR LE FORUM http://www.cadxp.com/sujetXForum-17530.htm John
  15. Si pour les lignes ca marche, pour les points, c'est un peu plus compliqué. J'essaye de faire une grille de point puis de faire projeter chaque point de cette grille sur la face3D à la verticale de ce point en utilisant la fonction de gile posté sur un autre sujet mais je bloque sur la partie surligné. (defun c:grille_nod (/ p1 p2 m lon lar x y ss1 i) (setvar "PDMODE" 3) (setvar "PDSIZE" 0.1) (setq p1 (getpoint "\nPoint bas gauche de la grille : ")) (setq p2 (getcorner p1 "\nPoint haut droit de la grille : ")) (setq lon (- (car p2) (car p1))) (setq lar (- (cadr p2) (cadr p1))) (setq m (getdist "\nEntrer la taille d'une maille (m) : ")) (setq x (/ lon m)) (setq y (/ lar m)) (command "point" p1 "") (command ".-reseau" (entlast) "" "R" (rtos y 2 0) (rtos x 2 0) m m) (setq ss1 (ssget "_X" (list (cons 0 "POINT") (cons 8 "MAILLAGE")))) (setq i 0) (foreach point (sslength ss1) (if (and (setq ss2 (ssget "_F" (list pt (list (car pt) (+ (cadr pt) (getvar "VIEWSIZE")))) (list '(0 . "3DFACE") (cons 8 "MNT")) ) ) (setq alt1 (Inters-3dFace-Point (trans pt 1 0) ss1)) ;;ici je bloque (setq i (+ i 1)) ) (prin1) ) ;; CLOCKWISE-P ;; Retourne T si les points p1 p2 et p3 tournent dans le sens horaire (defun clockwise-p (p1 p2 p3) (< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14) ) ;; INSIDE_3PTS ;; Evalue si pt est strctement à l'intérieur du triangle p1 p2 p3 (points 2d) (defun inside_3pts (pt p1 p2 p3) (if (clockwise-p p1 p2 pt) (and (clockwise-p p2 p3 pt) (clockwise-p p3 p1 pt) ) (and (clockwise-p p2 pt p3) (clockwise-p p3 pt p1) (clockwise-p p1 pt p2) ) ) ) ;; VEC1 ;; Retourne le vecteur normé (1 unité) de sens p1 p2 (defun vec1 (p1 p2 / d) (if (not (zerop (setq d (distance p1 p2)))) (mapcar '(lambda (x1 x2) (/ (- x2 x1) d)) p1 p2) ) ) ;; VXV ;; Retourne le produit scalaire (réel) de deux vecteurs (defun vxv (v1 v2) (apply '+ (mapcar '* v1 v2)) ) ;; V^V ;; Retourne le produit vectoriel (vecteur) de deux vecteurs (defun v^v (v1 v2) (list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2))) (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2))) (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2))) ) ) ;; IL3P ;; Retourne le point d'intersection de la droite définie par p1 p2 ;; et du plan défini par p3 p4 p5. (defun il3p (p1 p2 p3 p4 p5 / nor scl) (setq nor (v^v (mapcar '- p4 p3) (mapcar '- p5 p3)) scl (/ (vxv nor (mapcar '- p1 p3)) (vxv nor (mapcar '- p2 p1)) ) ) (mapcar '(lambda (x1 x2) (+ (* scl (- x1 x2)) x1)) p1 p2) ) ;; REMOVE_DOUBLES_F ;; Suprime tous les doublons d'une liste (avec tolérance) (defun remove_doubles_f (lst fuzz) (if lst (cons (car lst) (remove_doubles_f (vl-remove-if '(lambda (x) (equal x (car lst) fuzz)) lst) fuzz ) ) ) ) ;; INTERS-3DFACE-POINT ;; Retourne la liste des points d'intersections de la projectrice verticale ;; de pt avec chaque face 3d de la liste rencontrée ;; ;; Arguments ;; pt : point (coordonnées SCG) ;; ss : jeu de sélection (faces 3d) ;; ;; Algorythme ;; Tant qu'un point n'est pas trouvé sur une face 3d du jeu de sélection, ;; - on constitue la liste des sommets après suppression des doublons (plst) ;; - les sommets et le point spécifiés sont projetés sur le plan XY (p0 p1 p2 p3) ;; - on évalue si p0 est soit confondu avec un sommet soit sur une arrête soit à ;; l'intérieur du triangle p1 p2 p3. Si une de ces condition est vérifiée le ;; point 3d sur la face 3d est calculé et son altitude est retournée. (defun Inters-3dFace-Point (pt ss / loop n ent plst p0 p1 p2 p3 alt) (setq loop T n 0 ) (while (and loop (setq ent (ssname ss n))) (setq plst (remove_doubles_f (mapcar 'cdr (vl-remove-if-not '(lambda (x) (member (car x) '(10 11 12 13 14))) (entget ent) ) ) 1e-9 ) n (1+ n) ) (mapcar '(lambda (s p) (set s (list (car p) (cadr p)))) '(p0 p1 p2 p3) (cons pt plst) ) (if (= 3 (length plst)) (cond ((equal p0 p1 1e-9) (setq loop nil alt (caddr (car plst)) ) ) ((equal p0 p2 1e-9) (setq loop nil alt (caddr (cadr plst)) ) ) ((equal p0 p3 1e-9) (setq loop nil alt (caddr (caddr plst)) ) ) ((equal (vec1 p1 p0) (vec1 p0 p2) 1e-9) (setq loop nil alt (+ (caddr (car plst)) (* (- (caddr (cadr plst)) (caddr (car plst))) (/ (distance p1 p0) (distance p1 p2)) ) ) ) ) ((equal (vec1 p2 p0) (vec1 p0 p3) 1e-9) (setq loop nil alt (+ (caddr (cadr plst)) (* (- (caddr (caddr plst)) (caddr (cadr plst))) (/ (distance p2 p0) (distance p2 p3)) ) ) ) ) ((equal (vec1 p1 p0) (vec1 p0 p3) 1e-9) (setq loop nil alt (+ (caddr (car plst)) (* (- (caddr (caddr plst)) (caddr (car plst))) (/ (distance p1 p0) (distance p1 p3)) ) ) ) ) ((inside_3pts p0 p1 p2 p3) (setq loop nil alt (caddr (il3p pt (list (car pt) (cadr pt) 1.0) (car plst) (cadr plst) (caddr plst) ) ) ) ) ) ) ) alt ) Par contre, il faudrait également à la fin du traitement si possible de sélectionner à la fin tous les points qui n'ont de face3D à leur verticale donc d'altitude égal à 0 pour les supprimer. Merci par avance de votre aide. John. [Edité le 1/3/2009 par chris_mtp]
  16. Ca marche nickel avec mon fichier. J'ai contrôlé l'altitude des points interpolés. Pas de souci. J'ai modifié la commande -pline à la fin par -3dpoly pour qu'il trace une polyligne 3D en résultat. Je l'ai testé avec un autre fichier toujours sur le même principe. Pas de souci. Bravo encore et merci. John.
  17. Pourquoi ne pourrait on pas changer la méthode de traitement initiale ? Si au lieu de créer une polyligne 3D à partir de la 2D, on ne pourrait pas simplement créer à chaque intersection de la polyligne et d'une 3D face un point nodal classique. Je suis en train de voir si je peux adapter un des lisp de Gile d'ici http:// http://www.cadxp.com/XForum+print-fid-100-tid-17001.html?POSTNUKESID=4bcf046fb35c7acd19fe2a01e3128703 pour en fait d'abord plaquer simplement un point sur une 3d face à la bonne altitude Z. Mais je bloque sur la fonction INTERS-3DFACE-POINT. Merci par avance de votre aide. John.
  18. Mon DWG est tout simple. J'ai des 3d faces dans le calque MNT et une polyligne 2D dans le calque 0 et d'épaisseur 0 avec une élevation à 0. J'ai un MNT avec des 3D faces. Je n'ai pas de mailles ni de solides 3d. Donc pas besoin je pense de la première partie(celle qui décompose les mailles en 3D faces) non ? Je t'envoie quand même un DWG au cas où. Merci quand même. John.
  19. Merci pour cette info. J'ai essayé de modifier le code mais le vlisp c chaud à comprendre. J'ai enlevé la partie du code qui décompose les 3D maillles en faces 3D. Mais après j'ai l'erreur suivante ; erreur: Erreur Automation Argument Distance incorrect dans Offset method Un pb avec la commande Offset ok mais Pourquoi ? Je manque de connaissances à ce niveau. Pour l'instant je ne vois pas trop comment faire mais je vais chercher de mon côté. La base de départ : (defun punktinpolylinie (pointinquestion point_list /) (if (equal 0.0 (pipwinkelsumme pointinquestion point_list) 0.0001 ) nil t ) ) (defun pipwinkelsumme (pointinquestion point_list / count p1 p2 scheitel winkeleins winkelzwei ) (setq winkeleins 0.0 scheitel (car point_list) count 1 ) (while (< 1 (length point_list)) (setq p1 (car point_list) p2 (cadr point_list) point_list (cdr point_list) winkelzwei (pipwinkelhilfe pointinquestion p1 p2) winkelzwei (if (< 180.0 winkelzwei) (- winkelzwei 360.0) winkelzwei ) winkeleins (+ winkeleins winkelzwei) ) (setq count (1+ count)) ) (setq winkelzwei (pipwinkelhilfe pointinquestion p2 scheitel) winkelzwei (if (< 180.0 winkelzwei) (- winkelzwei 360.0) winkelzwei ) ) (+ winkeleins winkelzwei) ) (defun pipwinkelhilfe (pointinquestion p1 p2 / alpha beta) (setq beta (angle pointinquestion p1) alpha (angle pointinquestion p2) alpha (- alpha beta) ) (if (< alpha 0) (setq alpha (+ (* 2 pi) alpha)) ) (* (/ (float alpha) pi) 180.0) ) (defun c:lw2pl3f (/) (princ "\nChoisir la polyligne 2D") (setq js_lw (ssget "_+.:E:S" '((0 . "LWPOLYLINE")))) (cond (js_lw (setvar "cmdecho" 0) (setq dxf_lw (entget (ssname js_lw 0)) vla_obj (vlax-ename->vla-object (cdar dxf_lw)) dxf_elw (cdr (assoc 40 dxf_lw)) loop 0 ) (vla-Offset vla_obj (/ dxf_elw 2)) (repeat 2 (setq dxf_lw (entget (entlast)) dxf_10 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_lw) ) all_pt nil ) (while dxf_10 (if (cdr dxf_10) (if (setq rslt (vl-remove nil (mapcar '(lambda (x y) (inters (car dxf_10) (cadr dxf_10) x y T) ) (cons (last bdx) bdx) bdx ) ) ) (if (and (punktinpolylinie p1 bdx) (not (equal (car dxf_10) (car rslt) 1E-12)) ) (setq p1 (car dxf_10) dxf_10 (cons p1 (cons (car rslt) (cddr dxf_10))) ) (setq p1 (car rslt)) ) (setq p1 (car dxf_10)) ) ) (setq js (ssget "_C" (list (- (car p1) 25.0) (- (cadr p1) 25.0)) (list (+ (car p1) 25.0) (+ (cadr p1) 25.0)) '((0 . "3DFACE") (8 . "MAILLAGE3D")) ) p1 (trans p1 1 0) p1 (list (car p1) (cadr p1)) n -1 lst_px nil ) (cond (js (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n)))) lst_pt (list (cdr (assoc 10 dxf_ent)) (cdr (assoc 11 dxf_ent)) (cdr (assoc 12 dxf_ent)) (cdr (assoc 13 dxf_ent)) ) ) (if (equal (caddr lst_pt) (cadddr lst_pt)) (setq lst_pt (list (car lst_pt) (cadr lst_pt) (caddr lst_pt) (car lst_pt) ) ) (setq lst_pt (append lst_pt (list (car lst_pt)))) ) (if (punktinpolylinie p1 lst_pt) (progn (command "_.ucs" "_3point" "_none" (car lst_pt) "_none" (cadr lst_pt) "_none" (caddr lst_pt) ) (setq p_10 (trans (list (car p1) (cadr p1) 1000.0) 0 1) p_11 (trans (list (car p1) (cadr p1) 0.0) 0 1) p10_2d (list (car p_10) (cadr p_10) 0.0) p11_2d (list (car p_11) (cadr p_11) 0.0) p_int (trans (inters p10_2d p11_2d p_10 p_11 nil) 1 0 ) lst_px (cons p_int lst_px) ) (command "_.ucs" "_world") ) ) ) (if lst_px (setq all_pt (append lst_px all_pt)) ) ) ) (setq dxf_10 (cdr dxf_10)) ) (cond (all_pt (setq pt_all (list (car all_pt))) (while (cdr all_pt) (setq p1 (car all_pt) p2 (cadr all_pt) js (ssget "_F" (list p1 p2) '((0 . "3DFACE") (8 . "MNT"))) p1 (trans p1 1 0) p2 (trans p2 1 0) p1 (list (car p1) (cadr p1)) p2 (list (car p2) (cadr p2)) n -1 lst_px nil ) (cond (js (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n)))) lst_pt (list (cdr (assoc 10 dxf_ent)) (cdr (assoc 11 dxf_ent)) (cdr (assoc 12 dxf_ent)) (cdr (assoc 13 dxf_ent)) ) ) (if (equal (caddr lst_pt) (cadddr lst_pt)) (setq lst_pt (list (car lst_pt) (cadr lst_pt) (caddr lst_pt) (car lst_pt) ) ) (setq lst_pt (append lst_pt (list (car lst_pt)))) ) (while (cdr lst_pt) (setq px (inters p1 p2 (car lst_pt) (cadr lst_pt) T)) (if px (progn (setq px (inters (list (car px) (cadr px) 0.0) (list (car px) (cadr px) 100.0) (car lst_pt) (cadr lst_pt) nil ) ) (if (and px (not (member px lst_px))) (setq lst_px (cons px lst_px)) ) ) ) (setq lst_pt (cdr lst_pt)) ) ) (if lst_px (progn (setq new_lst nil) (while lst_px (setq l (mapcar '(lambda (x) (distance x p1)) lst_px) ) (setq el (nth (- (length lst_px) (length (member (apply 'min l) l)) ) lst_px ) ) (setq lst_px (vl-remove el lst_px) new_lst (cons el new_lst) ) ) (setq pt_all (append (list (cadr all_pt)) new_lst pt_all) ) ) (setq pt_all (append (list (cadr all_pt)) pt_all)) ) ) (T (setq pt_all (append (list (cadr all_pt)) pt_all))) ) (setq all_pt (cdr all_pt)) ) (command "_.3dpoly") (foreach el pt_all (command "_none" (trans el 0 1))) (command "") (entdel (cdar dxf_lw)) ) (T (princ "\nAucune 3DFACE trouvée!")) ) (if (not (zerop (rem (setq loop (1+ loop)) 2))) (vla-Offset vla_obj (- (/ dxf_elw 2.0))) ) ) (setvar "cmdecho" 1) ) ) (prin1) ) Si vous avez du temps ou des idées. Merci par avance de votre aide.
  20. Bonjour à tous Existe t-il une routine lisp qui permet de plaquer une polyligne 2D sur un MNT pour en créer une polyligne 3D à chaque intersection d'une des faces du MNT ? Je sais que cette fonction existe sous Covadis mais je ne l'ai pas. Merci par avance de votre aide. John.
  21. Tres bien, dans ce cas, on peut projeter les entités qui sont contenus dans le polygone de capture à z=0 puis les découper ensuite avec le lisp de gile. Ou peut même sélectionner grossièrement les entités à décaler à z=0 de manière à ne pas aplanir la totalité du plan puis d'utiliser le lisp. J'ai essayé avec un rectangle coupé par une polyligne 2D ou 3D à Z=0 Ca coupe bien aux intersections par contre, j'ai toujours le retour nil mais ca marche. Merci quand même de votre aide. John.
  22. Salut, Voici certaines explications de Gile posté sur d'autres sujets qui m'ont aidé depuis mes débuts en lisp à faire mes jeu de sélection ssget si cela peut t'aider . Ceci fonctionne avec les codes dxf type 2 pour le nom d'un bloc, 8 pour le nom d'un calque, .... ssget peut avoir plusieurs arguments (optionnels) : - des modes de sélections "_X" pour tout le document, "_A" pour tous les objets sur les calques non gelés dans tout le document, "_L" pour dernier objet créé, "_P" pour jeu de sélection précédent etc... - des points (1 seul sans mode de sélection ou 2 pour les modes "_C" capture et "_W" fenêtre) ou des listes de points (pour les modes "_CP" capture polygonale, "_WP" fenêtre polygonale, "_F" trajet) - un filtre sous forme de liste basé sur les codes DXF (voir les références DXF dans l'aide aux développeur). Ce filtre permet de reproduire toutes les possibilité offerte par la commande FILTER. Les valeurs des codes de groupes DXF qui sont des chaînes (type d'entité, calque, nom de bloc...) peuvent être cumulés en les séparant par des virgules et acceptent les caractères génériques ex : (ssget '((0 . "LINE,CIRCLE") (8 . "A1*") pour filtrer les cercles et lignes sur tous les calques dont le nom commence par "A1". On peut utiliser des test relationnels (= < > etc...) pour les valeurs numériques ex : (ssget '((0 . "CIRCLE") (-4 . ">") (40 . 50))) pour filtrer tous les cercles dont le rayon est supérieur à 50 On peut aussi utiliser des opérateurs logiques (or, and, xor, not) ex : (ssget '((-4 . "") (-4 . "OR>"))) pour filtrer les cercles et les polylignes fermées. Si une des valeurs est une variable, la liste devra être évalué, il faut alors utiliser les fonctions list et cons ex : (ssget (list '(0 . "INSERT") (cons 2 nom_du_bloc))) pour filtrer les blocs dont le nom est stocké dans la variable nom_du_bloc (setq s2 (ssget "_C" '(397 3) '(397 3) '((0 . "INSERT") (2 . "SGAD")))) John.
  23. D'après ce que j'ai compris du veux les intersections PROJETES sur tes polylignes 3D, Je ne veux pas spécialement les intersections projetés En fait, ca marche avec les poly2D mais pas avec les poly3D. Car même avec des poly2D, il les coupe mais retourne le même message nil pour les 3D. Merci par avance de votre aide. John.
  24. Bonjour Gile Désolé de n'avoir pu te répondre avant mais je viens juste de rentrer de déplacement. Pour le lisp, lors de la sélection du polygone de capture, j'ai le retour suivant. Sélectionner le polygone de capture: nil Pourtant mon contour est bien une polyligne 2D fermé. J'ai essayé de voir un peu ton code pour essayer de trouver moi même l'erreur mais je vois pas. Merci par avance de ton aide. John.
  25. Essaye Affichage Point de vue Haut pour voir si ca te change quelque chose ou bien essaye de faire une rotation des axes xyz pour qu'il soit normal. Pour l'élevation, si tu n'a que des polylignes dans ton dessin, pas de besoin d'utiliser la commande déplacer, sélectionne les toutes et dans la colonne Propriété Case Elevation met tout à zéro sinon tu as encore sur le net des utilitaires pour convertir un dessin dxf en dwg version 2000 et plus notamment wdgps que je te recommande fortement. John.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité