Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

je suis en train d'essayer (je dit bien essayer) via le mode "pas à pas" de faire mon premier programme.

 

Le but finale est sur des polylignes multiples de créer un rayon avec le décalage suivant l'espace entre les polylignes.

 

Exemple :

J'ai quatre polylignes espacées de 3mm chacune, le rayon de raccord sur la première est de 2mm, puis 5mm, puis 8mm , puis 11mm.

 

Je bloc sur ça (pas loin mais c'est un début) :

 

(command "raccord" "r" (entsel ))

 

Je sélectionne ma première PL et la il ne me retourne pas vers le "r" ? Du coup pas moyen de modifier le rayon...

Il faut que j'aille vers ou?

 

merci à vous (d'avance)

 

PS : un sujet sur lequel Tramber à proposé qqch qui pourrait presque aller :) http://cadxp.com/topic/43560-raccord-sur-plusieurs-polylignes-en-une-seul-fois/page__p__249652__hl__%2Braccord+%2Bmultiple__fromsearch__1#entry249652

 

PS 2 : mon soucis de base viens de la : http://www.lee-mac.com/mpline.html le lisp marche bien pour faire mes schémas mais je suis obligé d'appliquer les rayons à la main un par un une fois ma ML tracée...

"98% des soucis informatiques sont assis entre la chaise et le bureau !"

 

"C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Posté(e)

Salut et bienvenue au club,

 

Quand on utilise une fonction LISP (comme ici entsel) il est impératif de connaitre ce que la fonction retourne. Il faut donc consulter l'aide ou toute autre documentation si on ne sait pas précisément le type de valeur retournée et si ce type correspond bien à ce qui est attendu à cet endroit du code.

 

Par ailleurs, il est préférable de ne pas imbriquer dans une expression (command ...) des appels à des fonctions d'entrée utilisateur (ssget, entsel, getdist, getangle, getpoint, ...). Il vaut toujours mieux récupérer les entrées utilisateurs avant et les stocker dans des variables (ceci permet aussi de contrôler leur validité).

 

Pour implémenter des appels à command, j'avais fait cette petite vidéo qui décris une méthode pas à pas dont tu devrais pouvoir t'inspirer.

 

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

Posté(e)

Salut Gile,

 

Oui, j'avais vu ta vidéo d'ou quelques test hasardeux de mon coté ;)

 

Et la comme j'ai un peu de temps et que je suis sur un cas concret qui ne me semble pas trop dur, je fait des essais... Par contre j'ai l'impression de que mon approche n'est pas la bonne...

Par ailleurs, il est préférable de ne pas imbriquer dans une expression (command ...) des appels à des fonctions d'entrée utilisateur (ssget, entsel, getdist, getangle, getpoint, ...). Il vaut toujours mieux récupérer les entrées utilisateurs avant et les stocker dans des variables (ceci permet aussi de contrôler leur validité).

 

Lors des créations de variables utilisateurs, j'aimerais savoir si il y a un ordre qu'il vaut mieux éviter/donner.

Autre questions si je donne un "entsel", comment lié ma variable à une commande en particulier? (PS j'ai pas encore tout lu, que ce sois ton PDF pour apprendre le LISP ou ce qu'a mis en Ligne Didier :'( , j'ai pas forcément les cas concrets tout les jours...)

 

merci pour ton aide et ton temps ;)

"98% des soucis informatiques sont assis entre la chaise et le bureau !"

 

"C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Posté(e)
(command "raccord" "r" (entsel ))
Attention, expression qui fait déjà peur B)

Si tu lances R pour régler le rayon, régle le rayon !

 

Ensuite, j'ai lancé l'essai dans vlisp et suis arrivé à cela, en tatonnant :

(command "raccord" "r" 8 "raccord" "p" (car(entsel)))

ou encore

(command "raccord" "r" 8 "raccord" "p" pause)

ou encore une variable dans lequel il y a l'objet, vérifié, comme indiqué par (Gile)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Salut Bertrand,

 

Le

car

sers à quoi?

 

