Aller au contenu

Sélectionner une ligne de cotes en une seule manip ?


Messages recommandés

Posté(e)

Bonjour Forum !

 

Il m’arrive de vouloir bouger une ligne de cotes toute entière, sans avoir à sélectionner chaque

cote. ArchiCad fait ça très bien, mais, à ma connaissance, pas AutoCad.

 

Alors je me dis que peut-être un crack du LISP saurait écrire une routine qui sélectionne une ligne de cote entière du moment qu’on a cliqué sur une des cotes (je ne saurais pas le faire moi-même) ? Ça rendrait sûrement service à plein de gens.

 

Avis aux bonnes volontés !

 

Merci.

 

Posté(e)

Oui, mais avec étirer, on sélectionne toujours des tas de trucs auxquels on ne veut pas toucher, et qu'il faut alors déselectionner, etc... Pas super-pratique quand les plans sont très chargés...

Posté(e)

Merci pour vos réponses.

 

 

@ Fraid : en fait je veux déplacer non pas une cote mais une ligne de cotes d'un coup. A moins que ta manip le permette, mais alors je n'ai pas réussi.

 

 

@ Formabois : je n'utilise pas les contraintes dimensionnelles...

Posté(e)

Alors excuse... mais je n'ai pas compris ta demande

- Veux-tu repositionner la ligne de cote ?

- Modifier la ligne de cote avec ses 2 lignes d'attache ?

- Modifier les dimensions de l'objet ?

- Déplacer plusieurs lignes de cote en même temps ?

Peux-tu préciser un peu ...

Studio Gfilm - Agence de communication par l'image

 

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"

Posté(e)

Merci Bryce, c'est exactement ça : cliquer sur une cote et obtenir la possibilité de déplacer toutes les cotes "colinéaires", à sa droite et à sa gauche.

L'idée est de ne pas avoir à saisir ces cotes par une fenêtre, comme sur la vidéo, pour éviter d'avoir à déselectionner les entités qu'on ne souhaite pas déplacer.

 

J'espère m'être mieux expliqué ce coup-ci.

Posté(e)

...hum hum : pas de réponses ?

 

Je résume ma question : je rêve d'un LISP qui permette, en cliquant sur une cote, de sélectionner toutes les cotes qui la prolongent à gauche et à droite (ou en haut et en bas si la cote est verticale). Mais je ne sais pas l'écrire.

 

Donc si un crack en LISP pouvait m'aider, ce serait cool !

 

Merci !

 

 

Posté(e)

Bonjour,

 

j'avais fait ça vite fait, pas encore eu le temps de le perfectionner :

 

