Aller au contenu

Blocs superposés


Squelet

Messages recommandés

Bonjour,

 

J'ai plusieurs blocs de même dimension, mais dans des calques différents, qui se superposent.

On en voit donc qu'un seul à l'écran.

Mais j'ai besoin de vérifier si chaque bloc est bien dans le calque correspondant.

 

Si j'appuie sur Ctrl, et que je sélectionne les blocs, je passe effectivement d'un bloc à l'autre.

Le problème, c'est que les infos dans les propriètés ne se mettent pas à jour suivant le bloc sélectionné, donc pas moyen de savoir dans quel calque il est.

 

Est-ce que quelqu'un aurait une solution .

 

Merci d'avance.

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

Tu dois faire ta selection cyclique et appuyer sur ENTREE tout simplement.

Moyennant quoi la selection cyclique doit être reprise à chaque fois.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Salut,

un petit lisp... ?

 

(defun c:selB (/ SEL TXT X)
(setq sel nil
     txt "\n Blocs sélectionnés :\n"
     x 0)
(while (not sel)
(setq sel (ssget '((0 . "INSERT" )))))

(repeat (sslength sel)
 (setq txt (strcat txt "\n"(cdr (assoc 2 (entget (ssname sel x))))
	    " dans Calque "
	    (cdr (assoc 8 (entget (ssname sel x)))))
x (+ x 1))
 )  
(alert txt)
 (princ)
 )

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

un petit lisp... ?

 

Salut Bred

 

Etant complètement novice en Lisp, qu'est-ce que je fais de ton charabia ?(c'est de l'humour bien entendu !) :(

 

Je le colle ou, et j'en fais quoi.

Merci de ton aide.

 

 

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

l'une de manière : (la + "simple" pour débuter)

 

Tu copies le code dans un bloc note que tu nommes et enregistre comme tu veux en mettant comme extension .lsp

 

Puis tu vas dans Autocad, tu va dans Outils / Charger une Application

Dans la boite de dialogue tu as une valise : tu delectionne "contenu"

 

... et là tu vas chercher le fichier .lsp que tu as enregistrer precedement.

 

Tu auras dorénavant une nouvelle commande dans autocad nommé "selB" (tape là au clavier)

 

Le lisp sera alors charger à chaque démarage. Il y a d'autre manières....

 

Pour info, si tu veux raccourcir le nom de la commande au clavier tu met ce que tu veux comme commande à la place de "selB" dans

(defun c: sb (................

(laisse le c: )

 

[Edité le 23/3/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Tu copies le code dans un bloc note que tu nommes et enregistre comme tu veux en mettant comme extension .lsp

Ca, c'est fait !

 

Puis tu vas dans Autocad, tu va dans Outils / Charger une Application

Dans la boite de dialogue tu as une valise : tu delectionne "contenu"

... et là tu vas chercher le fichier .lsp que tu as enregistrer precedement.

Ca aussi.

 

Extra ton truc !

 

 

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

Ouais, c'est vraiment génial !

Est-ce que tu crois qu'il y a moyen de le modifier pour que cette petite routine s'applique aussi à des polylignes 2D et 3D ?

 

Parce qu'alors là ça me changerait vraiment la vie !!!!

 

En tout cas merci de m'avoir fait découvrir ma première routine Lisp.

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

Re,

Est-ce que tu crois qu'il y a moyen de le modifier pour que cette petite routine s'applique aussi à des polylignes 2D et 3D ?

Je n'ai pas fait de différence entre polylgne 2D ou 3D (c'est possible...)

 

(defun c:selpoly (/ SEL TXT X)
(setq sel nil
     txt "\n Polylignes2D/3D sélectionnés :\n"
     x 0)
(while (not sel)
(setq sel (ssget '((0 . "*POLYLINE")))))

(repeat (sslength sel)
 (setq txt (strcat txt "\nPolyligne "(rtos (+ x 1))
	    " dans Calque "
	    (cdr (assoc 8 (entget (ssname sel x)))))
x (+ x 1))
 )
 
(alert txt)
 (princ)
 )

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas fait de différence entre polylgne 2D ou 3D (c'est possible...)

Ouais, si on peut même faire la différence entre une 2D et une 3D, ca devient carrément le paradis !! :D

 

Et si en plus on peut afficher la longueur de chaque entité, alors je me prosternerais à tes pieds !!!!!!

 

Par contre juste deux petites questions :

Peut-on éviter la ribambelle de 000 ?

http://www.vorger.fr/images/covadisforum/selp.png

 

Et enfin, pour ne pas mourrir idiot, où est-ce que je peux piocher des infos pour essayer de comprendre tes deux routines ? Le Lisp commence vraiment à m'intérresser !!!

 

Voilà, merci et bon dimanche.

Je file au ski faire. Les conditions de neige sur la savoie sont vraiment excellentes en ce moment. :thumbup:

 

[Edité le 25/3/2007 par Squelet]

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

Salut... Bonne neige ???

 

Le lisp ci dessous te fairas ce que tu demande....

(pour la "la ribambelle de 000", c'est bizarre, je n'ai pas ça....)

 

(defun c:selpoly (/ LST LST-LW LST-P SEL TXT2D TXT3D X)
(vl-load-com)
(setq sel nil
     lst nil
     lst-P nil
     lst-LW nil
     txt2D "\n Polylignes 2D sélectionnés :\n"
     txt3D "\n Polylignes 3D sélectionnés :\n"
     x 0)
(while (not sel)
(setq sel (ssget '((0 . "*POLYLINE")))))
 (repeat (sslength sel)
   (setq lst (append (list (cdr (assoc -1 (entget (ssname sel x))))) lst)
  x (+ x 1))
   )  
 (foreach n lst (if (equal (cdr (assoc 0 (entget n))) "POLYLINE")
	   (setq lst-P (append (list n) lst-P))
	   (setq lst-LW (append (list n) lst-LW)))
   )
 (setq x 0)
(repeat (length lst-LW)
 (setq txt2D (strcat txt2D "\nPolyligne-2D "(rtos (+ x 1))
	    " dans Calque "
	    (cdr (assoc 8 (entget (nth x lst-LW))))
	      " - Longueur : "
	      (rtos (vlax-curve-getDistAtParam (nth x lst-LW) (vlax-curve-getEndParam (nth x lst-LW)))))
x (+ x 1))
 )
 (setq x 0)
(repeat (length lst-P)
 (setq txt3D (strcat txt3D "\nPolyligne-3D "(rtos (+ x 1))
	    " dans Calque "
	    (cdr (assoc 8 (entget (nth x lst-P))))
	      " - Longueur : "
	      (rtos (vlax-curve-getDistAtParam (nth x lst-P) (vlax-curve-getEndParam (nth x lst-P)))))	
x (+ x 1))
 )
 (if lst-LW (alert txt2D))
 (if lst-P (alert txt3D))
 (princ)
 )

[Edité le 26/3/2007 par Bred]

 

[Edité le 26/3/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Salut Bred,

 

Pour la longueur de tous les objets "curvilignes" (arcs, cercles, ellipses, lignes, splines et polylignes 2D 3D ou lw)

 

(vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj))

 

ou obj peut être soit un ename soit un vla-object.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut Bred,

Salut (gile),

 

Ouais, extra la neige !

 

Bon, ben, j'ai ajouter ce matin la routine que tu m'as concocter hier soir, mais dés que je la lance, j'ai le message d'erreur suivant : ; erreur: nombre d'arguments insuffisants

 

C'est grave, Docteur ?

 

(gile) a dit :

(vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj))

Etant complètement novice en Lisp, comment est-ce que je dois bidouiller le code de Bred pour intégrer ta commande ?

 

Bonne journée à tous les deux.

 

[Edité le 26/3/2007 par Squelet]

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

Merci (gile)!

 

Squelet : J'ai modifié et corrigé la routine précédente : elle te donneras ce que tu demandes maitenant.

Dis moi si ça te convient !....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

je viens d'essayer le nouvelle routine modifiée, résultat après avoir fait la séléction d'objets :

 

; erreur: no function definition: VLAX-CURVE-GETENDPARAM

 

Apparement, il y a un soucis avec le fonction de (gile) ou me trompe-je ?

 

 

 

 

[Edité le 26/3/2007 par Squelet]

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

Lien vers le commentaire
Partager sur d’autres sites

Ah.. sur 2005 les fonctions vl ne sont pas chargé automatiquement peut-être....

que cela ne tienne : rajoute un

(vl-load-com)

en début de code (routine ci-dessus modifié)

 

[Edité le 26/3/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Exact, maintenant tout baigne, et c'est trop de la balle !! (comme me dit régulièrement mon fiston de dix ans)

 

Ca me donne vraiment envie de me mettre au LIsp !

 

Merci Bred pour ta cohopération et surtout pour la rapidité de tes réponses.

Merci à (gile) aussi.

 

Bonne fin de journée

 

 

Sur Autocad Map 2005

 

"Un problème sans solution est un faux problème"

Albert Einstein

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é