Aller au contenu

Personnalisation des commandes dans une palette


Netparty

Messages recommandés

Bonjour à tous

Je cherche à personnaliser ma palette.

Exemple, j'ai placé dans ma palette l'outil ligne mais est-il possible que le point d'insertion de ma ligne soit à 0,0

Dans la chaine de commande j'ai mis : ^C^C_line;0 0 mais cela ne fonctionne pas.

Si vous pourriez aussi me dire ou je peux trouver les paramètres disponibles pour personnaliser les commandes

Merci d'avance pour votre aide

 

Bonne journée

 

Lien vers le commentaire
Partager sur d’autres sites

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, Eric a dit :

Bonjour,

Dans la macro il manque une virgule entre les deux 0 et un point-virgule après.

^C^C_line;0,0;

Je vous invite aussi à consulter ce document :

https://knowledge.autodesk.com/fr/support/autocad-lt/learn-explore/caas/CloudHelp/cloudhelp/2020/FRA/AutoCAD-LT/files/GUID-D991386C-FBAA-4094-9FCB-AADD98ACD3EF-htm.html

 

J'ai encore une question

Aprés que la commande ^C^C_line;0,0; est terminée peut-on lancer une deuxième commande

Merci

 

Lien vers le commentaire
Partager sur d’autres sites

Oui, c'est possible. Dans le cas de la commande ligne il faut ajouter un \ pour faire une pause et permettre à l'utilisateur de sélectionner le deuxième point puis ensuite on peut enchaîner sur une autre commande.

^C^C_line;0,0;\;_move;

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Le 12/12/2021 à 16:03, Eric a dit :

Oui, c'est possible. Dans le cas de la commande ligne il faut ajouter un \ pour faire une pause et permettre à l'utilisateur de sélectionner le deuxième point puis ensuite on peut enchaîner sur une autre commande.

^C^C_line;0,0;\;_move;

Bonjour Eric

J'ai encore une question, j'ai essayé de personnaliser une commande qui dessine une polyligne avec une épaisseur de 50

^C^CPLINEWID;50;_pline jusque la cela fonctionne mais est-il possible quand j'ai terminé ma polyligne de revenir sur le calque 0.

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

une autre solution serait par de la prog pure est simple ^^"

(defun c:NOMDELACOMMANDE ()
	(setvar "PLINEWID" 50)
	(command "_PLINE" pause)
	(setvar "CLAYER" "0")
	(princ)
)

Tu définis le nom de la commande que tu désires (il faut remplacer NOMDELACOMMANDE par le nom de la commande que tu souhaites, en conservant le 😄) et tu enregistres le fichier en .lsp
Après chat, tu fais APPLOAD dans AutoCAD et tu spécifies ton fichier .lsp dans les fichiers à charger au démarrage (le bouton "Contenu" sous la valise). Tu peux même créer un bouton ou un alias de commande pour cela et chat fera ce que tu as demandé. Sinon, tu attends qu'une personne qui maîtrise davantage le script que moi passe par là et trouve une solution si solution il y a... 🙂

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Il y a 11 heures, Luna a dit :

une autre solution serait par de la prog pure est simple ^^"

(defun c:NOMDELACOMMANDE ()
	(setvar "PLINEWID" 50)
	(command "_PLINE" pause)
	(setvar "CLAYER" "0")
	(princ)
)

Tu définis le nom de la commande que tu désires (il faut remplacer NOMDELACOMMANDE par le nom de la commande que tu souhaites, en conservant le 😄) et tu enregistres le fichier en .lsp
Après chat, tu fais APPLOAD dans AutoCAD et tu spécifies ton fichier .lsp dans les fichiers à charger au démarrage (le bouton "Contenu" sous la valise). Tu peux même créer un bouton ou un alias de commande pour cela et chat fera ce que tu as demandé. Sinon, tu attends qu'une personne qui maîtrise davantage le script que moi passe par là et trouve une solution si solution il y a... 🙂

Bisous,
Luna

Bonjour Luna

Super c'est impeccable.

Est-il possible aussi de définir l’échelle du type de ligne?

Un tout grand merci

Bonne journée

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Luna a dit :

Bien sûr, aide-toi du fichier réalisé par rebcao faisant la liste des variables systèmes AutoCAD : Liste des variables systèmes. Pour l'échelle il me semble que c'est LTSCALE. Il te suffit d'ajouter une ligne (setvar) là où tu le souhaites (avant le lancement de la (command) ou après).

Bisous,

Luna

Re bonjour

J'y suis presque

mais quand je termine la commande Pline le reste du code (setvar "CPLINEWID" 0) n'est pas pris en compte.

Aurais-tu une idée.

merci

 

