Aller au contenu

Mettre le point inferieur gauche d'un schéma en 0,0,0


vins13007

Messages recommandés

Bonjour,

Je suis désolé de vous demander ça car c'est pas grand chose mais j'y arrive pas :/. J'ai 268 schémas à passer en 0,0,0 pour pouvoir ajouter un petit texte au même endroit sur tous les schémas.

 

En gros je pensais :

- Selectionner tout le schéma qui se trouve dans objet

- Le deplacer a partir du coin inferieur gauche en 0,0,0

- Ajouter en DDTEXT un texte avec un certain calque (déjà existant sur le schéma) à un endroit précis.

 

En gros sur l'image ci-jointe, voici une partie du cartouche qui part d'en bas à gauche et il faut rajouter le 3 dans la grille de validité.

post-63504-0-62130900-1465822716_thumb.jpg

 

Je vous remercie encore pour votre aide, vous êtes formidable :)

Cordialement,

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je ne comprends pas bien,

 

Tu veux savoir commencer déplacer tous les objets (de tous les fichiers) depuis le coin inférieur gauche à 0,0,0 ?

Tu vas utiliser un script ensuite ? ou autre chose ?

Ce script insérera ton texte ou tu as besoin d'aide pour insérer le texte ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Alors je ne sais ni déplacer le schéma automatiquement du coin inferieur gauche au point 0,0,0 ni ajouter le texte à un endroit précis. Donc j'ai besoin de vous pour ces deux manipulations.

 

L'idéale serait un lisp ou une maccro qui déplace tout le schéma en 0,0,0 a partir du point en bas a gauche et qui insère le texte "3" a un point spécifique.

 

Je veux pas vous casser la tête non plus donc déjà si je sais juste mettre automatiquement les schémas en 0,0,0 ça me servira aujourd'hui et par la suite.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Le point inférieur gauche est une vue de l'esprit qu'il va être compliqué d'expliquer à AutoCAD

Si jamais il y à la moindre entité mal placée et c'est foutu.

 

Par contre faire un lisp qui va redéfinir un SCU en faisant cliquer le fameux point bas gauche par l'utilisateur me semble une bonne piste pour un début.

 

Je n'ai pas compris à quel endroit tu voulais rajouter un "3".

Tu ne nous dis pas tout d'ailleurs, cette grille de validité c'est un bloc avec des attributs ou autre chose ?

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est ce que j'ai vu avec la variable "extmin" c'est en fonction du zoom étendu. Y a peu de chance que quelque chose sorte du cadre du schéma mais on peut partir sur redéfinir le SCU.

 

Je vous joint le .dwg que j'ai du renommer en .pdf pour vous le joindre comme ça vous pouvez regarder, je tiens à préciser que je suis pas l'auteur de ce schéma mdr car la grille est en texte y a pas de bloc, c'est que des traits et y a rien de centré.

 

Merci d'avance

test.pdf

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Est-ce que tous les fichiers sont identiques ou y-en-a-t'il avec des blocs et d'autres avec du texte (je parle de la grille de validité)

Est-ce que dans tous les fichiers ce que tu appelles le point bas gauche est vraiment le minimum dessiné, autrement dit : si je filtre les entités je peux prendre la plus petite coordonnée X et la plus petite coordonnée Y et je tomberai à coup sûr sur ce que tu appelles le point bas gauche ?

 

Au fait : il vaut mieux compresser le DWG pour qu'il devienne ZIP, c'est plus simple

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Une première approche

(defun c:m00(/ bas bd doc ele hg lst sel)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (and (ssget "x")
   (progn
     (vlax-for ele (setq sel (vla-get-activeselectionset doc))
(or (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list ele 'bd 'hg)))
  (setq lst (cons (vlax-safearray->list bd) lst))
)
     )
     (setq bas (apply 'mapcar (cons 'min lst)))
     (vlax-for ele sel
(vla-move ele (vlax-3d-point bas) (vlax-3d-point '(0.0 0.0 0.0)))
     )
     (vla-delete sel)
     (entmake	(list	(cons  0 "TEXT")
		(cons  1 "3")
		(cons 10 '(0.0 0.0 0.0))
       		(cons 40 (getvar "textsize"))
	)
     )
   )
 )
 (vla-endundomark doc)
 (princ)
)