je suis pas encore arrivé la :(

 

PS : oui effectivement pour la syntaxe , j'ai oublié un truc xD

"98% des soucis informatiques sont assis entre la chaise et le bureau !"

 

"C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Posté(e)

Vas dans l'éditeur Visual LISP, dans la console, tu entres : (entsel) et tu valides par Entrée.

Automatiquement tu te retrouves dans la fenêtre d'AutoCAD avec une invite : Choix de l'objet:

Tu choisis une entité et tu te retrouves dans l'éditeur Visual LISP avec le résultat de l'évaluation de l'expression (entsel), quelque chose du genre :

( (1997.09 1257.39 0.0))

Qu'es aquò ?...

Pour en savoir plus, tu sélectionne le mot entsel dans la console par double clic et tu fais Ctrl+F1 (ou l'icône avec le point d'interrogation [?]).

L'aide aux développeurs s'ouvre directement à la page de la fonction entsel. C'est en anglais mais ce n'est pas bien compliqué à comprendre.

Ce qui nous intéresse ici c'est la valeur retournée :

Return Values

A list whose first element is the entity name of the chosen object and whose second element is the coordinates (in terms of the current UCS) of the point used to pick the object.

Donc en gros ça nous dit qu'il s'agit d'une liste (effectivement la valeur retournée est entre parenthèses) dont le premier élément est le nom d'entité de l'objet sélectionné et le second la liste (eh oui encore des parenthèses) des coordonnées SCU du point cliqué.

Donc selon ce dont on a besoin, on stockera le premier et/ou le second élément dans des variables.

 

;; invite l'utilisateur à sélectionner une entité et stocke le résultat dans ent
(setq ent (entsel))

;; stocke le nom d'entité dans ename
(setq ename (car ent))

;; stocke le point cliqué dans pickedPt
(setq pickedPt (cadr ent))

 

Souvent, on n'a besoin que de l'entité, donc on fait directement :

(setq ename (car (entsel)))

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

Posté(e)

Salut Bertrand,

 

Le

car

sers à quoi?

 

Ça c'est fondamental. LISP est un langage de manipulation des listes :

Une expression LISP c'est : (définition récursive)

  • soit un atome (un objet élémentaire comme un nombre, une chaîne de caractère, une entité, une fonction, etc.)
  • soit une liste d'expressions LISP (voir ci-dessus)

Donc les fonctions de manipulation des listes telles que car, cdr (et leurs différentes combinaisons), cons, list, quote sont absolument fondamentales.

Il est indispensable des les connaitre pour pouvoir avancer en LISP (CF chapitre 8 page 18 de introduction à AutoLISP).

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

Posté(e)

Comme on dit : je comprend vite mais faut m'expliquer longtemps ...

 

Allez je me paluche l'intro au LISP en entier avant de revenir, y'en a qui se sont fait chier à l'écrire le minimum c'est quand même que je le lise en entier... (me taper pas, je suis du genre relou en collègue de bureau... et en élève celui qui pose 20.000 questions histoire d'être sur de ce qu'il a compris...)

 

PS : vous moquez pas, on à tous commencer un jour :P (pis je suis encore jeune et con comparer à certains, j'ai pas dit de nom, vous remarquerez ! :D

 

Cette année c'est les 30 ans de votre humble et perturbateur élève ! qui veut venir boire un coup ? Ou deux ? :)

 

Re PS : vous remarquerez que de nouveau je n'ai pas rappeler que 30 ans c'est environ le temps qu'on certains en termes de manipulation autocad (voir plus pour certains :P ) "Fallait pas réveiller la bête ! **gnark gnark gnark!** "

"98% des soucis informatiques sont assis entre la chaise et le bureau !"

 

"C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Posté(e)

Hello

 

Felicitations pour ceux qui tentent la plongee vers le Lisp !

 

33 ans d'AutoCAD et environ 8 ans de Lisp dans les annees 91-99 ...

J'ai a peu pres TOUT oublie du Lisp ! ... Normal pour un vieux ...

 

Good Luck, Bye, lecrabe

Autodesk Expert Elite Team

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é