(defun c:ds(/ ent1 ent2 pt1 pt2 pt3 pt4 ucmdecho uosnapcoord)

(command "._undo" "_group")
(setq ucmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq uosnapcoord (getvar "osnapcoord"))
(setvar "osnapcoord" 1)

(while
	(not
		(and
			(setq ent1 (entsel "\nChoisissez la première cote de la chaîne :" ) )
			(eq "DIMENSION" (cdr (assoc 0 (setq ent1 (entget (car ent1))) ) ) )
		);and
	);not
	(princ "\nL'objet sélectionné n'est pas une cote !")
);while

(while
	(not
		(and
			(setq ent2 (entsel "\nChoisissez la dernière cote de la chaîne :" ) )
			(eq "DIMENSION" (cdr (assoc 0 (setq ent2 (entget (car ent2))) ) ) )
		);and
	);not
	(princ "\nL'objet sélectionné n'est pas une cote !")
);while

(setq pt1 (cdr (assoc 10 ent1)))
(setq pt2 (cdr (assoc 10 ent2)))

(setq pt1 (trans (polar pt1 (+ (angle pt1 pt2) PI (/ PI 4)) 0.1) 0 1) )
(setq pt2 (trans (polar pt2 (- (angle pt1 pt2) (/ PI 4)) 0.1) 0 1) )
(setq pt3 (polar pt1 (+ (angle pt1 pt2) (/ PI 2)) 0.2) )
(setq pt4 (polar pt2 (+ (angle pt1 pt2) (/ PI 2)) 0.2) )	

(command "_.stretch" (ssget "_cp" (list pt1 pt2 pt4 pt3) '( (0 . "DIMENSION") (-4 . "")) ) "" pt1 pause)

(setvar "osnapcoord" uosnapcoord)
(command "._undo" "_end")
(setvar "cmdecho" ucmdecho)
(princ)

);defun

 

La commande à taper est DS.

Il faut cliquer sur 2 cotes : la première et la dernière de la chaîne à déplacer, puis cliquer un point pour la nouvelle position.

 

La commande ne prend en compte que les cotes linéaires et alignées.

 

 

 

[Edité le 14/2/2011 par bryce]

Posté(e)

Merci Bryce !

 

Ta routine marche bien, mais elle beugue (bugue ? bug ?) sur les cotes associatives.

 

Y a-t-il moyen de les désassocier avant de les déplacer ?

(je sais que certains se diront : à quoi bon utiliser des cotes associatives si c'est pour les désassocier, et ils n'auront pas tort. Mais en fait l'associativité ne me sert pas. Quand je modifie des entités cotées, c'est dans 90% des cas par ETIRER,)

 

Deux autres questions/remarques :

 

– je cherche avant tout un mode de sélection d'un ensemble de cotes. Pour ce qui est de les déplacer, la commande DEPLACER me va bien, parce qu'elle permet de tâtonner, donc la 2ème partie de ta routine (celle où on spécifie la nouvelle position des cotes) ne me rend pas spécialement service. D'autant qu'une fois exécutée, on ne peut pas récupérer le jeu de sélection pour la commande DEPLACER, par exemple.

 

– pour simplifier la manip, ta routine pourrait-elle sélectionner toutes les cotes colinéaires plutôt que les 2 cotes extrêmes ? (notamment parce qu'il m'arrive d'effacer les cotes des cloisons par exemple, ce qui interrompt la continuité de cotes à la queue-leu-leu entre les 2 cotes extrêmes).

 

J'espère avoir été clair et que ça ne demande pas trop de boulot. En tous cas, ça devrait rendre service à tous les pôv architectes qui galèrent pour finaliser leurs plans.

 

Merci !!!

Posté(e)

Qu'est-ce que tu appelles des cotes associatives exactement ?

C'est quoi le bug que tu rencontres ?

Parce que toutes les cotes sur lesquelles j'ai testé étaient associatives (DIMASSOC = 2)... :casstet:

 

 

Pour ce qui est de déplacer les cotes, je ne vois pas vraiment l'intérêt. C'est même plutôt "cracra" comme manip à mon avis... :P

Si c'est pour ce que je pense, ce serait mieux de cocher "Lignes d'attache de longueur fixe" dans l'onglet Lignes du style de cote, et d'utiliser Étirer plutôt que Déplacer. ;)

Cela dit, si tu y tiens absolument je peux modifier le lisp pour qu'il déplace les cotes.

 

En attendant, j'ai modifié le lisp pour que le repositionnement des cotes se fasse en temps réel (plutôt que de cliquer la nouvelle position et de voir le résultat ensuite).

 

 

Pour la sélection de toutes les cotes linéaires, c'est une amélioration que je voudrais apporter, mais pour l'instant je ne sais pas encore comment je pourrais faire, et je n'ai pas encore eu le temps de me pencher dessus...

 

 

Edit:

D'autant qu'une fois exécutée, on ne peut pas récupérer le jeu de sélection pour la commande DEPLACER, par exemple.

Après avoir utilisé la routine, tu peux utiliser la commande Déplacer et répondre P à l'invite Choix des objets... ;)

 

 

[Edité le 14/2/2011 par bryce]

 

[Edité le 14/2/2011 par bryce]

Posté(e)

Après revérification, voilà ce qui se passe :

– quand je lance la routine, les cotes se déplacent bien. En revanche la longueur de certaines se modifie (elles s'allongent, voire se déplacent parallèlement à la ligne de cotes) ?!

– les cotes sur lesquelles j'ai agi ne sont pas associatives (c'est le comportement ci-dessus qui m'avait fait penser qu'elles l'étaient)

Je peux envoyer un fichier si tu veux.

 

Quant au déplacement des cotes, je sais bien que ce n'est pas très pur, mais quand un plan évolue et s'enrichit, on est souvent amené à le faire.

Quand le plan devient très chargé, la commande ETIRER devient fastidieuse car il faut sélectionner puis déselectionner avant de déplacer.

 

Quant à la récupération du jeu de sélection précédent : mea culpa, j'avais dû mal vérifier.

Cela dit, j'ai essayé sur un plan : seules les cotes horizontales sélectionnées se déplacent, mais le jeu de sélection contient aussi les cotes verticales qui intersectent les horizontales.

 

Merci pour ton aide anyway... !

Posté(e)

Si tu peux envoyer un fichier ce serait intéressant, j'aimerais bien voir les problèmes dont tu parles.

 

pour simplifier la manip, ta routine pourrait-elle sélectionner toutes les cotes colinéaires plutôt que les 2 cotes extrêmes ? (notamment parce qu'il m'arrive d'effacer les cotes des cloisons par exemple, ce qui interrompt la continuité de cotes à la queue-leu-leu entre les 2 cotes extrêmes).

Il peut y avoir un "trou" entre la première cote sélectionnée et la 2e, ça doit marcher quand même. ;)

 

 

 

[Edité le 15/2/2011 par bryce]

Posté(e)

Ok, je vois le souci...

Les cotes se comportent bizarrement sur ton dessin parce que les lignes d'attache ont une longueur nulle.

Les points de définition des cotes (extrémités des lignes d'attaches) sont confondus avec les extrémités des lignes de cotes.

 

Comme le lisp fait un polygone de capture, il attrape les points de définition des cotes...

 

Il y a sans doute un moyen bien plus élégant de faire, mais mon niveau en lisp n'est pas suffisant pour le moment. :(

  • 2 semaines après...
Posté(e)

Merci pour ta réponse.

 

Mon style de cotes s'appelle "COT-FIX" parce que les lignes d'attache ont une longueur réglée une fois pour toutes, mais les cotes bougent (aussi bien leur position que leur longueur, donc la valeur numérique qui s'affiche)...

... ou alors je ne comprends pas ta remarque.

  • 4 semaines après...
Posté(e)

Bonjour Forum !

 

Je relance ce sujet qui est en panne : je voudrais, en cliquant sur une cote, sélectionner toutes les cotes qui lui sont colinéaires (que ces cotes soient à touche-touche ou séparées par un vide, comme, par exemple, de part et d’autre d’une cloison non cotée).

 

Problème : je ne sais pas écrire ce LISP. Help !

 

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é