Aller au contenu

Ralentir Visual Basic.net


Messages recommandés

Posté(e)

Salut à tous

 

Voici un nouveau Casse-tête que Microsoft et Autodesk m'ont offert pour Noël :

 

Je dois, par programme analyser les dimensions d'un dessin. Si celui-ci est plus haut que long => rotation de 90°. Ensuite je choisis une configuration de traceur (fichier PC3) puis je lance l'impression dans un fichier.

Si j'exécute mon programme en "Pas à pas détaillé", tout se passe bien mais si je l'exécute en mode normal, la rotation n'est pas systématique et ne se produit qu'une fois sur 5 ou 6 essais.

 

Est-ce la bûche ou le chapon qui me brouille l'esprit ? Je rame comme un malade et je n'avance pas, je ne trouve pas de solution,

Serge, dans un post précédant disais que c'étais un problème de compatibilité entre Autocad version 2002, et Visual Basic.Net en version 2003, mais dans ce cas pourquoi le prog tourne en pas à pas ?

 

@+

 

Eagle4

 

PS : Goûtez les huîtres de ma petite ville de MEZE, sur la rive de l'étang de THAU, elles sont excellentes.

Bonnes fêtes à tous.

 

Regarde devant, derrière apporte des regrets, les côtés envies et jalousie

Posté(e)

Il semblerait que tu ais un problème de d'appel de procédure ou de fonction....

Il faudrait voir les sources.... VB.net gère tout en interopérabilité. Aussi, la mise a jiour du dessin doit etre faite manuellement (avec la mise à jour des tables)

Tu trouveras des exemples dans le guide du dev.

 

En attendant, tu peux essayer de faire un doevent pour laisser la main à Windows (reste à voir les sources....)

 

Sinon, n'ai-ce pas tout simplement un refresh qui manque ?

 

Tu peux me balancer tes sources sur FGansoinat@cadsolutions.lu.

Je te dirais, une fois réadaptées, si elles tournent sur 2005.

 

Joyeuses fêtes.

 

Posté(e)

eagle4,

 

Tu as un problème vicieux. J'ai déjà eu un tel problème en mélangeant des langages. Un cas classique est l'exécution d'un SendCommand en VBA pour faire du Lisp ou à l'inverse, faire du VBA à partir du Lisp. Il n'y a pas de garantie sur l'état de l'autre environnement.

 

Le DoEvents peut peut-être corriger le problème. Ça ne coûte pas cher d'essayer.

 

Tu peux aussi essayer ceci:

' Au début de ta classe

Private m_AcadState As AcadState

 

' Lorsque tu te lie à AutoCAD

m_AcadApp = GetActiveObject("AutoCAD.Application.15.0") ' 15.0 == 2002 ; 16.0 == 2004 ; 16.1 == 2005

m_AcadState = m_AcadApp.GetAcadState

 

' Lorsque tu veux faire ta sélection

Do

Loop While (m_AcadState.IsQuiescent = False)

 

En espérant que ce ci puisse t'aider. Sinon, tu peux carrément faire ce que tu as à faire dans un fichier AutoCAD.dvb qui sera auto-exécuté par AutoCAD, ou encore lancer une routine dans acaddoc.lsp où tu aura pris soin de définir un s::startup si tu utilise des appel à (command).

 

En terminant, nous avons aussi les huitres de Malpèque. Je suis sur que Pako va nous donner son avis :-))

 

Serge

 

 

 

Posté(e)

oops,

 

Ça irait mieux comme suit:

 

' Lorsque tu veux faire ta sélection

Do

m_AcadState = m_AcadApp.GetAcadState

Loop While (m_AcadState.IsQuiescent = False)

 

Sinon, ça risque de boucler très longtemps :-))

 

Serge

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é