Aller au contenu

Connaitre les coordonnees du curseur par prog


Messages recommandés

Posté(e)

Bonjour,

 

J'aurais besoin pour une macro VBA de recuperer les coordonnées du point pointé par la souris sans pour autant passer par un getpoint necessitant un click gauche ? Ces coordonnées sont récuperées pour afficher en temps réel et en fonction de la position de la souris un arc de polyligne.

 

Peut être y a t'il un moyen de récuperer les infos de positions données dans la barre d'état ???

 

Quelqu'un connait t'il un moyen ou as t'il une solution ?

 

D'avance merci

Posté(e)

Je suis allé dans le tableau de comparaison des fonctions LispActiveX(VBA ou Vlisp)

 

et ca donne :

 

grdraw Non fourni

 

grread Non fourni

 

grtext AutoCAD.Application.ActiveDocument.Utility.Prompt

 

grvecs Non fourni

 

Moralité, mieux vaut le faire en lisp avec les fonctions sus-nommées.

 

Je te conseille une recherche par forum avec grread.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Comme le dit notre cher ami Tramber, j'utiliserais aussi la fonction (grread)

 

Celle ci est une fonction très puissante de lecture de périphérique d'entrée, elle peut même être utilisé dans un script (astuce) pour executer une entrée utilisateur. Preuve que c'est une fonction de 1er niveau qu'autocad interpréte en priorité.

 

Voici un exemple de ce que tu pourrais faire (à adapter à ton besoin bien sur)

(defun c:dyn_pt-cursor ( / sv_shmnu key)
(setq sv_shmnu (getvar "SHORTCUTMENU"))
(setvar "SHORTCUTMENU" 11)
(while (and (setq key (grread T 4 0)) (not (member key '((2 13) (2 32)))) (/= (car key) 25))
	(cond
		((or (eq (car key) 5) (eq (car key) 3))
			(print (cadr key))
		)
	)
)
(setvar "SHORTCUTMENU" sv_shmnu)
(prin1)
)

 

Ceci te retournera en dynamique le point de positionnement du curseur sous la forme d'une liste (X Y Z). Entrée, Espace ou Click-droit sort de la boucle de lecture.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

OK, merci bien pour vos réponses,

 

Hier soir, peu après avoir posté ce message, j'avais découvert la fonction grread en LISP qui me semblait adaptée à mon problème.

 

Je pense donc que je vais en passer par là, même si je ne connais pas la programmation en LISP... Ca me donnera l'occasion d'apprendre ;-)

 

Encore merci

Posté(e)

Encore une petite question :

 

j'ai trouvé comment on passe le contrôle de VBA à LISP via SendCommand, mais comment récupère t'on la liste des coordonnées renvoyé par le bout de programme ci-dessus pour le traiter par VBA sans pour autant mettre fin à son fonctionnement.

 

Peut être faut il que j'explique un peu plus le but de mon programme :

 

J'adapte un programme de dessin de ligne de télésiège, le câble forme entre 2 pylônes un arc de chainette, qui peut dans un premier temps être approximé par un arc de cercle, le rayon de cet arc de cercle dépend entre autre de la dénivelé et de la distance entre les points d'appuis.

 

Le calcul du rayon de l'arc de cercle est fait par un appel à une fonction de calcul codée en VBA et je ne souhaite pas pour plusieurs raisons le transferer dans un autre langage.

 

Le pseudo code de cette partie de programme pourrait donc être :

 

Tant que l'utilisateur ne clique pas avec le bouton gauche faire
|  Récuperer point souris
|  Calculer denivele et distance par rapport au dernier point
|  Calculer rayon
|  Tracer arc entre dernier point et point souris
fin tant que  
Tracer arc définitif entre dernier point et point validé par clique gauche

 

Je ne vois pas trop comment je pourrais faire intervenir le bout de programme en LISP dans ce cadre là. Peut être pourrait on seulement passer par une fonction LISP qui renvoi la position actuelle du pointeur dans une variable systemet et s'arrete, auquel cas, on lancerait cette fonction à chaque passage dans la boucle tant que, reste alors à gerer le controle du clic gauche.

 

Avez vous une idée ?

Posté(e)

Tu aurais du aller dans ce forum pour poster ou dans son voisin, sur le lisp.

 

Le sujet n'a peut-être pas été traité, mais il a déjà été question de transmission lisp vba.

 

Fais une recherche avec le mot "lisp" dans le forum VBA, tu vas trouver plein de choses.

 

En attendant que quelqu'un d'expérimenté te réponde.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é