Aller au contenu

[Résolu] Déplacement dans un calque par Lisp


Messages recommandés

Posté(e)

Bonjour,

Je voudrais créer un lisp qui se nommerait : Décompté et qui ferait l'action suivante :

Quel que soit l'objet sélectionné => déplacement dans le calque : "!  ! métré - Cotation Décompté"

Le calque "!  ! métré - Cotation Décompté" existe déjà

 

Comment faire ?

j'ai essayé d'enregistrer une action (l'équivalent de enregistrer la macro sur Excel) mais je ne pense pas que ce soit la bonne solution...

 

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

PS : éviter les accents, les espaces et autres caractères spéciaux excepté le souligner (_) dans les noms de symboles (calques, blocs, fonctions LISP, etc), t'évitera bien des déboires ultérieurs...

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

Posté(e)

En langage courant :

Première option :

1) sélectionner un objet avec validation automatique ou manuel ?

2) déplacer l'objet vers le calque de destination

 

Deuxième option :

1) sélectionner plusieurs objets puis validation automatique ou manuel ou validation à chaque sélection d'un objet ?

2) déplacer les objets vers le calque de destination

 

Essaye de trouver la fonction adéquate pour chaque étape.

Indice pour le point 1, tu peux utiliser la commande SSGET, pour le 2, tu peux utiliser la commande CHPROP.

Il peut y avoir d'autres possibilités 😉 

Posté(e)

Bonjour, 

 

Regarder du côté de (ssgetfirst) https://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-F18CB64C-1B18-46F3-BAD4-24D83214CE0D qui permet de savoir si un ou plusieurs objet(s) est (sont) sélectionnés avant de lancer la commande. Cette fonction te renvoie nil si pas d'objet sélectionné, sinon elle renvoie une liste dont le 2ème argument est le jeu de sélection des objets précédemment sélectionnés.

 

Olivier 

Posté(e)
Il y a 14 heures, JPhil a dit :

En langage courant :

Première option :

1) sélectionner un objet avec validation automatique ou manuel ?

2) déplacer l'objet vers le calque de destination

 

Deuxième option :

1) sélectionner plusieurs objets puis validation automatique ou manuel ou validation à chaque sélection d'un objet ?

2) déplacer les objets vers le calque de destination

 

Essaye de trouver la fonction adéquate pour chaque étape.

Indice pour le point 1, tu peux utiliser la commande SSGET, pour le 2, tu peux utiliser la commande CHPROP.

Il peut y avoir d'autres possibilités 😉 

Salut JPhil,

Tout d'abord, merci d'avoir prit le temps de regarder mon problème.

Ensuite, pour répondre à ta question l'ordre est plutôt :

1) sélection du ou des objets à déplacer

2) clic sur l'icône (lié à la commande lisp) qui déplace les objets dans le calque voulu

3) désélection des objets

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

Coucou,

La véritable question est : désires-tu que l'on écrive un programme pour toi ou bien souhaites-tu seulement que l'on te donne des pistes de recherche afin que tu puisses écrire la commande par toi-même ?

Il existe de nombreuses solutions à ton problème, que se soit en terme de fonctions ou même de langage utilisé. Une macro ou un script pourrait même faire l'affaire :)

Il y a 16 heures, barbichette a dit :

En fait j'en suis à :

Je ne sais même pas par où commencer...

 

Lorsque tu dis chat, tu veux dire d'un point de vue général (tu ne connais pas la programmation) ou c'est un souci de vocabulaire (tu ne sais pas quelle(s) fonction(s) utiliser) ou c'est un soucis d'organigramme (ce qui ne semble pas être le cas vu que tu sais déjà ce que tu veux que ton programme fasse) ?

Bisous,
Luna

Posté(e)
il y a 49 minutes, barbichette a dit :

Salut JPhil,

Tout d'abord, merci d'avoir prit le temps de regarder mon problème.

Ensuite, pour répondre à ta question l'ordre est plutôt :

1) sélection du ou des objets à déplacer

2) clic sur l'icône (lié à la commande lisp) qui déplace les objets dans le calque voulu

3) désélection des objets

L'ordre d'exécution serait plutôt :

1) je lance le lisp

2) le lisp me demande de sélectionner un ou plusieurs objets -> l'utilisateur doit sélectionner un objet sinon le programme s'arrête 

3) une fois le ou les objets sélectionnés je valide par la touche "Entrée" afin de faire comprendre au programme lisp que l'utilisateur a fini

4) le lisp va déplacer le ou les objets dans le bon calque -> l'utilisateur ne fait rien

5) ben ... le programme s'arrête et l'utilisateur n'a plus rien à faire aussi 😉 

Posté(e)
il y a 1 minute, Luna a dit :

Coucou,

La véritable question est : désires-tu que l'on écrive un programme pour toi ou bien souhaites-tu seulement que l'on te donne des pistes de recherche afin que tu puisses écrire la commande par toi-même ?

Il existe de nombreuses solutions à ton problème, que se soit en terme de fonctions ou même de langage utilisé. Une macro ou un script pourrait même faire l'affaire 🙂

Lorsque tu dis chat, tu veux dire d'un point de vue général (tu ne connais pas la programmation) ou c'est un souci de vocabulaire (tu ne sais pas quelle(s) fonction(s) utiliser) ou c'est un soucis d'organigramme (ce qui ne semble pas être le cas vu que tu sais déjà ce que tu veux que ton programme fasse) ?

Bisous,
Luna

Salut Luna,

En fait je suis plutôt calé en programmation VBA pour Excel.

Je connais un peu le principe des variables et des commandes.

Je sais également que ce domaine est très sensible à l'écriture (code, parenthèses, ordre des commandes...)

J'ai déjà posé un certains nombre de question ici, et ait reçu en retour des réponses très utiles.

Mais à chaque fois que j'ai essayé de décrypter les codes qui m'ont été envoyé, je me suis heurté à mon manque de connaissance en lisp et un manque de temps pour les approfondir.

 

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)
il y a 27 minutes, JPhil a dit :

L'ordre d'exécution serait plutôt :

1) je lance le lisp

2) le lisp me demande de sélectionner un ou plusieurs objets -> l'utilisateur doit sélectionner un objet sinon le programme s'arrête 

3) une fois le ou les objets sélectionnés je valide par la touche "Entrée" afin de faire comprendre au programme lisp que l'utilisateur a fini

4) le lisp va déplacer le ou les objets dans le bon calque -> l'utilisateur ne fait rien

5) ben ... le programme s'arrête et l'utilisateur n'a plus rien à faire aussi 😉 

En fait non...

L'ordre est bien

Je sélectionne les cotations que j'ai pris en compte

je clic sur un icône et zou, plus rien à faire.

 

En fait, pour expliquer la raison du besoin de ce lisp est que je l'utilise pour faire mes métrés.

J'ai un certain nombre de cotation sur mon/mes plans, et dès que je prend en compte une cotation, je la déplace du calque "Cotation" au calque "Cotation décompté"

Ce lisp est destiné à réduire (un tout petit peu) mes actions.

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

J'ai donc fait des recherche et j'ai trouvé ce bout de code

(defun c:setpl1 ()
  (command "_.chprop"
    (ssget ) "" "LA" "!  ! métré - Cotation Decompte" "")
         )

Setpl1 : lance le lisp

chprop : c'est la commande qui va changer le calque de la sélection

"! ! métré - cotation decompte" : est le nom du calque de destination

 

mais cela ne fonctionne pas

autocad me renvoi "<selection: 284>" 

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

Bon,

Finalement, vous m'avez incité à chercher et comprendre au lieu de juste demander à ce que l'on me le fasse.

J'ai finalement trouvé.

J'ai créé un icône et lui ait attribué la macro de commande suivante

(command "_.chprop" (ssget ) "" "CA" "!  ! métré - Cotation Décompté" "")

et cela fonctionne.

 

Merci

 

***********************

Rien ne sert de courrir, il faut partir à point.

Posté(e)

Super si ça fonctionne 😉 

Histoire de compléter pour un prochain utilisateur qui veut faire comme toi, peux-tu expliquer cette partie là "J'ai créé un icône et lui ait attribué la macro de commande".

Posté(e)
il y a 32 minutes, JPhil a dit :

Super si ça fonctionne 😉 

Histoire de compléter pour un prochain utilisateur qui veut faire comme toi, peux-tu expliquer cette partie là "J'ai créé un icône et lui ait attribué la macro de commande".

Bien sur :

Outils=> Personnaliser=>Menu
Dans le cadre liste des commandes, créer une nouvelle commande
Donner un nom, dans la macro : ^C^C(command "_.chprop" (ssget ) "" "CA" "!  ! métré - Cotation Décompté" "")
Choix d'un icône de bouton
Rajout de cet icône/commande dans la barre d'outils souhaitée
=>Appliquer=>Ok

 

 

  • Like 2

***********************

Rien ne sert de courrir, il faut partir à point.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é