CADxp: Différence entre A2010 et 2013 pour macro? - CADxp

Aller au contenu

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

Différence entre A2010 et 2013 pour macro?

#1 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 15 septembre 2017 - 09:18

Bonjour,

J'ai sur mon poste (autocad map 2010) un bouton associé à une macro pour reprendre ma sélection d'objets précédente qui est : ^C^C(sssetfirst nil (ssget "_P")); et qui fonctionne très bien!

Mon collègue qui a une version AutoCad 2013 a voulu faire la même chose mais ça ne fonctionne pas sur son poste... (heu, j'ai pas noté son message d'erreur! <_< ) :blink:

Une raison particulière? la programmation des macros (ou lisp) diffère suivant les versions autocad?

En vous remerciant par avance, et bon week!
Xav
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
0

#2 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 7178
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

  Posté 15 septembre 2017 - 17:01

Bonjour,

Sans connaitre MAP, je dirais que la fonction appelée (sssetfirst...) doit être chargée par un LOAD ou autre...

Essayes en tapant ça !sssetfirst

Et tu dois avoir un retour du style #SUBR... qui confirme que la fonction est bien chargée !

Christian



Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger des Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#3 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 18 septembre 2017 - 13:29

Bonjour Christian,

Merci pour ta réponse déjà. :)

Alors effectivement, il a bien ce retour #SUBR... avec le test avec "!"

Par contre, ce matin, il me dit que ça lui sélectionne bien des objets, mais uniquement les derniers objets sur lesquels il effectue une commande (déplacer, copier, etc...)

Sur mon poste, je sélectionne des objets, juste pour voir leurs propriétés par exemple, je fais Echap ensuite, et si j'utilise ce fameux bouton avec la commande, il me re-sélectionne bien ces objets juste sélectionnés...

J'imagine que ce doit être une histoire de variable... :(

PS : J'ai mis ce post dans le forum "macro", mais effectivement, c'est du LISP tout ça.
J'ai essayé de m'y pencher un peu ce week avec "l'introduction au LISP" de (gile) mais je ne comprends pas où ça bloque!

Bonne journée!
Xav
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
0

#4 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 949
  • Inscrit(e) : 29-avril 10

Posté 18 septembre 2017 - 14:11

Bonjour,

Très certainement ton collègue a du essayé la macro dans un nouveau dessin n'ayant pas de sélection précédente..
En retour sur la ligne de commande il a certainement du avoir un message du type:

Citation

Commande: (sssetfirst nil (ssget "_P"))
(nil nil)

Indiquant qu'il n'a pas de jeu de sélection

A+
Apprendre => Prendre => Rendre
0

#5 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 18 septembre 2017 - 15:57

Bonjour Bruno,

Merci de ta réponse!

Heu... ben si, il a bien sélectionné des objets avant d'essayer puisque la commande fonctionne avec des objets ayant subit une modification... :blink:

Je lui ai demandé d'essayer en supprimant ces objets sélectionnés sur lequel ça fonctionne, d'en sélectionner de nouveaux, et de faire Echap juste après, sans avoir fait de modifs donc, et là, il a bien un retour (nil nil)

PS : Rien à voir avec ce problème pour ce qui suit!
Je n'ai pas AutoCad chez moi et j'essaye donc au taf quelques trucs que j'ai regardé ce week...

Au paragraphe 8.2 Accès aux éléments de "l'introduction à AutoLISP" de (gile), il est sujet des fonctions "car" et "cdr", et de leur combinaison.

