-
Compteur de contenus
26 -
Inscription
-
Dernière visite
Contact Methods
-
Website URL
http://
sosun38's Achievements
Newbie (1/14)
0
Réputation sur la communauté
-
MERCI BEAUCOUP...gile !!!!!!! c'est d'enfer !!!!!!!!!!!!!!!! sosun38.
-
Bonjour, Volià, est-il possible de faire par un programme lisp la procédure suivante? Ce qu'on a: _deux polylignes P et Q qui peuvent-être des 2D, 3D. _la polyligne P a pour sommets P1,P2,P3.....P(n-1),Pn. _la polyligne Q a pour sommets Q1,Q2,Q3.....Qn-1),Qn. _avec P1(Xp1,Yp1,Zp1) et Q1(xq1,Yq1,Zq1)......Pn(Xpn,Ypn,Zpn) et Qn(Xqn,Yqn,Zqn). Ce qu"on doit obtenir: _une polyligne M de sommets M1,M2,M3.......Mn. _avec le sommet M1 comme milieu du segment [P1Q1]. _et si les polylignes P et Q sont des 2D alors la polyligne M serra une poly2D. _et si les polylignes P et Q sont des 3D alors la polyligne M serra une poly3D. Le programme commence par la selection des deux polylignes et fini par le tracé de la 3°polyligne tout en conservant les deux polylignes et en ayant le même sens que les deux. Merci bien d'avance. [Edité le 4/6/2008 par sosun38]
-
Merci à tous les deux. La réponse de gile vas très bien. à+ sosun38
-
merci Gile. je test ceci des Lundi. Sosun38.
-
Bonjour, j'aurrais voulu savoir si l'on peut utiliser le nom du calque dans lequel se trouve des polylignes sectionnés pour nomer automatiquement le fichier (.txt) d'exportation des sommets d'une polyligne (avec la routine: SOMPOLY.LSP) par le nom de ce calque même. Exemple: la polyligne selectionnée se trouve dans le calque " poly-01", le fichier txt des sommets de la polyligne doit etre automatiquement nommé " poly-01.txt". Actuellement avec sompoly il faut rentrer le nom du fichier au clavier. Sachant que si j'ai p de polylignes selectionnées dans n calques; il faudrait que l'exportation se fasse automatiquement dans n fichiers .txt ( un fichier par calque). Chaque fichier prennant le nom du calque dont les polylignes sont issues. Merci d'avance. sosun38. Ps: le lisp sompoly. ******************************************************************************** ; SOMPOLY.LSP ; ------------------------------------------------------ ; determination des points des sommets ; d'une polyligne ; ---------------------------------------------------- (defun c:sompoly () (setq poly (entsel "\nSelectionnez la polyligne: ")) (setq poly (car poly)) (setq cl 1) (setq fic (getstring "\nNom du fichier (l'extention TXT sera ajoutee automatiquement): ")) (setq f (open (strcat fic ".txt") "w")) (setq ent (entnext poly)) (while (/= "SEQEND" (cdr (assoc 0 (entget ent)))) (setq som (cdr (assoc 10 (entget ent)))) (setq som_x (rtos (car som) 2 (getvar "luprec"))) (setq som_y (rtos (cadr som) 2 (getvar "luprec"))) (setq som_z (rtos (caddr som) 2 (getvar "luprec"))) (princ (list som_x som_y som_z ) f) (princ "\n" f) (terpri) (princ "SOMMET" ) (princ CL ) (princ " " ) (princ som ) (princ "\n") (setq ent (entnext ent)) (setq cl (+ cl 1)) ) (close f) (princ) ) (princ "\n==> SOMPOLY") (princ) ********************************************************************************
-
:( :( Salut, merci pour ta réponse...mais pour moi c'est pour une utilistion très occasionnelle et pour le challenge aussi. Mais c'est pas grave je le met de côté pour moi quand je serrais programmer en lisp. Sosun38.... :yltype: :) :) :)
-
Bonjour, L'objectif est de créer une routine lisp capable en partant d'un dessin contenant des polylignes (2D et/ou 3D) d'implanter des points en 3D (X,Y,Z) selon une grille choisie par l'utilisateur. Etapes à respecter si possible: *1: Renseignement. le lisp doit renseigner du Zmin et du Zmax du dessin. *2: Création de la grille. le lisp doit demander à l'utilisateur: -"choisir la résolution de la grille en unité de dessin ( X unité x Y unité)". -"choisir le centre de la grille" (avec la possibilité par clavier ou par la souris). -"choisir l'altitude Z de la grille". *3: Choix des polylignes à traiter. le lisp doit demander à l'utilisateur: -"sélectionner les polylignes". *4: Projection des sommets des polylignes choisies. le lisp doit ramener tous ces sommets en un même Z=Z de la grille. *5: Construction d'un point par interpolation. Le lisp doit créer un maillage avec les sommets projetés sur la grille; obtenant ainsi des triangles. Chaque point (intersection des lignes de la grille) de la grille construite en (2) est ainsi compris dans un de ces triangles. Prenons comme point de construction de la grille: G(Xg,Yg,Zg =Zgrille). Soit le triangle construit par les points: Ap(Xa,Ya,Za=Zgrille) projeté du sommet A(Xa,Ya,Za) sur la grille. Bp(Xb,Yb,Zb=Zgrille) projeté du sommet B(Xb,Yb,Zb) sur la grille. Cp(Xc,Yc,Zc=Zgrille) projeté du sommet C(Xc,Yc,Zc) sur la grille. G est à l'intérieur de ce triangle. Le lisp doit à partir d'ici reconstruire le triangle ApBpCp en un triangle ABC avec les Z correspondants. Enfin il doit implanter le point Gi(Xg,Yg,Zg interpolée) qui devrait être à l'intérieur du triangle ABC avec une altitude Z calculée par interpolation. Ainsi le point Gi (Xg,Yg,Zg interpolée) construit a pour projection sur la grille le point G(Xg,Yg,Zg grille). Le lisp doit faire ceci pour tous les sommets des polylignes sélectionnées. *6: finalisation du dessin. le lisp doit demander à l'utilisateur: -"voulez-vous conserver les polylignes sélectionnées". si "oui" : garder les polylignes sélectionnées et implanter tous les points Gi. si "non" : supprimer les polylignes sélectionnées et implanter tous les points Gi. Si possibles au lancement du lisp avoir ceci: "choisir une action: Renseignement ou Grille." Au final la grille initiale est redessinée avec un Z interpolé pour chacun de ses points de construction. Bon courage les as.... ....Merci. sosun38. :) :D :D :P :P :) :) [Edité le 19/2/2008 par sosun38] [Edité le 19/2/2008 par sosun38]
-
Merci... ça fonctionne correctement. sosun38
-
PARFAIT...... Merci mille fois. sosun38
-
PARFAIT.... la solution 1: marche tres bien. la solution 2: j'utilise déjà R_pline qui fonctionne tres bien , mais j'aurais voulu pouvoir selectionner toutes les polylignes en même temps... Merci encore..... sosun38
-
Je ne suis toujours pas très sur de comprendre, mais s'il s'agit de redessiner les polylignes sélectionnées avec des sommets equidistants, tu peux esayer ça : EDIT : code corrigé (vl-load-com) (defun c:test (/ di len nb plst)[Edité le 18/12/2007 par (gile)] Salut Gile, [u]PROBLEME 1:[/u] je te sollicite pour ton lisp "test". Est-ce que tu peux le perfectionner: c'est-à-dire que si dans la sélection des polylignes il y en a pour lesquelles le dernier segment (distance entre le dernier et avant dernier sommet) est inférieure à la longueur du segment choisi (sommets equidistants), alors le dernier sommet est supprimé lors du redessinage des polylignes. [u]PROBLEME 2:[/u] Est-ce que par une lisp on peut mettre toutes les lignes, polylignes, polylignes 3d d'un dessin dans le même sens de parcours ? Merci. sosun38 [Edité le 7/2/2008 par sosun38]
-
Salut Giles.. Oui il faut qu'au final j'obtienne des polylignes 3D. Chaque sommets d'une polyligne d'élévation "e" prenne comme altitude Z=e. Et j'ai souvent près de 400 polylignes. En fait j'ai des courbes de niveaux avec pour altitudes des élévations. Moi je voudrais via ce lisp les passer en courbes de niveaux 3D. En faisant une selection de toutes les polylignes (courbes de niveaux) à la fois. Merci. sosun38
-
Bonjour, Est-il possible par une routine lisp de selectionner toute les polylignes d'un dessin autocad et de transformer l'élévation de chaque polyligne en une altitude Z qui serrait appliquée à tous les sommets de la polyligne. C'est à dire si je prend par exemples 4 polylignes: P1 avec comme élévation 250 et comme sommets a1(X1,Y1); a2(X2,Y2); a3(X3,Y3) P2 avec comme élévation 450 et comme sommets b1(X1,Y1); b2(X2,Y2); b3(X3,Y3) P3 avec comme élévation 300 et comme sommets c1(X1,Y1); c2(X2,Y2); c3(X3,Y3) P4 avec comme élévation 250 et comme sommets d1(X1,Y1); d2(X2,Y2); d3(X3,Y3) On aurrait via le lisp 4 polylignes 3D: P1 avec comme sommets a1(X1,Y1, Z=250); a2(X2,Y2, Z=250); a3(X3,Y3, Z=250) P2 avec comme sommets b1(X1,Y1, Z=450); b2(X2,Y2, Z=450); b3(X3,Y3, Z=450) P3 avec comme sommets c1(X1,Y1, Z=300); c2(X2,Y2, Z=300); c3(X3,Y3, Z=300) P4 avec comme sommets d1(X1,Y1, Z=250); d2(X2,Y2, Z=250); d3(X3,Y3, Z=250) Attention toutes les polylignes doivent rester indépendantes. Merci d'avance pour le lisp. sosun38.
-
salut, merci Arcasdk. merci Gile, mais ton lien ne fonctionne pas: "page non trouvée, retour à l'accueil". Bonne soirée. Sosun38.