Marc Blancher Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Salut,je sais pas s'il existe une astuce, un lisp ou autre chose qui permettrait de transformer des lignes en polylignes 3D merciA+
didier Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 coucou, du côté "astuce", j'ai rien en magasin,mais il me semble aisé de Lisper. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
lordbyron Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Si ce sont des droites, repasse par dessus avec une polyligne 3d, et ensuite tu suprime les lignes qui ce trouve dessous, c'est comme ca que je procède. Pour des courbes, pas de solution à te proposer... ;)
thierry.garré Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Salut , n'as tu pas Covadis ? Si oui, il existe une fonction dans COVEDITIONPOLYLIGNESlignes,arc,cercles>poly sinon en autocad pur , j'ai rien non plus Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
yalta Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Bonjour, Il y a aussi la fonction [surligneur]PEDIT[/surligneur] à taper sur la ligne de commande - tu sélectionne une de tes lignes - clic droit ==> JOINDRE - tu sélectionne l'ensemble de tes lignes ==> et...OK Voilà ;) ;)
yalta Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 [surligneur]STOP JE N'AI PAS LU QUE C'ETAIT POUR DE LA 3D PARDON[/surligneur] :cool: :cool:
thierry.garré Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Et ben oui, pareil j'ai dis une co....rie ma fonction Covadis crée une polyligne 2D............ Désolé......... Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
Marc Blancher Posté(e) le 1 février 2006 Auteur Posté(e) le 1 février 2006 Tous les outils concernant les polylignes sont pour les polylignes 2D, rien pour la 3D. Dans covadis, cela fonctionne mais toutes mes lignes deviennent des poly 2D. J'ai rien trouvé non plus du côté lisp. Tant pis, je vais tenté de me bricoler ça avec du vba. Sinon pour ce qui ait de repasser dessus, ça marche mais comme là j'avais 20km à faire avec un tronçon tous les 100m. :(
kallain Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Dans covadis, cela fonctionne mais toutes mes lignes deviennent des poly 2D. Là tu m'étonnes Blancherm :casstet: :-Covadis Edition-Polylignes-Polylignes 2D - 3D ;)
(gile) Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Salut, Un petit LISP vite fait, il faut sélectionner successivement chaque ligne une par une (pour un contrôle de "jointivité" des segments) et taper "Enter" (ou clic droit) pour terminer la commande. (defun c:Line->3dPoly (/ v1 v2 l1 l2 pts) (setq v1 (getvar "osmode") v2 (getvar "cmdecho") ) (while (not (setq l1 (car (entsel "\nSélectionnez le premier segment: "))) ) ) (cond ((= (cdr (assoc 0 (entget l1))) "LINE") (setq pts (list (cdr (assoc 11 (entget l1))) (cdr (assoc 10 (entget l1))) ) ) (command "_undo" "_begin") (while (setq l2 (car (entsel "\nSélectionnez le segment suivant ou : "))) (if (= (cdr (assoc 0 (entget l1))) "LINE") (cond ((equal (cdr (assoc 10 (entget l2))) (car pts)) (setq pts (cons (cdr (assoc 11 (entget l2))) pts)) (entdel l1) (setq l1 l2) ) ((equal (cdr (assoc 11 (entget l2))) (car pts)) (setq pts (cons (cdr (assoc 10 (entget l2))) pts)) (entdel l1) (setq l1 l2) ) ((equal (cdr (assoc 11 (entget l2))) (car (reverse pts))) (setq pts (reverse (cons (cdr (assoc 10 (entget l2))) (reverse pts)))) (entdel l1) (setq l1 l2) ) ((equal (cdr (assoc 10 (entget l2))) (car (reverse pts))) (setq pts (reverse (cons (cdr (assoc 11 (entget l2))) (reverse pts)))) (entdel l1) (setq l1 l2) ) (T (alert "Segment non jointif")) ) (alert "L'objet sélectionné n'est pas une ligne") ) ) (setvar "osmode" 0) (setvar "cmdecho" 0) (entdel l1) (command "_3dpoly") (mapcar 'command pts) (command "") (command "_undo" "_end") (setvar "osmode" v1) (setvar "cmdecho" v2) ) (T (alert "L'objet sélectionné n'est pas une ligne")) ) (princ) ) [Edité le 1/2/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Marc Blancher Posté(e) le 1 février 2006 Auteur Posté(e) le 1 février 2006 je n'ai pas covadis sous la main, mais je vais regarder ça de plus prêt demain, mais je reste septique car une poly2D a une élévation générale. Merci gile pour ton lisp, je vais tester ça demain et je te tiens au courant. A+
(gile) Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 J'ai modifié le LISP pour qu'il fonctionne même si les lignes n'ont pas été dans le même sens (départ de l'une = fin de la précédente) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
kallain Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Là tu m'étonnes Blancherm :-Covadis Edition-Polylignes-Polylignes 2D - 3D C'est vrai que tu obtiens des poly 3D avec le Z à 0 Mais dans ta question tu ne précises pas que tes lignes sont en 3D Quoique, j'aurais pu deviner que si tu as besoin de poly 3D............ ;)
(gile) Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Voici une nouvelle version au fonctionnement plus proche de _PEDIT. Après la sélection du premier segment (pas forcément à une extrémité de la future polyligne 3D), il est demandé à l'utilisateur de sélectionner toutes les autres lignes à ajouter. Tous les segments jointifs sont intégrés à la polyligne 3D. Nouvelle version (accepte une ligne ou une polyligne 3D comme entité de départ) (defun c:Line2Poly (/ v1 v2 ent pts pt ss cnt e_lst l_lst sub_lst) (setq v1 (getvar "osmode") v2 (getvar "cmdecho") ) (prompt "\nSélectionnez une ligne ou une polyligne 3D") (setq ent (ssname (ssget "_:S" '((0 . "LINE,POLYLINE"))) 0)) (cond ((= (cdr (assoc 0 (entget ent))) "LINE") (setq pts (list (cdr (assoc 11 (entget ent))) (cdr (assoc 10 (entget ent))) ) ) ) ((= (cdr (assoc 0 (entget ent))) "POLYLINE") (while (setq pt (cdr (assoc 10 (entget (entnext ent))))) (setq ent (entnext ent) pts (cons pt pts) ) ) (setq ent (cdr (assoc -2 (entget (entnext ent))))) ) (T (prompt "Erreur: Entité non valide") (exit)) ) (prompt "\nSélectionnez les lignes à transformer en polyligne 3D" ) (setq ss (ssget '((0 . "LINE"))) cnt 0 ) (repeat (sslength ss) (setq e_lst (cons (ssname ss cnt) e_lst)) (setq cnt (1+ cnt)) ) (setq l_lst (mapcar 'entget (vl-remove ent e_lst)) e_lst nil ) (while (setq sub_lst (vl-member-if '(lambda (x) (or (equal (cdr (assoc 10 x)) (car pts)) (equal (cdr (assoc 11 x)) (car pts)) (equal (cdr (assoc 10 x)) (car (reverse pts))) (equal (cdr (assoc 11 x)) (car (reverse pts))) ) ) l_lst ) ) (cond ((equal (cdr (assoc 10 (car sub_lst))) (car pts)) (setq pts (cons (cdr (assoc 11 (car sub_lst))) pts)) ) ((equal (cdr (assoc 11 (car sub_lst))) (car pts)) (setq pts (cons (cdr (assoc 10 (car sub_lst))) pts)) ) ((equal (cdr (assoc 11 (car sub_lst))) (car (reverse pts))) (setq pts (reverse (cons (cdr (assoc 10 (car sub_lst))) (reverse pts)) ) ) ) ((equal (cdr (assoc 10 (car sub_lst))) (car (reverse pts))) (setq pts (reverse (cons (cdr (assoc 11 (car sub_lst))) (reverse pts)) ) ) ) ) (setq l_lst (vl-remove (car sub_lst) l_lst) e_lst (cons (cdr (assoc -1 (car sub_lst))) e_lst) ) ) (setq cnt (length e_lst) e_lst (cons ent e_lst) ) (command "_undo" "_begin") (setvar "osmode" 0) (setvar "cmdecho" 0) (command "_erase") (mapcar 'command e_lst) (command "") (command "_3dpoly") (mapcar 'command pts) (command "") (command "_undo" "_end") (setvar "osmode" v1) (setvar "cmdecho" v2) (prompt (strcat "\n" (itoa cnt) " objets on été ajoutés à la polyligne 3D." ) ) (princ) ) [Edité le 1/2/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Marc Blancher Posté(e) le 1 février 2006 Auteur Posté(e) le 1 février 2006 Je viens de tester ton lisp gile, ça marche pas c'est quoi cette histoire !!!! non je rigole, ça marche du tonerre. Je te dis un grand merci, et je crois que tu devrais la mettre en téléchargement celle là, elle est très utile. A+
bonuscad Posté(e) le 1 février 2006 Posté(e) le 1 février 2006 Super, Ca me rappelle que j'avais vu sur un forum US une fonction interressante pour faire une sélection "bout à bout", c'est à dire que tu sélectionnais par exemple la 1ère ligne et le programme se chargait de faire la sélection comme si c'était un polyligne jointe. Couplé a ton code, cela pourrait être d'enfer :cool: J'essayes de retrouver les liens si ça t'interresse. Voilà c'est ici, la fonction : SSEnd2End [Edité le 2/2/2006 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lordbyron Posté(e) le 2 février 2006 Posté(e) le 2 février 2006 Pas moyen d'integrer autre chose que des lignes? Par exemple des arcs :( ??
(gile) Posté(e) le 3 février 2006 Posté(e) le 3 février 2006 Salut, J'ai posté ici un LISP plus abouti. Il a un fonctionnement similaire à l'option Joindre de la commande PEDIT. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant