Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

aide pour code lisp

10 RÉPONSES 10
RÉSOLU
Répondre
Message 1 sur 11
Anonymous
506 Visites, 10 Réponses

aide pour code lisp

Bonjour à tous, Avec l'aide d'un bouton qui va servir à transférer les éléments que je vais sélectionner dans la liste du calque zéro les éléments pour les transférer vers le calque voulu situé dans la liste des calques présents dans le dessin. Et ainsi de suite, pourqu'il n'y ait plus rien sur le calque zéro. Pouvez vous m'aider à réaliser les étapes suivantes: 1- transférer à l'aide du bouton 2- en récuperant les éléments sélectionnés 3- en les mettant dans le calque que j'ai sélectionné Je répète cette étape juqu'à ce que j'ai rangé tous les objets dans le calque zéro dans les bons calques. Pouvez vous m'aidez à réaliser ce bout de code. Je joins l'image de la boite dcl. merci par avance de m'aider à compléter le lisp.
10 RÉPONSES 10
Message 2 sur 11
Anonymous
en réponse à: Anonymous

voici l'image de la boite dcl
Message 3 sur 11
Anonymous
en réponse à: Anonymous

j'arrive pas à joindre la photo?
Message 4 sur 11
Kevin_Megel
en réponse à: Anonymous

Bon j'essai de comprendre se que tu veux:

 

1- tu selectionne les objet

2- en appuillant sur un bouton, tu as la liste des calques

3- tu choisit le calque ou tu veux que ta selction aille

 

et tu veux reproduire la manip jusqu'a se que tu n'ai plus rien sur le calque 0

 

Bref si c'est ça (j'en suis pas sur) pas besoin de code lips le menu déroulant dans la barre d'outil " calque" permet de faire ça, en cliquant sur le petit triangle tu as la liste des calques, et tu choisit celui que tu veux.

 

Kevin Megel
Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Je suis un simple utilisateur, je ne travaille pas pour Autodesk

Message 5 sur 11
Anonymous
en réponse à: Kevin_Megel

salut Megeon, je sais qu'on peut le faire sans lisp mais mon but c'est automatiser cette tache. j'ai un lisp et un fichier dcl que j'aimerais finaliser. peux tu m'aider à finir ce lisp et le fichier dcl. Bienvenue à toute personne pour son aide.
Message 6 sur 11
Kevin_Megel
en réponse à: Anonymous

Je veux bien t'aider, mais pour le code lips, je ne fait que commencer ( je lis introduction a autolips de gils), je ne suis pas en mesure de t'aider. dsl

Kevin Megel
Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Je suis un simple utilisateur, je ne travaille pas pour Autodesk

Message 7 sur 11
_gile
en réponse à: Kevin_Megel

Salut,

 

La demande n'est pas claire du tout à mes yeux.

Si tu veux de l'aide, essaye d'être plus explicite sur ce que tu veux faire et donne les codes de ce que tu as déjà fait.



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 8 sur 11
Anonymous
en réponse à: _gile

Merci Megeon, moi aussi j 'ai commencé à lire le tutoriel de Gile. Pour Gile, j ai mis les fichiers en pièces jointes. Si ça ne marche pas, je ferais une nouvelle réponse en copiant directement les fichiers.
Message 9 sur 11
Anonymous
en réponse à: Anonymous

