Charly Albisser Posté(e) le 11 juin 2020 Posté(e) le 11 juin 2020 Bonjour à tous Je découvre les lisp et leur puissance incroyable mais je n'ai malheureusement pas encore eu le temps de me former. J'ai pour projet de faire un lisp qui m'aiderais grandement à mon travail. Grosso modo voilà ce que je souhaite faire , sur un plan je souhaiterais insérer des bulles (avec 2 attributs: - et -- ) mais que d'un coté les bulles se numérote automatiquement de 10 en 10 sur l'attribut -- (10,20,30...) mais qu'au moment du click d'insertion il me demande une valeur à integrer dans l'attribut - .Actuellement j'utilise le LISP increment de gileCAD trouvable ici . Pourriez vous m'aider à completer la commande INCATT pour integrer la demande pour l'attribut -. merci beaucoup d'avance
Luna Posté(e) le 12 juin 2020 Posté(e) le 12 juin 2020 Salut, Si on prend cette partie de code qui correspond à l'insertion de ton bloc issue de la commande INCATT :(if tag (while (setq ins (getpoint "\nSpécifiez le point d'insertion: ")) (vla-put-Textstring (nth tag (vlax-invoke (vla-InsertBlock space (vlax-3d-point (trans ins 1 0)) name scl scl scl rot ) 'getAttributes ) ) (strcat pref val suff) ) (setq val (incsuff val inc 7)) ) ) Il faut tout simplement refaire une définition d'attribut mais pour ça on a besoin du nom de l'attribut donc si on veut faire ça proprement, il faudrait ajouter dans la fenêtre de sélection des attributs ajouter une ligne pour la sélection de l'attribut n°2. Autrement, pour faire au plus court, on va simplement demander d'écrire le nom d'attribut à la mano (le risque d'erreur est grand mais on va procéder par étape pour faire ça proprement) Donc on ajoute une condition pour le second attribut en vérifiant qu'il existe bien dans la liste des attributs : (if (and tag (member (setq tag2 (getstring t "\nVeuillez spécifier le nom du second attribut à définir :")) lst)) ( . . . ) (princ "\nErreur: Nom d'attribut incorrect") ) Suite à ça, il faut relancer la définition d'attribut mais pour le second attribut donc ceci devrait suffire : (if (and tag (member (setq tag2 (getstring t "\nVeuillez spécifier le nom du second attribut à définir :")) lst)) (while (setq ins (getpoint "\nSpécifiez le point d'insertion: ")) (vla-put-Textstring (nth tag (vlax-invoke (setq e (vla-InsertBlock space (vlax-3d-point (trans ins 1 0)) name scl scl scl rot ) ) 'getAttributes ) ) (strcat pref val suff) ) (vla-put-Textstring (nth (vl-position tag2 lst) (vlax-invoke e 'getAttributes)) (getstring t "\nSpécifier la valeur du second attribut : ") ) (setq val (incsuff val inc 7)) ) (princ "\nErreur: Nom d'attribut incorrect") ) Dans un premier ceci devrait fonctionner mais je te conseille de créer une seconde commande INCATT pour conserver le fonctionnement de la commande intact et ainsi utiliser personnellement une seconde version :3 Bisous (de loin),Luna 1
(gile) Posté(e) le 12 juin 2020 Posté(e) le 12 juin 2020 Salut, Avec ces routines d'incrémentations, j'avais essayé de faire quelque chose de polyvalent.Je pense que pour un besoin spécifique, vouloir partir d'une routine polyvalente n'est certainement pas le plus simple. Si je comprends bien la demande, il s'agit d'insérer un bloc particulier avec deux attributs dont un doit être renseigné par l'utilisateur et l'autre incrémenté de 10 à chaque insertion. Autrement dit : on demande à l'utilisateur de spécifier la valeur de départ pour l'attribut à incrément et tant qu'il spécifie un point et la valeur de l'autre attribut, on insère le bloc avec ces valeurs et on incrémente. Ceci peut-être assez facilement implémenté en utilisant la fonction command pour insérer le bloc avec ATTREQ à 1 pour renseigner les attributs dans la même expression. 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Charly Albisser Posté(e) le 12 juin 2020 Auteur Posté(e) le 12 juin 2020 Merci beaucoup pour vos réponses rapides je vais voir pour coder ça ! Au moins je sais où je dois creuser
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant