CADxp: Sélectionner une entité avant de lancer la commande - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Sélectionner une entité avant de lancer la commande

#1 L'utilisateur est hors-ligne   Vincent P. 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 48
  • Inscrit(e) : 08-décembre 16
  • Location44

Posté 29 novembre 2019 - 13:41

Bonjour bonjour,

Je me remet un peut à lisper, et je me pose une question.
Jusque maintenant lorsque je prépare un programme, qui vas traiter des entités, je met

(defun c:BLABLA (/ Ent)
(setq Ent (car (entsel)))
)

En faisant ainsi, je lance BLABLA, puis je sélectionne l'entité. M'est retournée le nom de l'entité.
Si je procède a l'inverse, je commence par sélectionner une entité, puis je lance BLABLA, l'entité présélectionnée est ignorée, et on me demande "Choix de l'objet :".

Est'il donc possible de récupérer lors de du lancement de ma commande BLABLA de récupérer l'entité présélectionnée?
Je ne pense pas que seul le Lisp m'aideras, mais ptet du script?

J'espère avoir été claire.

Aimablement
Vincent P.
Lispeur débutant!
0

#2 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8463
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 29 novembre 2019 - 13:46

(setq voir (cadr(ssgetfirst)))
(setq premiere_entite_du_lot(ssname voir 0))

Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#3 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8407
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 29 novembre 2019 - 13:47

Coucou

Je te propose de mettre cette variable "ent" en argument
(defun c:BLABLA (/ Ent)
(setq Ent (car (entsel)))
code qui suit...
)
Va devenir
(defun c:BLABLA (Ent)
code qui suit..)
)
Et ensuite il te faudra "passer" l'argument à la fonction "blabla"
(setq Ent (car (entsel))
(blabla ent)

OK ?

Amicalement
Éternel débutant ...
Programmer AutoCAD
0

#4 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8463
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 29 novembre 2019 - 14:28

Cher Didier, je me permets de suggérer (c:blabla ent) au lieu de (blabla ent)...
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#5 L'utilisateur est hors-ligne   Vincent P. 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 48
  • Inscrit(e) : 08-décembre 16
  • Location44

Posté 29 novembre 2019 - 14:55

Ok, la méthode de Tramber, je l'ai comprise, et ça fait ce à quoi je pensais.
Cool et merci à toi!

Didier, j'ai l'impression que ta solution requière de passer par une autre commande. Ou alors je n'ai pas compris où tu voulais me mener (ce qui est fort probable)

Même si ce que Tramber à proposé fonctionne, je voudrais bien comprendre quand même!!

Merci
Lispeur débutant!
0

#6 L'utilisateur est hors-ligne   DenisHen 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3388
  • Inscrit(e) : 17-décembre 05
  • LocationDIERREY SAINT JULIEN (10190)

Posté 29 novembre 2019 - 14:56

Salut à tous.

Voir le messageTramber, le 29 novembre 2019 - 14:28 , dit :

Cher Didier, je me permets de suggérer (c:blabla ent) au lieu de (blabla ent)...

J'aimerais savoir pourquoi. S'il te plaît...

Denis...

PS : pareillement à Vincent, je suis curieux...
Windows 10 Pro 64bits / AutoCAD MAP 3D 2019 (22.0.022.4)
Covadis 16 / Microstation V8i

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres...
Davantage d'avantages, avantagent davantage. (Bobby Lapointe)
La connaissance s'accroît quand on la partage.(Socrate)
0

#7 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8463
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 29 novembre 2019 - 15:36

Bon, les gars : le "c:" permet de faire en sorte que la commande soit appelable directement en ligne de commande.
(defun c:macommande()... se lance avec macommande
alors que
(defun macommande().... se lance avec (macommande)
Pour le coup ici, je me contenterais d'un (defun blabla (arg1 arg2)...
Car les fonctions en c: ne sont pas très utiles dès lors qu'on les utilise avec des arguments puisqu'alors la seule forme possible sera (c:blabla arg1 arg2)

Je ne dois pas être bien clair... avec tout ce que j'ai bu ce midi :P
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#8 L'utilisateur est hors-ligne   DenisHen 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3388
  • Inscrit(e) : 17-décembre 05
  • LocationDIERREY SAINT JULIEN (10190)

Posté 29 novembre 2019 - 15:45

Voir le messageTramber, le 29 novembre 2019 - 15:36 , dit :

Je ne dois pas être bien clair... avec tout ce que j'ai bu ce midi :P

Peut-être, en tous cas, j'ai tout compris... C'est probablement que je n'étais pas avec toi ce midi justement... ;)

On mets c: pour des commandes "simples" (defun c:MaCommandeSimple (/) qui donnera MaCommandeSimple directement depuis AutoCAD et sans pour des commandes avec argument, (defun MaCommandeAvecArgument (Arg1 Arg2 / )...) puisqu'elle sera sous format (MaCommandeAvecArgument Arg1 Arg2) directement en ligne de commande dans AutoCAD...

J'ai bon ?

Denis...
Windows 10 Pro 64bits / AutoCAD MAP 3D 2019 (22.0.022.4)
Covadis 16 / Microstation V8i

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres...
Davantage d'avantages, avantagent davantage. (Bobby Lapointe)
La connaissance s'accroît quand on la partage.(Socrate)
0

#9 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8407
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 29 novembre 2019 - 16:23

Coucou

Effectivement je parlais de sous-fonction mais avec le "blabla" je me suis emmêlé les touches
En général (moi je ne suis que soldat de deuxième classe) :
Il est courant de faire des

(defun SousCommande1 (argument) ...)
(defun SousCommande2 (argument) ...)

Et à la fin on définit la fonction principale qui appelle les sous-fonctions

(defun c:NomDeCommande()
(SousCommande1 arg)
(SousCommande2 arg)
);fin de defun NomDeCommande

NomDeCommande étant ce qui sera tapé en ligne de commande dans l'interface graphique...

Amicalement

Éternel débutant ...
Programmer AutoCAD
0

#10 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8463
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 29 novembre 2019 - 16:54

Voilà aussi un très bon résumé.
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)