A toi de bien positionner le texte

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Une autre approche sans rien bouger

Je cherche la string GRILLE DE VALIDITE puis je me déplace d'une certaine valeur pour écrire un texte

Vite fait sans vrais contrôles

 

(setq jeusel (ssget "x" (list (cons 0 "TEXT"))))
(setq n 0
 	test (cdr (assoc 1 (entget (ssname jeusel n))))
 	)

(if (= (cdr (assoc 1 (entget (ssname jeusel n)))) "GRILLE DE VALIDITE") (alert "fini"))

(repeat (sslength jeusel)
 (if (= (cdr (assoc 1 (entget (ssname jeusel n)))) "GRILLE DE VALIDITE")
(setq pins (cdr (assoc 11 (entget (ssname jeusel n)))))
(setq n (+ 1 n))
)
 )
 

(command "_text" (list (+ (car pins) 6.95679)(- (cadr pins) 4.79129)) "1.40625" "" "3" )
 

 

Ensuite il faut mettre ça dans un script en batch et je pense que ça peut le faire.

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

@didier,

 

tu pourrais simplifier :

 

(if (setq jeusel (ssget "_X" '((0 . "TEXT") (1 . "GRILLE DE VALIDITE"))))
 (command "_text"
   (mapcar '+
	   (cdr (assoc 10 (entget (ssname jeusel 0))))
	   '(6.95679 -4.79129 0.0)
   )
   1.40625
   ""
   "3"
 )
)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Bonjour messieurs :),

 

Je viens d'essayer vos lisp merci de votre aide.

 

@Didier

- J'ai lancé le lisp et j'arrive bien à insérer un 3 dans la grille mais pas exactement ou je le souhaite. par contre je suis curieux de savoir votre démarche car je comprends pas en fonction de quoi vous placez le texte avec (6.95679 -4.79129 0.0).

- Vous me parlez d'un .batch, c'est pour automatiser la commande ?

 

 

@Patrick_35

- J'arrive à insérer le texte exactement comme il faut grâce à ce lisp en modifiant les coordonnés et la taille du texte. Le point d'insertion était bien spécifie et l'avantage c'est que je peux le modifier pour un autre usage :D.

 

- Est-il possible avant de placer le texte de déplacer l'ensemble du schéma pour mettre le point en bas à gauche du cadre en 0,0,0 comme ça le 3 se positionnera correctement dans la grille ?

 

- Comment faire pour écrire le "3" avec votre lisp dans un autre calque que "0" déjà existant dans le schéma ? Le calque souhaité est "TEXTE"

 

Avant tout, je veux pas abuser, c'est déjà très gentil de votre part :)

 

(defun c:m00(/ bas bd doc ele hg lst sel)

(setq doc (vla-get-activedocument (vlax-get-acad-object)))

(vla-startundomark doc)

(and (ssget "x")

(progn

(vlax-for ele (setq sel (vla-get-activeselectionset doc))

(or (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list ele 'bd 'hg)))

(setq lst (cons (vlax-safearray->list bd) lst))

)

)

(setq bas (apply 'mapcar (cons 'min lst)))

(vlax-for ele sel

(vla-move ele (vlax-3d-point bas) (vlax-3d-point '(0.0 0.0 0.0)))

)

(vla-delete sel)

(entmake (list (cons 0 "TEXT")

(cons 1 "3")

(cons 10 '(113.1027 11.2090 0.0))

(cons 40 1.4063)

)

)

)

)

(vla-endundomark doc)

(princ)

)

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Ma solution porte sur la position du texte à insérer par rapport au point d'insertion du texte GRILLE DE VALIDITE

Dans la simplification réalisée par (gile) je pense qu'il faudrait remplacer

 

(mapcar '+(cdr (assoc 10 (entget (ssname jeusel 0))))'(6.95679 -4.79129 0.0))

Par

(mapcar '+(cdr (assoc 11 (entget (ssname jeusel 0))))'(6.95679 -4.79129 0.0))

 

Les deux valeurs dont tu me parles sont les deltas X et Y du point d'insertion du texte à écrire par rapport au point d'insertion du texte de référence (GRILLE DE VALIDITE), l'assoc 11 c'est parce que le texte est inséré en "milieu"

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

J'ai du mal à comprendre la question.

Le lisp déplace l'ensemble du dessin en recherchant le point le plus bas pour ensuite aller au point 0,0 (selon ta demande)

Ensuite, tu places le texte à l'endroit qui convient.

Ta réponse me fait penser que tu as plusieurs folios sur le même dessin et dans ce cas, ma routine ne correspond pas à la demande et c'est la routine de Didier la plus appropriée.

 

ps : Pour choisir le calque, tu ajoutes (cons 8 "Mon_Calque")

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

J'ai du mal à comprendre la question.

Le lisp déplace l'ensemble du dessin en recherchant le point le plus bas pour ensuite aller au point 0,0 (selon ta demande)

Ensuite, tu places le texte à l'endroit qui convient.

Ta réponse me fait penser que tu as plusieurs folios sur le même dessin et dans ce cas, ma routine ne correspond pas à la demande et c'est la routine de Didier la plus appropriée.

 

ps : Pour choisir le calque, tu ajoutes (cons 8 "Mon_Calque")

 

@+

Bonjour Patrick,

Non moi il ne déplace pas le dessin :( (je suis bien sur autocad 2013) par contre il insert bien le texte au point demandé et grâce à cons 8 j'ai réussi à le mettre sur le calque que je voulais. Je n'ai que un seul dessin par fichier donc ta solution convient très bien

Lien vers le commentaire
Partager sur d’autres sites

Ha d'accord, c'est bien ce qui me semblait mais je n'arrivais pas à placer le point ou je voulais. Je vous remercie pour votre solution mais celle de patrick est plus facile à gérer pour moi car je suis débutant et on y est presque. Manque plus qu'à faire marcher le déplacement du dessin. Si je fais cette démarche auprès de vous c'est parce que j'ai dejà eu la demande et je pourrai réutiliser cette fonction régulièrement.

Lien vers le commentaire
Partager sur d’autres sites

Si le coin en bas à gauche est à 0,0,0 alors oui, le dessin n'est pas déplacé car il est déjà aux bonnes coordonnées.

Maintenant, si le coin bas gauche est par exemple à 100,100,0 alors le dessin sera déplacé et le coin bas gauche mis aux coordonnées 0,0,0.

 

Tu peux tester sur un dessin vierge avec des lignes dessinées à la volé et voir le résultat.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Si le coin en bas à gauche est à 0,0,0 alors oui, le dessin n'est pas déplacé car il est déjà aux bonnes coordonnées.

Maintenant, si le coin bas gauche est par exemple à 100,100,0 alors le dessin sera déplacé et le coin bas gauche mis aux coordonnées 0,0,0.

 

Tu peux tester sur un dessin vierge avec des lignes dessinées à la volé et voir le résultat.

 

@+

 

Ha mais c'est quoi ces schémas boiteux que je dois traiter, effectivement sur un nouveau dessin pas de problème tout part au point 0.0.0, j'ai même essayé de coller mon schéma dans un nouveau dessin et il va se mettre en 0.0.0 et le 3 est pile ou il faut.

Mais dans le dessin d'origine, il ne bouge pas :/. Je vous l'envoie en ZIP pour que vous puissiez regarder. Merci patrick

test.zip

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

C'est pour pallier ce genre de désagrément que j'ai choisi de ne rien déplacer dans le fichier mais de me connecter au texte "Grille ...." ce qui fonctionne pas trop mal

 

Amicalement

Pas mal du tout, je savais même pas que c'était possible donc déjà suis content d'avoir vu une autre façon de faire et je vais regarder pour arriver à comprendre le positionnement :)

Merci didier

Lien vers le commentaire
Partager sur d’autres sites

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é