Aller au contenu

Dernier point utilisateur pour inserer un bloc


Topheur

Messages recommandés

Bonjour à tous les forumeurs et les forumeuses et joyeux 14 Juillet à tous :)

 

Comme d'habitude, j'ai un problème de code lisp.

 

J'aimerais récupérer le dernier clique utilisateur pour insérer un bloc.

 

Mon code permet de créer une cotation alignée avec toujours le même point de départ

 

;trace la cote alignée en demandant le dernier point

(setq pfin_cot (getpoint pdep "\nSpécifiez le point de cotation: "))

(command "_dimaligned" pdep pfin_cot pause) ;; dessine la côte

 

et insert un bloc en demandant le point d'insertion du bloc

;(setq pins (getpoint "\nInsertion ?\n"))

 

J'aimerais insérer mon bloc au bout de ma cote (le point pfin_cot).

J'ai essayé ça

(setq pins (getpoint (pfin_cot))

 

Mais ça ne fonctionne pas :(

 

Merci de votre aide :P

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Le point que tu veux est enregistré dans la variable pfin_cot, il te suffit de l'utiliser directement pour insérer le bloc :

 

(command "_.insert" "le_nom_du_bloc" pfin_cot 1.0 1.0 0.0)

 

Bonjour les lispeurs,

 

Je vous ai dérangé pour rien, je voulais absolument modifier la ligne getpoint et je n'ai pas pensé à regarder la ligne d'insertion du bloc ! J'aurais pu trouvé tous seul si j'avais réfléchis ! Grrr !

 

Du coup cela amène une nouvelle question (qui n'a rien à voir), dans mon lisp, je demande à l'utilisateur de rentré un premier numéro, je fais une boucle et le lisp effectue une cotation, l'insertion d'un bloc puis incrémente le numéro puis effectue une cotation, insert le bloc incrémente, etc...

 

Le soucis c'est qu'à de rare cas, le numéros suivant ne fait pas partie d'une suite logique. Par exemple, je peux avoir 1 2 3, puis avoir 1 2 31 4 5 par exemple (car le numéro 3 est déjà utilisé par le client du coup il deviens x1).

Un autre exemple : 1 2 3 4 5 61 7 8 9 (là 6 est déjà utilisé, il deviens 61)

 

Comment je peux donner le choix de modifier le numéro à incrémenter à la demande du client ?

 

Dans l'idée, lorsque le lisp incrémente, il faudrait un getstring avec noté Incrément ? x (valeur du nombre)puis à la fin le code ré-incrémente avec la dernière valeur de la suite logique.

 

Exemple : 1 2 3 51 6 7

donnera lorsque 3 est inséré Incrément ? 4 => l'utilisateur appuie sur entrée pour valider

puis donnera lorsque 4 est inséré Incrément ? 5 => l'utilisateur note 51

l'utilisateur insère 51 et avoir Incrément ? 6

 

Voici la partie avec ma boucle

 


;boucle tant que numero_piece inférieur à 14
(while (<= numero_piece 14)

;afficher un message en bas de l'écran 
(grtext -1 "Tracer de la Cote...")

;point de départ de la cote
(setq pdep (getpoint "\nCliquer sur le centre de la PIECE: "))

;t=true la boucle se répétera tant que l'on n'en sortira pas avec un echap
(while T  ;; t=true la boucle se répétera tant que l'on n'en sortira pas avec un echap

;defini le calque cotation comme courant
(command "calque" "CH" "_COT. PIECE" "")

;trace la cote alignée en demandant le dernier point
(setq pfin_cot (getpoint pdep "\nSpécifiez le point de cotation: "))
(command "_dimaligned" pdep pfin_cot pause) ;; dessine la côte

;défini la longueur de la cotation
(setq LC (rtos (distance pdep pfin_cot)))

;création (si le calque existe pas) et defini le calque A SUPP comme courant
(command "-calque" "e" "_A SUPP" "")

;afficher un message en bas de l'écran 
(grtext -1 "Infos Cotation...")

;gère l'insertion du bloc et du remplissage des attributs
'----------------------------------------------------

 ;; enregistrement des valeurs initiales de la variable système
 (setq attreq (getvar "ATTREQ"))

 ;; modification des valeurs courantes de la variable système
 (setvar "ATTREQ" 0)

 ;; insère le bloc
 (command "_insert" "00_N_PICE" pfin_cot 1 1 0)

 ;; restauration des valeurs initiales de la variable système
 (setvar "ATTREQ" attreq)

 ;; nom d'entité du bloc inséré
 (setq bloc (entlast))

 ;; assignation des valeurs d'attribut
 (setpropertyvalue bloc "NUM_PIECE" numero_piece)
 (setpropertyvalue bloc "NOM_PIECE" nom_piece)
 (setpropertyvalue bloc "NUM_PIECE_INT" (itoa numero_piece))
 (setpropertyvalue bloc "COTE_PIECE" LC)

'----------------------------------------------------

;incrémente le numéro de piece
(setq numero_tube (1+ numero_piece))

)

) ;while

 (princ) 
)

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é