Re Gile, ça n'a pas l'air d'être joints, je vais donc les mettre directement. En lançant la commande myfirst, si pas d'objets sur calque zéro, une boite d'alerte s'affiche "Aucun objet sur le calque zéro" si objets sur calque zéro, une boite de dialogue s'affiche avec 2 colonnes : une pour la liste des objets sur le calque zéro et une autre pour la liste des calques dans le dessin. Maintenant, j'aimerais réaliser la chose suivante: 1er étape : récupérer certains éléments que je sélectionne sur la colonne " liste des objets sur le calque zéro " 2ième étape : récupérer l'élément concernant le calque que je sélectionne sur la colonne " liste des calques " 3ième étape: par l'intermédiaire d'un bouton "Transfert" situé sur la boite de dialogue, transférés les éléments sélectionnés dans le calque également sélectionné. Ainsi de suite, jusqu'à ce qu'il n'y ait plus d'objets sur le calque zéro. Puis par un 2nd bouton "Quitter"situé sur la boite de dialogue, quitter. J'espère avoir été clair. Merci Gile. le lisp : (defun c:MyFirst ( /) ;;; initialisation variable ss (setq ss (ssadd)) ;;; mise à nil de la variable y (setq y nil) ;;; s'il n y a pas de jeu de sélection (if (not (setq ss (ssget "_X" '((8 . "0"))))) ;;; envoye un message d'alerte à l'écran (alert "Aucun objet sur le calque zéro") ;;; sinon (repeat (setq n (sslength ss)) ;;; sinon répète en mettant dans n ce qu'ily a dans le jeu de sélection de la variable ss (setq y (cons (cdr (assoc 0 (entget (ssname ss (setq n (1- n)))))) y ) ) ) );;; fin de if ;;; mise à nil de la variable y (setq r nil) ;;; initialisation du pointeur du tableau de calques (setq l (tblnext "layer" T)) ;;;tant que la la fin du tableau calque n'est pas atteinte (while (setq l (tblnext "layer")) ;;; contruit une liste avec le nom du calque qui correspont au code 2. (setq r (cons (cdr (assoc 2 l)) r)) ) ;;; retourne la liste des noms de calques (setq r (reverse r)) ;|«Visual LISP© Format Options» (120 2 1 2 nil "Ende von " 60 20 1 1 0 nil nil nil T) ;*** NE PAS AJOUTER de texte au-dessous du commentaire! ***|; ;;; permet de sortir du programme proprement (sans générer un message d'erreur) (setq dialogLoaded T dialogShow T ) ; Load the dialog box. Set up error checking to make sure ; the dialog file is loaded before continuing (if (= -1 (setq dcl_id (load_dialog (findfile "MyDialogs.dcl")))) (progn (princ "\nCannot load MyDialogs.dcl") (setq dialogLoaded nil) ) ) (if (and dialogLoaded (not (new_dialog "MyFirst" dcl_id)) ) ; SINON (progn (princ "\nCannot show dialog MyFirst") (setq dialogShow nil) ) ) (if (and dialogLoaded dialogShow) (progn ; Set the initial state of the tiles (start_list "List1") (mapcar 'add_list y) (end_list) (start_list "List2") (mapcar 'add_list r) (end_list) (action_tile "accept" (strcat "(progn (setq NUMDEP (get_tile \"NUMDEP\"))" "(setq PREF (get_tile \"PREF\"))" "(setq SUFIX (get_tile \"SUFIX\"))" "(setq INCRE (get_tile \"INCRE\"))" "(setq VAR_CANCEL nil)" "(done_dialog))" ) ) (action_tile "cancel" "(setq VAR_CANCEL nil)(done_dialog)") (start_dialog) (unload_dialog dcl_id) ) ) (princ) ) le fichier dcl: //--------------------------------------------------------------------------------------------------------- // MyFirst //--------------------------------------------------------------------------------------------------------- MyFirst : dialog {label="change les objets de calques by Amar - V1.00"; : row { : boxed_column {label = "Liste des objets sur le calque zéro"; : list_box { key = "List1";//Value1$ from lsp file multiple_select = true; height = 20; fixed_height = true; width = 30; fixed_width = true; } spacer; } : boxed_column { label = "Liste des calques"; : list_box { multiple_select = false; key = "List2";//Value2$ from lsp file height = 20; fixed_height = true; width = 30; fixed_width = true; } spacer; } } spacer; : row {label = "Onglets"; : button {key = "transférer"; label = "transférer dans"; width = 12; fixed_width = true; } } : spacer { width = 1; } key = "Title"; label = "Autocad Message";//Title$ from lsp file spacer; : text { key = "Text1"; label = "";//Message$ from lsp file width = 20; alignment = centered; } spacer; : row { // définit la rangée des boutons OK et Annuler : spacer { width = 0; } : button { key = "accept"; label = "OK"; is_default = true; fixed_width = true; alignment = centered; } : button { // définit le bouton Annuler label = "Annuler"; is_cancel = true; key = "cancel"; width = 8; fixed_width = true; } : spacer { width = 0; } } }
Message 10 sur 11
_gile
en réponse à: Anonymous

Ton code est illisible.

Pour poster de code, clique sur la 6ème icone de la barre d'outils (Insérer un code) et colle (Ctrl+V) ton code correctement formaté puis fait "Insérer" le code s'affichera correctement dans le message.



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 11 sur 11
Anonymous
en réponse à: _gile

lisp (defun c:MyFirst ( /) ;;; initialisation variable ss (setq ss (ssadd)) ;;; mise à nil de la variable y (setq y nil) ;;; s'il n y a pas de jeu de sélection (if (not (setq ss (ssget "_X" '((8 . "0"))))) ;;; envoye un message d'alerte à l'écran (alert "Aucun objet sur le calque zéro") ;;; sinon (repeat (setq n (sslength ss)) ;;; sinon répète en mettant dans n ce qu'ily a dans le jeu de sélection de la variable ss (setq y (cons (cdr (assoc 0 (entget (ssname ss (setq n (1- n)))))) y ) ) ) );;; fin de if ;;; mise à nil de la variable y (setq r nil) ;;; initialisation du pointeur du tableau de calques (setq l (tblnext "layer" T)) ;;;tant que la la fin du tableau calque n'est pas atteinte (while (setq l (tblnext "layer")) ;;; contruit une liste avec le nom du calque qui correspont au code 2. (setq r (cons (cdr (assoc 2 l)) r)) ) ;;; retourne la liste des noms de calques (setq r (reverse r)) ;|«Visual LISP© Format Options» (120 2 1 2 nil "Ende von " 60 20 1 1 0 nil nil nil T) ;*** NE PAS AJOUTER de texte au-dessous du commentaire! ***|; ;;; permet de sortir du programme proprement (sans générer un message d'erreur) (setq dialogLoaded T dialogShow T ) ; Load the dialog box. Set up error checking to make sure ; the dialog file is loaded before continuing (if (= -1 (setq dcl_id (load_dialog (findfile "MyDialogs.dcl")))) (progn (princ "\nCannot load MyDialogs.dcl") (setq dialogLoaded nil) ) ) (if (and dialogLoaded (not (new_dialog "MyFirst" dcl_id)) ) ; SINON (progn (princ "\nCannot show dialog MyFirst") (setq dialogShow nil) ) ) (if (and dialogLoaded dialogShow) (progn ; Set the initial state of the tiles (start_list "List1") (mapcar 'add_list y) (end_list) (start_list "List2") (mapcar 'add_list r) (end_list) (action_tile "accept" (strcat "(progn (setq NUMDEP (get_tile \"NUMDEP\"))" "(setq PREF (get_tile \"PREF\"))" "(setq SUFIX (get_tile \"SUFIX\"))" "(setq INCRE (get_tile \"INCRE\"))" "(setq VAR_CANCEL nil)" "(done_dialog))" ) ) (action_tile "cancel" "(setq VAR_CANCEL nil)(done_dialog)") (start_dialog) (unload_dialog dcl_id) ) ) (princ) )

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report