Il y a un exemple qui est :
(car (cdr (cdr '(6 1 8)))) → (caddr '(6 1 8)) → 8

Dans "ma logique", le "car" est superflu (et qui donnerai une combinaison plus courte) et j'ai donc essayé :
(cddr '(6 1 8)) → (8)

Ma logique est bonne apparemment, le résultat est bien le "même" mais pourquoi il retourne les parenthèses?

Merci!
Xav
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
0

#6 L'utilisateur est en ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11291
  • Inscrit(e) : 02-septembre 05

Posté 18 septembre 2017 - 16:20

Voir le messageDemixav, le 18 septembre 2017 - 15:57 , dit :

Au paragraphe 8.2 Accès aux éléments de "l'introduction à AutoLISP" de (gile), il est sujet des fonctions "car" et "cdr", et de leur combinaison.

Il y a un exemple qui est :
(car (cdr (cdr '(6 1 8)))) → (caddr '(6 1 8)) → 8

Dans "ma logique", le "car" est superflu (et qui donnerai une combinaison plus courte) et j'ai donc essayé :
(cddr '(6 1 8)) → (8)

Ma logique est bonne apparemment, le résultat est bien le "même" mais pourquoi il retourne les parenthèses?

Merci!
Xav


Évaluation pas à pas :
  • (car (cdr (cdr '(6 1 8)))) => (cdr '(6 1 8)) retourne (1 8) -la liste (6 1 8) sans le premier élément-
  • (car (cdr '(1 8))) => (cdr '(1 8)) retourne (8) -la liste (1 8) sans le premier élément-
  • (car '(8)) => retourne 8 -le premier élément de la liste (8)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#7 L'utilisateur est en ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11291
  • Inscrit(e) : 02-septembre 05

Posté 18 septembre 2017 - 16:26

Essaye et compare :
(type (cddr '(6 1 8)))

et
(type (caddr '(6 1 8)))

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#8 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 18 septembre 2017 - 16:34

Voir le message(gile), le 18 septembre 2017 - 16:20 , dit :

Évaluation pas à pas :
  • (car (cdr (cdr '(6 1 8)))) => (cdr '(6 1 8)) retourne (1 8) -la liste (6 1 8) sans le premier élément-
  • (car (cdr '(1 8))) => (cdr '(1 8)) retourne (8) -la liste (1 8) sans le premier élément-
  • (car '(8)) => retourne 8 -le premier élément de la liste (8)



Bonjour (gile),

Merci pour ta réponse (et de prendre du temps pour répondre au néophyte que je suis à une chose tellement bête pour toi je présume! :) ), mais je dois avouer que je ne comprends pas mieux!
C'est la présence des parenthèses que je ne comprends pas.
Font elles partie intégrante de l'élément? mais si c'est le cas, elle devrait apparaître aussi avec (caddr '(6 1 8))... Non? :blink:
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
0

#9 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 18 septembre 2017 - 16:40

Ha... "cdr" retourne une liste, "car" retourne un élément! c'est ça?

vive les subtilités du langage LISP !! :huh:
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
0

#10 L'utilisateur est en ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11291
  • Inscrit(e) : 02-septembre 05

Posté 18 septembre 2017 - 16:47

Une expression LISP est soit une liste ; soit un atome.
Une liste est une séquence d'expressions LISP balisée par une parenthèse ouvrante et la parenthèse fermante correspondante.

1 est un atome (de type INT).
2.54 est un atome (de type REAL).
"LISP" est un atome (de type STR).

() est une liste (vide).
(8) est une liste (d'un seul élément).
(6 1 8) est une liste (de 3 entiers).
(1 2.54 "LISP") est une liste (de 3 éléments de types différents).
((1 2 3) (4 5 6) (7 8 9)) est une liste de listes.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#11 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 18 septembre 2017 - 16:52

Oui, oui... j'ai compris avec un peu de retard!
Pas évident quand on débute de penser à des choses comme ça! Rien que cette différence entre les deux n'est pas maîtrisée alors encore moins évident de comprendre les réponses des fonctions!

Merci encore de tes réponses en tout cas.
Xav
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
0

#12 L'utilisateur est en ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11291
  • Inscrit(e) : 02-septembre 05

Posté 18 septembre 2017 - 16:54

Ma dernière réponse arrive un peu tard, mais il faut bien comprendre qu'il ne s'agit pas là de "subtilités" mais d'une notion fondamentale du LISP.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#13 L'utilisateur est hors-ligne   Demixav 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 771
  • Inscrit(e) : 28-mars 12
  • LocationLa pampa du Gard

Posté 18 septembre 2017 - 17:05

Fondamentale oui en effet, mais qui pour un débutant ne sont que des subtilités pour l'instant...

A la lecture, j'ai cru que les deux fonctions retournaient le même type de données.

Mais c'est bien! Ca m'a permis de comprendre qu'il faut vraiment s’arrêter sur chaque mot et leur sens pour comprendre les choses du LISP. ;)

Xav
AutoCad Map 3D 2011 - Covadis v16.0d
Windows 7 - 64b
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)