Aller au contenu

Messages recommandés

Posté(e)

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 à continuer

2) prendre les infos sur calque, type de ligne etc..

3) conserver les infos du point de cette ligne

4) rendre le calque courant

5) dessiner les lignes avec command "_line"

6) à la fin de la commande joindre les 2 extrémités

 

Avez-vous une autre solution ?

Invité Patrick
Posté(e)

Clic droit+ ajouter la sélection?

Posté(e)

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 code

Ensuite 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))))

Posté(e)

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)

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.

Posté(e)

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 2011

Une variable à modifier chez moi ?

Posté(e)

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

Posté(e)
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)

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... ) tongue.gif

Posté(e)

Oui patrick

le plus simple est de créer une ligne en partant de l'extrémité d'une autre puis de JOINDRE cette dernière

Mais 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 suite

Je 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)?

Posté(e)

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
Posté(e)
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

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é