ASTERIXII Posté(e) le 9 juin 2013 Posté(e) le 9 juin 2013 Bonjour, J'ai pas trouvé de commande dans autocad pour continuer une ligne déjà dessinée (pas la dernière ligne, avec valider depuis la commande ligne) Je voudrais reprendre une ligne depuis son extrémité, et la continuer (même style, même calque...)Comme la commande MODIFLONG (option DY) mais pouvoir changer de direction en plus (chose que MODIFLONG ne permet pas)Le but n'est pas de redessiner simplement une ligne au bout d'une autre, il faut qu'elle soit jointe ! La seul solution pour moi, serait en lisp: 1) Sélectionner l'extrémité de la ligne à continuer2) prendre les infos sur calque, type de ligne etc..3) conserver les infos du point de cette ligne4) rendre le calque courant5) dessiner les lignes avec command "_line"6) à la fin de la commande joindre les 2 extrémités Avez-vous une autre solution ?
ASTERIXII Posté(e) le 9 juin 2013 Auteur Posté(e) le 9 juin 2013 Non Patrick, car les lignes ne sont pas jointe Voila le début de mon lisp:(defun essai () (setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq ENT1 (nentselp pt)) (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (command "-calque" "ch" SNC_CAL "") (command "_line" pt) (setq ENT2 (nentselp pt)) );fin defun le problème est qu'il faudrait une pause pour la commande _line avant de continuer le codeEnsuite récupérer les entités au point pt et les joindre Ok j'ai la solution pour la pause ((lambda () (command "_line" pt) (while (< 0 (getvar 'cmdactive)) (command pause))))
ASTERIXII Posté(e) le 9 juin 2013 Auteur Posté(e) le 9 juin 2013 Ok c'est bon, voila le code (defun essai () (setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq ENT1 (nentselp pt)) (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (command "-calque" "ch" SNC_CAL "") ((lambda () (command "_line" pt) (while (< 0 (getvar 'cmdactive)) (command pause)))) (setq ENT2 (nentselp pt)) (command "_join" ENT1 ENT2 "") );fin defun
Invité Patrick Posté(e) le 9 juin 2013 Posté(e) le 9 juin 2013 C'est pas pareil que clic doit+ajouter la sélection? Tu commences une ligne à partir de la fin d'une autre, elle sont donc jointes avec les mêmes propriétés.
ASTERIXII Posté(e) le 9 juin 2013 Auteur Posté(e) le 9 juin 2013 Non Patrick, les lignes ne sont pas jointes, elles ne forment pas une seul ligne.Elles ont bien les mêmes propriétés, calque, mais j'ai 2 lignes Je suis sur Autocad MEP 2011Une variable à modifier chez moi ?
bonuscad Posté(e) le 10 juin 2013 Posté(e) le 10 juin 2013 Y a un truc qui m'échappe! mais pouvoir changer de direction en plus Et tu utilise JOINDRE...Tu peux pas joindre une ligne ayant une direction différente de la source. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bryce Posté(e) le 10 juin 2013 Posté(e) le 10 juin 2013 Bonjour, Si, on peut, mais le résultat est une polyligne et non une ligne... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
bonuscad Posté(e) le 10 juin 2013 Posté(e) le 10 juin 2013 Si, on peut, mais le résultat est une polyligne et non une ligne... Sur ma 2011 la commande JOINDRE de me crée pas une polyligne, cela reste 2 lignes distinctes!Je parle bien bien de la commande "joindre", et non de la commande "pedit" avec l'option "joindre"... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Invité Patrick Posté(e) le 10 juin 2013 Posté(e) le 10 juin 2013 Avec AutoCAD 2013, deux lignes jointes par la commande JOINDRE forment une polyligne. Mais si on revient à la demande initiale, le plus simple est de créer une ligne en partant de l'extrémité d'une autre puis de JOINDRE cette dernière avec cette avant dernière et le cas échéant de procéder ainsi avec l'antépénultième. (Yes!!! Ca y est! Je l'ai placé! Des mois d'effort... )
ASTERIXII Posté(e) le 11 juin 2013 Auteur Posté(e) le 11 juin 2013 Oui patrickle plus simple est de créer une ligne en partant de l'extrémité d'une autre puis de JOINDRE cette dernièreMais je comprends pas que dans autocad cette fonction n'existe pas.Car pour allé plus loin, dans mon cas les lignes sont des lignes avec du texte. Et si il n'y à pas de "jonction", c'est pas trés "beau".Enfin, mon lisp fonctionne bien.Il y à juste un truc que je ne comprends pas bien:(setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq ENT1 (nentselp pt)) (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (command "-calque" "ch" SNC_CAL "") (command "_line" pt) (setq ENT2 (nentselp pt)) pt est l'extremité de la ligne à continuer, et ENT1 "l'objet"Ensuite je trace une ligne, voir plusieur à la suiteJe recherche un objet au point pt avec nentselp, et la il trouve de suite le dernier objet, soit la nouvelle ligne.Pourquoi nentselp (ENT2) n'est pas "retombé" sur la premiere ligne comme (ENT1)?
La Lozère Posté(e) le 11 juin 2013 Posté(e) le 11 juin 2013 Perso, je ne comprend pas bien..... Une ligne reste une ligne, c'est à dire... Pas de cassures, uniquement des éléments droits. :blink: A moins que ton but est de reprendre une ligne pour la continuer dans le prolongement de celle-ci, mais alors il suffit, comme tu l'as dis, d'utiliser MODIFLONG. Pour avoir une cassure, il faut une polyligne.En tout cas, on se rapproche de ce bout de code qui marche très bien pour une polyligne. Je vais suivre ça avec attention. A plus. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
ASTERIXII Posté(e) le 16 juin 2013 Auteur Posté(e) le 16 juin 2013 A moins que ton but est de reprendre une ligne pour la continuer dans le prolongement de celle-ci, mais alors il suffit, comme tu l'as dis, d'utiliser MODIFLONG Oui, mais avec MODIFLONG tu peux uniquement continuer dans le même sens (// au x par exemple), mais si tu veux toujours continuer, mais plus loin changer de direction (remonter l'axe y) c'est pas possible Je ne cherche pas à avoir une ligne continue lorsque que je change de direction comme une polyligne Mon but, reprendre une ligne, la continuer dans le même axe, puis plus loin pouvoir changer de direction
bonuscad Posté(e) le 17 juin 2013 Posté(e) le 17 juin 2013 Pourquoi ne pas utiliser simplement SNAPANG et ORTHOMODE?Exemple: ((lambda ( / js dxf_ent snapold orthold flag) (while (not (setq js (ssget "_+.:E:S" '((0 . "LINE")))))) (setq dxf_ent (entget (ssname js 0)) snapold (getvar "SNAPANG") orthold (getvar "ORTHOMODE")) (setvar "SNAPANG" (angle (trans (cdr (assoc 10 dxf_ent)) 0 1) (trans (cdr (assoc 11 dxf_ent)) 0 1))) (setvar "ORTHOMODE" 1) (command "_.line" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setvar "SNAPANG" snapold) (setvar "ORTHOMODE" orthold) (prin1) )) Après on pourrait peut être sophistiquer pour joindre la 1ere ligne (si une extrémité est commune et l'angle équivalent à pi près)Pour les accroches objets, mettre en place un système de filtre .X .Y (.Z)? pour garder les orientation à pi/2.Peut être à creuser... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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