Aller au contenu

Différence entre A2010 et 2013 pour macro?


Demixav

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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 Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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:

 

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

(nil nil)

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

 

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :

  1. (car (cdr (cdr '(6 1 8)))) => (cdr '(6 1 8)) retourne (1 8) -la liste (6 1 8) sans le premier élément-
  2. (car (cdr '(1 8))) => (cdr '(1 8)) retourne (8) -la liste (1 8) sans le premier élément-
  3. (car '(8)) => retourne 8 -le premier élément de la liste (8)

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

Évaluation pas à pas :

  1. (car (cdr (cdr '(6 1 8)))) => (cdr '(6 1 8)) retourne (1 8) -la liste (6 1 8) sans le premier élément-
  2. (car (cdr '(1 8))) => (cdr '(1 8)) retourne (8) -la liste (1 8) sans le premier élément-
  3. (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

Lien vers le commentaire
Partager sur d’autres sites

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
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

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é