(defun c:ZONE-TD-PLAN ()
	(setvar "PLINEWID" 50) ; Largeur global de la polyligne
	(setvar "CELTSCALE" 25) ; Echelle du type de ligne
	(command "_layer" "_new" "COL_3_Tableaux-zonage" "") ; Création du calque
	(setvar "CLAYER" "COL_3_Tableaux-zonage") ; Se place sur le calque pour dessiner la polyligne
	(command "_PLINE" pause) ; Dessiner la polyligne
	(setvar "CLAYER" "0") ; Se place sur le calque 0
	(setvar "CELTSCALE" 1) ; Redéfinit l'échelle à 1
	(setvar "CPLINEWID" 0) ; Redéfinit la largeur global à 0 <------ Ne fonctionne pas
	
	(princ)

 

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Déjà si je me base uniquement sur ce que tu as publié, il manque la dernière parenthèse pour le (defun) mais je suppose tout de même que c'est uniquement une erreur de sélection lors du copier/coller. Autrement je pense avoir compris le soucis. De manière générale on utilise une boucle (while) avec les (command "_PLINE") afin de s'adapter au nombre variable de sommets. Ici le programme créé une polyligne avec un sommet unique, puis essaye de redéfinir les variables "CLAYER", "CELTSCALE" et "PLINEWID" alors qu'AutoCAD est toujours en train de créer une polyligne. Donc pour CLAYER et CELTSCALE pas de problème il arrive à gérer, par contre pour PLINEWID il est obligé de conserver la valeur à 50 pour continuer à tracer la polyligne correctement 😉

Essaye plutôt comme ceci :

(defun c:ZONE-TD-PLAN (/ pt0 pt)
	(setvar "PLINEWID" 50) ; Largeur global de la polyligne
	(setvar "CELTSCALE" 25) ; Echelle du type de ligne
	(command "_layer" "_new" "COL_3_Tableaux-zonage" "") ; Création du calque
	(setvar "CLAYER" "COL_3_Tableaux-zonage") ; Se place sur le calque pour dessiner la polyligne
	(command "_PLINE" (setq pt0 (getpoint "\nSpécifiez le point de départ : "))) ; Dessiner la polyligne
	(while (setq pt (getpoint pt0 "\nPoint suivant : "))
		(command pt)
		(setq pt0 pt)
	)
	(command)
	(setvar "CLAYER" "0") ; Se place sur le calque 0
	(setvar "CELTSCALE" 1) ; Redéfinit l'échelle à 1
	(setvar "PLINEWID" 0) ; Redéfinit la largeur global à 0
	
	(princ)
)

Une autre solution serait celle-ci pour conserver toutes les options prévue par une commande grâce aux options pause (autrement dit, cela simule un lancement de commande parfaitement classique) :

(command "_PLINE" pause)
(while (/= (getvar "CMDACTIVE") 0)
	(command pause)
)

en remplacement de :

(command "_PLINE" (setq pt0 (getpoint "\nSpécifiez le point de départ : ")))
(while (setq pt (getpoint pt0 "\nPoint suivant : "))
	(command pt)
	(setq pt0 pt)
)
(command)

Bisous,
Luna

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Luna a dit :

Coucou,

Déjà si je me base uniquement sur ce que tu as publié, il manque la dernière parenthèse pour le (defun) mais je suppose tout de même que c'est uniquement une erreur de sélection lors du copier/coller. Autrement je pense avoir compris le soucis. De manière générale on utilise une boucle (while) avec les (command "_PLINE") afin de s'adapter au nombre variable de sommets. Ici le programme créé une polyligne avec un sommet unique, puis essaye de redéfinir les variables "CLAYER", "CELTSCALE" et "PLINEWID" alors qu'AutoCAD est toujours en train de créer une polyligne. Donc pour CLAYER et CELTSCALE pas de problème il arrive à gérer, par contre pour PLINEWID il est obligé de conserver la valeur à 50 pour continuer à tracer la polyligne correctement 😉

Essaye plutôt comme ceci :

(defun c:ZONE-TD-PLAN (/ pt0 pt)
	(setvar "PLINEWID" 50) ; Largeur global de la polyligne
	(setvar "CELTSCALE" 25) ; Echelle du type de ligne
	(command "_layer" "_new" "COL_3_Tableaux-zonage" "") ; Création du calque
	(setvar "CLAYER" "COL_3_Tableaux-zonage") ; Se place sur le calque pour dessiner la polyligne
	(command "_PLINE" (setq pt0 (getpoint "\nSpécifiez le point de départ : "))) ; Dessiner la polyligne
	(while (setq pt (getpoint pt0 "\nPoint suivant : "))
		(command pt)
		(setq pt0 pt)
	)
	(command)
	(setvar "CLAYER" "0") ; Se place sur le calque 0
	(setvar "CELTSCALE" 1) ; Redéfinit l'échelle à 1
	(setvar "PLINEWID" 0) ; Redéfinit la largeur global à 0
	
	(princ)
)

Une autre solution serait celle-ci pour conserver toutes les options prévue par une commande grâce aux options pause (autrement dit, cela simule un lancement de commande parfaitement classique) :

(command "_PLINE" pause)
(while (/= (getvar "CMDACTIVE") 0)
	(command pause)
)

en remplacement de :

(command "_PLINE" (setq pt0 (getpoint "\nSpécifiez le point de départ : ")))
(while (setq pt (getpoint pt0 "\nPoint suivant : "))
	(command pt)
	(setq pt0 pt)
)
(command)

Bisous,
Luna

Bonjour Luna

 

C'est top

Un tout grand merci

 

Bonne journée

Lien vers le commentaire
Partager sur d’autres sites

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é