Quelle est la différence entre les macros MicroStation Basic et les VBA ?


 Produit(s):MicroStation
 Version(s):CONNECT
 Environnent:N\A
 Domaine:Programmation
 Sous-Domaine:N\A

Question:

Quelles sont les différences entre les macros MicroStation Basic et les VBA ?

Réponse:

Objet de transformation actuelle :

Le modèle objet VBA de MicroStation ne prend pas en charge une transformation actuelle. Au lieu de cela, il fonctionne avec des unités principales. L'émulateur MicroStation BASIC est également limité au travail avec des unités maître. Par conséquent, il n'émule que les routines qui ont un sens dans ce contexte. Il émule la routine MasterUnits, bien qu'il ne fasse rien. Il émule également les PointToUORs, PointsFromUORs, ScalarToUORs et ScalarFromUORs. Ils effectuent tous des opérations simples de mise à l'échelle pour convertir les UORs en UORs et inversement.
 

Object MbeElement:

L'implémentation de MbeElement par l'émulateur a quelques méthodes qui sont étonnamment compliquées. Cette complexité est due aux différences entre le modèle objet MicroStation BASIC et le modèle objet MicroStationDGN. Cependant, cela ne signifie pas que l'approche appropriée est compliquée dans le modèle objet MicroStationDGN.
Ce qui est substantiellement différent est la technique pour passer à travers tous les éléments d'un modèle et la technique pour passer à travers tous les composants d'un élément complexe.
Cet exemple illustre comment passer en revue tous les éléments d'un modèle :
Dim ee As ElementEnumerator
Dim ele As Element
Set ee = ActiveModelReference.GraphicalElementCache.Scan
Do While ee.MoveNext
Set ele = ee.Current
' Process the element
Loop
Cet exemple illustre comment passer en revue toutes les composantes d'un élément complexe :
Dim ee As ElementEnumerator
Set ee = eleTop.AsComplexElement.GetSubElements
Do While ee.MoveNext
Set ele = ee.Current
' Process the element
Loop
 

Logique d'emplacement de l'élément :

Nous vous suggérons d'utiliser l'interface ILocateCommandEvents pour construire une commande.
Le modèle objet MicroStationDGN ne fournit pas les méthodes MbeStartLocate, MbeRelocate et MbeLocateElement. Au lieu de cela, les programmes MicroStationDGN implémentent un gestionnaire d'événements ILocateCommandEvents pour obtenir des fonctionnalités similaires. Un programme VBA peut également utiliser la méthode LocateElement pour utiliser la logique de localisation sans nécessiter l'intervention de l'utilisateur. Un programme VBA peut également utiliser la méthode GetLocatedElement pour obtenir le dernier élément localisé.
L'émulateur MicroStation BASIC fournit les méthodes MbeStartLocate, MbeRelocate et MbeLocateElement. Ces méthodes invoquent simplement les méthodes correspondantes dans le modèle objet BASIC de MicroStation.
 

MbeFileOpen et MbeFileCreate

L'émulateur implémente MbeFileCreate et MbeFileOpen en utilisant les dialogues communs à Windows. C'est une technique puissante couramment utilisée en VB et VBA. Il existe de nombreuses bonnes sources sur Internet qui décrivent cette technique. Le livre "VBA Developer's Handbook" de Ken Getz et Mike Gilbert propose un excellent tutoriel et des exemples sur ce sujet.
 

MsToolSettings :

Dans MicroStation V8, msToolSettings a été déplacé dans la structure tcb. Pour que vos macros fonctionnent sous MBE V8, vous devez remplacer l'utilisation de msToolSettings par tcb->msToolSettings (un remplacement global dans l'éditeur le fera). L'outil de mise à niveau MicroStation VBA n'effectue aucune conversion sur les références à msToolSettings.
Code qui n'est pas convertible :

·         Les routines qui ne sont pas disponibles dans MVBA, telles que les opérations de manipulation de fichiers (FileNum, ReportName, GenerateReport).

·         Fonctionnalité de base de données. Lors de la conversion de macros qui utilisent des fonctionnalités de base de données, utilisez plutôt des API de base de données Windows standard. Voir le projet DataBaseExamples.mvba pour un exemple qui utilise ODBC. DataBaseExamples.mvba est distribué avec MicroStation.

·         Les routines qui modifient la transformation actuelle.

·         Le code derrière les dialogues est converti (seuls les composants de l'interface graphique sont convertis). Les utilisateurs doivent convertir le code manuellement.

·         DialogueDialogueModalOuvert

Voir aussi

Bentley Communities

Autres sources linguistiques

English