Aller au contenu

LISP pour incrementation et attribut


Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

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

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.

  • Upvote 1

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

Lien vers le commentaire
Partager sur d’autres sites

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é