SDK KitchenDraw by P2UI42

VIEWS: 0 PAGES: 53

									SDK KitchenDraw
Le Software Development Kit (SDK) KitchenDraw est un ensemble de fichiers informatiques
(bibliothèque de fonctions, programmes d’exemple) et de documents permettant d’étendre et de
personnaliser KitchenDraw ainsi que de l’interfacer avec d’autres logiciels (logiciels de chiffrage, de
gestion, de production, etc.).

Le SDK KitchenDraw peut être employé pour réaliser les développements suivants :
    Programmes de génération ou de mise à jour de catalogues KitchenDraw
    Programmes de génération de catalogues papier ou de catalogues en ligne à partir de
      catalogues KitchenDraw
    Modules de génération de fichiers de commande fournisseurs
    Assistants permettant de configurer des objets hautement paramétriques (escaliers, vérandas,
      …)
    Interface dynamique de KitchenDraw avec un logiciel de gestion
    Fonctions exécutées automatiquement sur évènement (ouverture d’une scène, fermeture de
      KitchenDraw, …)
    Extensions de KitchenDraw (commandes spécifiques ajoutées dans les menus de KitchenDraw)
    Modification ou remplacement de boîtes de dialogue standard de KitchenDraw.

Ce document va aborder les différentes facettes de ce kit de développement.

Composant ActiveX « ASPInSitu »
Le composant ActiveX « ASPInSitu » permet d’accéder par programme aux catalogues et aux scènes
de KitchenDraw.

Il comprend 4 objets (classes) :
      Appli
      Catalog
      Scene
      Dico


La classe « Appli »

Les deux fonctions de base de la classe Appli permettent d’allouer et de libérer un espace de travail
(session) afin d’attribuer un contexte propre à chaque utilisateur. Ceci est particulièrement intéressant
lors d’une utilisation simultanée de l’application par plusieurs utilisateurs (application Web par exemple).
L’espace de travail conservera entre autres, la langue courante, le catalogue courant et la scène
courante accessibles par l’utilisateur grâce aux fonctions des classes Catalog et Scene.

Le principe est d’appeler la fonction StartSession en début de traitement. La valeur SessionId retournée
par la fonction sera alors passé systématiquement en paramètre aux fonctions des classes Catalog,
Scene ou Dico appelées par la suite. En fin de traitement, la fonction EndSession doit être appelée afin
de libérer la ressource mémoire occupée par l’espace de travail.
Parmi les fonctions de la classe Appli, on trouve également les fonctions d’ordre général qui ne se
rattachent ni à la classe Catalog, ni à la classe Scene comme la fonction qui permet de définir la langue
courante ou la fonction qui permet d’obtenir la traduction d’une chaîne de caractères dans la langue
courante (pourvu qu’elle soit présente dans le catalogue courant).

On trouve enfin des fonctions d’accès à des informations contenues dans des catalogues autres que le
catalogue courant (catalogues non chargés en mémoire). Ces fonctions requièrent que le nom du fichier
catalogue soit passé en paramètre.

La liste des fonctions de la classe Appli est la suivante :

StartSession( IniFileNameWithoutpath As String ) As Long

   Cette fonction alloue un espace de travail en mémoire qui servira à conserver le catalogue courant, la scène
   courante ou encore la langue courante.
   Le paramètre IniFileNameWithoutpath indique le nom du fichier de configuration de l’application (avec
   l’extension .INI mais sans le chemin car il doit se trouver dans le même répertoire que AspInSitu).
   Le fichier de configuration défini par exemple les répertoires de travail (catalogues, textures, …), le nom du
   fichier dictionnaire, ainsi que d’autres paramètres de fonctionnement comme les règles de pose des linéaires
   automatiques, etc.
   Si ce paramètre est une chaîne vide, c’est le fichier SPACE.INI qui sera pris.

   Retour : la fonction retourne une valeur numérique qui sert à identifier l’espace de travail (session) affecté à
   chaque utilisateur. Cette valeur devra être passée en paramètres à la plupart des fonctions appelées
   ultérieurement.

StartSessionFromCallParams( CallParamsBlock As Long ) As Long

   Cette fonction alloue un espace de travail en mémoire comme le fait la fonction StartSession mais à la
   différence de cette dernière elle référence la scène passée en paramètre dans CallParamsBlock comme scène
   courante.

   En outre, le paramètre CallParamsBlock contient des informations concernant une éventuelle commande
   fournisseur comme par exemple l’identifiant du fournisseur.

   Lorsque le paramètre CallParamsBlock est passé à une fonction d’extension de MobiScript (fonction ajoutée à
   l’un des menus de MobiScript), il fait référence au catalogue ouvert dans MobiScript. Ainsi, sans création ou
   ouverture préalable de catalogue par programme, les fonctions de la classe Catalog s’appliquent au catalogue
   ouvert dans MobiScript. Cependant, avant d’appeler des fonctions de la classe Catalog, il peut s’avérer
   prudent d’appeler la fonction IsLoaded de la classe Catalog pour s’assurer qu’un catalogue est bien ouvert
   dans MobiScript.

   La fonction StartSessionFromCallParams doit être appelée dans l’implémentation des fonctions standard
   appelées par KitchenDraw lors d’une passation de commande (GenerateOrder, ProcessOrder), d’un contrôle
   de validité d’une commande (TestOrder), ou lors de la réalisation d’une fonction « plug-in ».

   Retour : la fonction retourne une valeur numérique qui sert à identifier l’espace de travail (session) affecté à
   chaque utilisateur. Cette valeur devra être passée en paramètre à la plupart des fonctions appelées
   ultérieurement.
   ATTENTION : la fonction retourne 0 s’il n’y a plus d’heure d’utilisation sur le compte ET si aucune clé de
   protection n’est branchée. Il faut donc tester le retour de la fonction avant de le passer en paramètre.

EndSession( SessionId As Long ) As Boolean

   Cette fonction libère l’espace mémoire alloué en début de traitement par la fonction StartSession ou la
   fonction StartSessionFromCallParams.
   Le paramètre SessionId représente la valeur retournée par la fonction StartSession ou la fonction
   StartSessionFromCallParams.
   Retour : la fonction retourne 1 si elle s’est exécutée sans problème, 0 sinon.

SetLanguage( SessionId As Long, LanguageCode As String ) As Boolean

   Cette fonction établit la langue courante parmi les langues disponibles de KitchenDraw.
   Le paramètre LanguageCode représente le code de la langue tel qu’il est affiché dans la boîte à options
   « Langue » de la boîte de dialogue « Configuration | Système » de KitchenDraw.
   Par exemple, il faut choisir « FRA » pour le français, « ENG » pour l’anglais, « DEU » pour l’allemand, etc.
   La langue courante par défaut est l’anglais.

   Retour : la fonction retourne 1 si elle s’est exécutée sans problème, 0 sinon.

GetLanguage( SessionId As Long ) As String

   Retour : la fonction retourne le code de la langue courante tel qu’il est affiché dans la boîte de dialogue
   « Configuration | Système » de KitchenDraw.

GetTranslatedText ( SessionId As Long, Text As String ) As String

   Cette fonction recherche la traduction dans la langue courante de la chaîne de caractères passée dans le
   paramètre Text.
   La chaîne de caractères à traduire doit être dans la langue de travail du catalogue courant et sa traduction est
   recherchée dans le dictionnaire de traduction du catalogue courant.

   Retour : la fonction retourne la chaîne de caractères traduite et une chaîne vide si la traduction n’a pas été
   trouvée.


GetCallParamsWindow ( SessionId As Long ) As Long

   Cette fonction ne doit pas être appelée sans que la fonction StartSessionFromCallParams ait été appelée
   auparavant.

   Retour : la fonction retourne le « handle » de fenêtre de l’application KitchenDraw ayant fourni le
   CallParamsBlock.

SetCallParamsInfo ( SessionId As Long, Value As String, InfoType As Long ) As String

   Cette fonction permet d’écrire dans le bloc de paramètres passé par l’application KitchenDraw lors de l’appel
   des fonctions standard.
   Seule la valeur de InfoType valant 7 (APPCALLPARAM_BUFFER) peut être écrite (les autres sont en lecture
   seule).
   Cette fonction est utile lors de l’écriture d’une fonction Plug-In qui doit retourner une valeur ou modifier une
   valeur passée en paramètre par KitchenDraw dans le champ APPCALLPARAM_BUFFER (par exemple, une
   fonction Plug-In qui aurait pour objet de modifier le sujet de l’email d’une commande).

   Retour : la fonction retourne 1 si elle s’est exécutée sans problème, 0 sinon.

GetCallParamsInfo ( SessionId As Long, InfoType As Long ) As String

   Cette fonction permet de lire les informations contenues dans le bloc de paramètres CallParamsBlock passé
   par l’application KitchenDraw lors de l’appel des fonctions standard ou des fonctions « plug-in ».

   L’information demandée est spécifiée par le paramètre InfoType dont voici la liste des valeurs :

     Valeur de InfoType                               Description
     APPCALLPARAM_ORDERDIRECTORY = 1                  Répertoire dans lequel générer le fichier de commande
                                                      fournisseur
    APPCALLPARAM_ORDERFILENAME = 2                   Nom du fichier de commande fournisseur (y compris
                                                     le chemin d’accès au répertoire)
    APPCALLPARAM_ORDERWEEK = 3                       Numéro de semaine de livraison de la commande
                                                     fournisseur
    APPCALLPARAM_ORDERYEAR = 4                       Année de livraison de la commande fournisseur
    APPCALLPARAM_ACTIVEOBJECT = 5                    Rang de l’objet actif dans la scène
    APPCALLPARAM_SUPPLIERID = 6                      Identifiant du fournisseur de la commande fournisseur
    APPCALLPARAM_BUFFER = 7                          Buffer de paramètre permettant le passage
                                                     bidirectionnel d’une chaîne de caractères entre
                                                     KitchenDraw et une fonction plug-in
    APPCALLPARAM_BUFFERSIZE = 8                      Taille du buffer de paramètre (en octets) alloué par
                                                     KitchenDraw

   Retour : la fonction retourne la chaîne de caractères représentant l’information demandée.

InsertMenuItem( SessionId As Long, MenuItemText As String, AccelControlKey As Long, AccelKeyCode As Long,
IconFileName As String, MenuRank As Long, ItemRank As Long, DLLFileName As String, ClassName As String,
FunctionName As String ) As Boolean

   Cette fonction insère une ligne de menu (une commande) dans KitchenDraw.
   Généralement, cette fonction est appelée (une ou plusieurs fois) dans une fonction « plug-in » branchée sur
   l’évènement d’ouverture OnAppStartAfter de KitchenDraw afin d’ajouter des commandes personnelles. Voir le
   projet VB « sdk_plugin » pour plus d’informations.
   Le paramètre MenuItemText représente le nom de la commande, AccelControlKey et AccelKeyCode la
   combinaison de touches à enfoncer pour lancer la commande (voir tableau des valeurs plus loin),
   IconFileName le nom de fichier de l’image représentant l’icône (non gérée dans cette version), MenuRank le
   rang du menu dans lequel la commande sera insérée (à partir de 1) et ItemRank le rang de la commande dans
   le menu (à partir de 1).
   Les paramètres suivants spécifient la fonction qui sera appelée lorsque la commande ajoutée sera lancée par
   l’utilisateur.
   Le paramètre DLLFileName représente le nom de fichier (avec l’extension .DLL) de la DLL qui contient la
   fonction à appeler. Si la DLL n’est pas placée dans le répertoire de KitchenDraw, il est possible de faire
   précéder ce nom par un chemin d’accès afin de préciser le répertoire où se trouve la DLL. Sinon, c’est
   Si la fonction appartient à une DLL ordinaire, le paramètre ClassName doit être vide.
   Si la fonction appartient à une DLL ActiveX, le paramètre ClassName doit être indiqué.
   Le paramètre FunctionName représente le nom de la fonction à appeler.
   Cette fonction doit gérer un seul paramètre de type Long (CallParamsBlock) qui contient l’adresse d’une
   structure CALLPARAMSBLOCK et qui est passé par KitchenDraw au moment de l’appel de la fonction.
   Cette fonction retourne un Boolean (Vrai si la scène a été modifiée dans la fonction et Faux autrement).

   Cette fonction ne doit pas être appelée sans que la fonction StartSessionFromCallParams ait été appelée
   auparavant.

   La liste des codes de touches de contrôle est la suivante :

    Valeur du code                 Description de la touche de contrôle
    CK_SHIFT = 1                   Touche Majuscule (Shift)
    CK_CONTROL = 2                 Touche Control
    CK_MENU = 4                    Touche Alt

   Il est possible de combiner les touches de contrôle par des opérateurs OU pour indiquer un appui simultané
   sur plusieurs touches. Par exemple, en VB, « CK_SHIFT Or CK_CONTROL »

   La liste des codes de touches est la suivante :

    Valeur du code de touche                 Description de la touche
    VK_0 = 0x30 (&H30)                       Touche « 0 »
    VK_1 = 0x31 (&H31)                       Touche « 1 »
    VK_2 = 0x32 (&H32)                       Touche « 2 »
VK_3 = 0x33 (&H33)            Touche « 3 »
VK_4 = 0x34 (&H34)            Touche « 4 »
VK_5 = 0x35 (&H35)            Touche « 5 »
VK_6 = 0x36 (&H36)            Touche « 6 »
VK_7 = 0x37 (&H37)            Touche « 7 »
VK_8 = 0x38 (&H38)            Touche « 8 »
VK_9 = 0x39 (&H39)            Touche « 9 »
VK_A = 0x41 (&H41)            Touche « A »
VK_B = 0x42 (&H42)            Touche « B »
VK_C = 0x43 (&H43)            Touche « C »
VK_D = 0x44 (&H44)            Touche « D »
VK_E = 0x45 (&H45)            Touche « E »
VK_F = 0x46 (&H46)            Touche « F »
VK_G = 0x47 (&H47)            Touche « G »
VK_H = 0x48 (&H48)            Touche « H »
VK_I = 0x49 (&H49)            Touche « I »
VK_J = 0x4A (&H4A)            Touche « J »
VK_K = 0x4B (&H4B)            Touche « K »
VK_L = 0x4C (&H4C)            Touche « L »
VK_M = 0x4D (&H4D)            Touche « M »
VK_N = 0x4E (&H4E)            Touche « N »
VK_O = 0x4F (&H4F)            Touche « O »
VK_P = 0x50 (&H50)            Touche « P »
VK_Q = 0x51 (&H51)            Touche « Q »
VK_R = 0x52 (&H52)            Touche « R »
VK_S = 0x53 (&H53)            Touche « S »
VK_T = 0x54 (&H54)            Touche « T »
VK_U = 0x55 (&H55)            Touche « U »
VK_V = 0x56 (&H56)            Touche « V »
VK_W = 0x57 (&H57)            Touche « W »
VK_X = 0x58 (&H58)            Touche « X »
VK_Y = 0x59 (&H59)            Touche « Y »
VK_Z = 0x5A (&H5A)            Touche « Z »
VK_NUMPAD0 = 0x60 (&H60)      Touche « 0 » sur le pavé numérique
VK_NUMPAD1 = 0x61 (&H61)      Touche « 1 » sur le pavé numérique
VK_NUMPAD2 = 0x62 (&H62)      Touche « 2 » sur le pavé numérique
VK_NUMPAD3 = 0x63 (&H63)      Touche « 3 » sur le pavé numérique
VK_NUMPAD4 = 0x64 (&H64)      Touche « 4 » sur le pavé numérique
VK_NUMPAD5 = 0x65 (&H65)      Touche « 5 » sur le pavé numérique
VK_NUMPAD6 = 0x66 (&H66)      Touche « 6 » sur le pavé numérique
VK_NUMPAD7 = 0x67 (&H67)      Touche « 7 » sur le pavé numérique
VK_NUMPAD8 = 0x68 (&H68)      Touche « 8 » sur le pavé numérique
VK_NUMPAD9 = 0x69 (&H69)      Touche « 9 » sur le pavé numérique
VK_ MULTIPLY = 0x6A (&H6A)    Touche « * » sur le pavé numérique
VK_ ADD = 0x6B (&H6B)         Touche « + » sur le pavé numérique
VK_ SEPARATOR = 0x6C (&H6C)   Touche « / » sur le pavé numérique
VK_ SUBSTRACT = 0x6D (&H6D)   Touche « - » sur le pavé numérique
VK_ DECIMAL = 0x6E (&H6E)     Touche « . » sur le pavé numérique
VK_ DIVIDE = 0x6F (&H6F)
VK_ F1 = 0x70 (&H70)          Touche « F1 »
VK_ F2 = 0x72 (&H72)          Touche « F2 »
VK_ F3 = 0x73 (&H73)          Touche « F3 »
VK_ F4 = 0x74 (&H74)          Touche « F4 »
VK_ F5 = 0x75 (&H75)          Touche « F5 »
VK_ F6 = 0x76 (&H76)          Touche « F6 »
VK_ F7 = 0x77 (&H77)          Touche « F7 »
VK_ F8 = 0x78 (&H78)          Touche « F8 »
VK_ F9 = 0x79 (&H79)          Touche « F9 »
     VK_ F10 = 0x7A (&H7A)                     Touche « F10 »
     VK_ F11 = 0x7B (&H7B)                     Touche « F11 »
     VK_ F12 = 0x7C (&H7C)                     Touche « F12 »
     VK_ F13 = 0x7D (&H7D)                     Touche « F13 »
     VK_ F14 = 0x7E (&H7E)                     Touche « F14 »
     VK_ F15 = 0x7F (&H7F)                     Touche « F15 »
     VK_ F16 = 0x80 (&H80)                     Touche « F16 »
     VK_ F17 = 0x81 (&H81)                     Touche « F17 »
     VK_ F18 = 0x82 (&H82)                     Touche « F18 »
     VK_ F19 = 0x83 (&H83)                     Touche « F19 »
     VK_ F20 = 0x84 (&H84)                     Touche « F20 »
     VK_ F21 = 0x85 (&H85)                     Touche « F21 »
     VK_ F22 = 0x86 (&H86)                     Touche « F22 »
     VK_ F23 = 0x87 (&H87)                     Touche « F23 »
     VK_ F24 = 0x88 (&H88)                     Touche « F24 »

   Retour : la fonction retourne 1 si elle s’est exécutée sans problème, 0 sinon.

InsertMobiScriptMenuItem( SessionId As Long, MenuItemText As String, AccelControlKey As String,
AccelKeyCode As String, IconFileName As String, MenuRank As Long, ItemRank As Long, DLLFileName As
String, ClassName As String, FunctionName As String ) As Boolean

   Cette fonction insère une ligne de menu (une commande) dans MobiScript.
   Pour la signification des paramètres, veuillez vous reporter à la fonction InsertMenuItem décrite ci-dessus.

   Retour : la fonction retourne 1 si elle s’est exécutée sans problème, 0 sinon.

CenterWindow( WindowHandle As Long ) As Boolean

   Cette fonction positionne au centre de l’écran la fenêtre dont le « handle » est passé dans le paramètre
   WindowHandle.
   Cette fonction est utile lors du développement d’assistants afin de contrôler la position de sa fenêtre à l’écran.

   Retour : la fonction retourne toujours 1.

GetCatalogsList( SessionId As Long, AllItems As Boolean, Format As String ) As String

   Retour : la fonction retourne la liste des catalogues installés sur le système (fichiers .CAT contenus dans le
   répertoire défini dans l’entrée CatalogsDir de la section [Local] ou [Remote] du fichier SPACE.INI actif).
   Si le paramètre AllItems vaut Vrai, tous les catalogues sont retournés ; sinon, seuls les catalogues valides
   apparaissent (catalogues qui apparaîtraient dans la boîte à options des catalogue de KitchenDraw).
   La liste se présente sous la forme d’une suite de chaîne de caractères, chaque chaîne de caractère
   correspondant à un catalogue. Le contenu de chacune des chaînes est spécifié par le paramètre Format qui
   est une chaîne de caractères mélangeant caractères et paramètres. Si vous souhaitez qu’un caractère
   particulier sépare les chaînes de caractères les unes des autres il faut le prévoir dans le paramètre Format.


CatalogGetName( CatalogFileName As String ) As String

   Retour : cette fonction retourne le nom du catalogue (sur 30 caractères maximum) dont le nom de fichier (y
   compris le chemin d’accès complet) est passé en paramètre.

CatalogGetCode( CatalogFileName As String ) As String

   Retour : cette fonction retourne le code du catalogue dont le nom de fichier (y compris le chemin d’accès
   complet) est passé en paramètre.

CatalogGetPackCode( CatalogFileName As String ) As String
   Retour : cette fonction retourne le code du pack (2 caractères) auquel appartient le catalogue dont le nom de
   fichier (y compris le chemin d’accès complet) est passé en paramètre.

CatalogConvertToCCA( CatalogFileName As String ) As String

   Cette fonction convertit un catalogue KitchenDraw normal (.CAT) dont le nom de fichier (y compris le chemin
   d’accès complet) est passé en paramètre en un catalogue compressé au format .CCA.
   Les catalogues compressés au format .CCA peuvent être produits par MobiScript par la commande « Fichier
   | Compresser pour Upload» et sont destinés à être placés (« uploadés ») sur le site de mise à jour des
   catalogues.

   Retour : la fonction retourne 1 si elle s’est exécutée sans problème, 0 sinon.

CatalogGetSectionsList( SessionId As Long, CatalogFileName As String, AllItems As Boolean, Format As String )
As String

   Retour : la fonction retourne la liste des chapitres du catalogue dont le nom de fichier (avec ou sans le chemin
   d’accès complet et avec ou sans l’extension .CAT) est passé dans le paramètre CatalogFileName.
   Si le paramètre AllItems vaut Vrai, tous les chapitres sont retournés ; sinon, seuls le sont les chapitres qui
   seraient visibles dans la fenêtre de pose de KitchenDraw (chapitres n’ayant pas @ comme premier caractère
   du nom). D’autre part, les noms de chapitre ne sont ni traduit dans la langue courante ni filtrés (les
   compléments figurant dans le nom après le caractère « @ » ne sont pas éliminés).
   La liste se présente sous la forme d’une suite de chaîne de caractères, chaque chaîne de caractère
   correspondant à un chapitre. Le contenu de chacune des chaînes est spécifié par le paramètre Format qui est
   une chaîne de caractères mélangeant caractères et paramètres. Si vous souhaitez qu’un caractère particulier
   sépare les chaînes de caractères les unes des autres il faut le prévoir dans le paramètre Format.

CatalogGetBlocksList( SessionId As Long, CatalogFileName As String, SectionRank As Long, AllItems As
Boolean, Format As String ) As String

   Retour : la fonction retourne la liste des blocs appartenant au chapitre de rang SectionRank dans le catalogue
   dont le nom de fichier (avec ou sans le chemin d’accès complet et avec ou sans l’extension .CAT) est passé
   dans le paramètre CatalogFileName.
   Si le paramètre AllItems vaut Vrai, tous les blocs sont retournés ; sinon, seuls le sont les blocs qui seraient
   visibles dans la fenêtre de pose de KitchenDraw (blocs n’ayant pas @ comme premier caractère du nom).
   D’autre part, les noms de bloc ne sont ni traduit dans la langue courante ni filtrés (les compléments figurant
   dans le nom après le caractère « @ » ne sont pas éliminés).
   La liste se présente sous la forme d’une suite de chaîne de caractères, chaque chaîne de caractère
   correspondant à un bloc. Le contenu de chacune des chaînes est spécifié par le paramètre Format qui est une
   chaîne de caractères mélangeant caractères et paramètres. Si vous souhaitez qu’un caractère particulier
   sépare les chaînes de caractères les unes des autres il faut le prévoir dans le paramètre Format.

CatalogGetArticlesList( SessionId As Long, CatalogFileName As String, BlockRank As Long, AllItems As
Boolean, Format As String ) As String

   Retour : la fonction retourne la liste des articles appartenant au bloc de rang BlockRank dans le catalogue
   dont le nom de fichier (avec ou sans le chemin d’accès complet et avec ou sans l’extension .CAT) est passé
   dans le paramètre CatalogFileName.
   Pour l’instant le paramètre AllItems na pas d’influence sur le résultat. Cependant, il pourra être utilisé dans une
   version ultérieure.
   La liste se présente sous la forme d’une suite de chaîne de caractères, chaque chaîne de caractère
   correspondant à un article. Le contenu de chacune des chaînes est spécifié par le paramètre Format qui est
   une chaîne de caractères mélangeant caractères et paramètres. Si vous souhaitez qu’un caractère particulier
   sépare les chaînes de caractères les unes des autres il faut le prévoir dans le paramètre Format.

CatalogGetModelsList( SessionId As Long, CatalogFileName As String, AllItems As Boolean, Format As String )
As String

   Retour : la fonction retourne la liste des modèles du catalogue dont le nom de fichier (avec ou sans le chemin
   d’accès complet et avec ou sans l’extension .CAT) est passé dans le paramètre CatalogFileName.
   Si le paramètre AllItems vaut Vrai, tous les modèles sont retournés ; sinon, seuls les modèles visibles dans
   KitchenDraw (modèles n’ayant pas @ comme premier caractère du nom). D’autre part, les noms de modèle ne
   sont ni traduit dans la langue courante ni filtrés (les compléments figurant dans le nom après le caractère
   « @ » ne sont pas éliminés).
   La liste se présente sous la forme d’une suite de chaîne de caractères, chaque chaîne de caractère
   correspondant à un modèle. Le contenu de chacune des chaînes est spécifié par le paramètre Format qui est
   une chaîne de caractères mélangeant caractères et paramètres. Si vous souhaitez qu’un caractère particulier
   sépare les chaînes de caractères les unes des autres il faut le prévoir dans le paramètre Format.

CatalogGetFinishTypeName( SessionId As Long, CatalogFileName As String, FinishTypeRank As Long ) As
String

   Retour : cette fonction retourne le nom du type de finition de rang FinishTypeRank dans le catalogue dont le
   nom de fichier (sans le chemin d’accès complet) est passé en paramètre.

CatalogGetFinishTypeNumber( SessionId As Long, CatalogFileName As String, FinishTypeRank As Long ) As
Long

   Retour : cette fonction retourne le numéro du type de finition de rang FinishTypeRank dans le catalogue dont
   le nom de fichier (sans le chemin d’accès complet) est passé en paramètre.

   A titre d’information, voici les numéros des types de finition du catalogue de base « BASE CUISINE » (fichier
   #BASE.CAT) :

    Valeur      Types de finition de modèle
    26          Coloris façade
    1           Coloris centre
    27          Coloris centre principal
    28          Coloris centre secondaire
    35          Coloris tiroir
    29          Coloris profil (coloris de la poignée profil intégrée)
    2           Coloris tour (coloris des chants de façade)
    3           Coloris caisson
    22          Coloris chants caisson
    6           Tiroir (type de tiroir)
    4           Coloris côtés plaqués
    5           Poignées
    24          Poignées portes
    25          Poignées tiroirs
    30          Type de verre

    Valeur      Types de finition de famille
    15          Coloris façades
    16          Coloris caissons
    18          Coloris caissons (chant)
    7           Hauteur de PT
    8           Coloris PT
    9           Coloris PT (chants)
    17          Coloris chants de PT
    56          Coloris étagères déco
    57          Coloris chant étagères déco
    10          Coloris socles
    12          Coloris cache-lumières
    11          Coloris corniches
    13          Coloris hottes principal
    14          Coloris hottes secondaire
    58          Type de verre
    50          Coloris
    19          Assemblage PT à G
    20          Assemblage PT à D
    51          Coloris principal
    52          Coloris secondaire
    53          Coloris panneaux
    54          Coloris profils
    55          Coloris rails


CatalogGetFinishCodeAndName( SessionId As Long, CatalogFileName As String, FinishTypeRank As Long,
FinishRank As Long ) As String

   Retour : cette fonction retourne, séparés par « ;; », le code et le nom de la finition de rang FinishRank
   correspondant au type de finition de rang FinishTypeRank dans le catalogue dont le nom de fichier (sans le
   chemin d’accès complet) est passé en paramètre.

CatalogModifyFinishesConfig( SessionId As Long, CatalogFileName As String, FinishTypesList As String,
FinishesList As String, ModifiedLine As Long, NewFinish As Long ) As String

   Retour : cette fonction retourne une chaîne de caractères représentant la configuration de finitions à présenter
   suite à la modification de la configuration passée en paramètres (FinishTypesList et FinishesList) par un
   changement de finition numéroté à partir de 0 (NewFinish) effectué au niveau du type de finition de rang
   ModifiedLine numéroté à partir de 1.
   La chaîne de caractères se présente sous la forme suivante :
   «-1,10005,10006,10007,20022,20023;;1,2,1,4,9,7».

   A gauche des « ;; », se trouvent, séparés par des virgules, les types de finition. Il est possible d’obtenir les
   noms des types de finition correspondant à ces valeurs grâce à la fonction de la classe Appli,
   CatalogGetFinishTypeName.
   Le code -1 représente le modèle, les codes en 1XXXX représentent les types de finitions de modèle et les
   codes en 2XXXX les types de finitions de famille.
   A droite des « ;; », se trouvent les rangs (numérotés à partir de 0 et séparés par des virgules) des finitions
   correspondant respectivement au types de finition listés précédemment. Chacun de ces rangs représente la
   position de la finition en vigueur dans la liste des finitions possibles pour le type de finition correspondant.



La classe « Catalog »
Les fonctions de la classe Catalog permettent d’accéder par programme en lecture et en écriture aux
catalogues de KitchenDraw.
Grâce à elles, il sera possible de générer ou de mettre à jour en automatique tout ou partie d’un
catalogue à partir des données présentes dans une base de données de l’entreprise.
Dans l’autre sens, elles permettront d’aller lire les informations dans les catalogues pour les présenter
d’une autre façon (génération de catalogues papier ou de catalogue en ligne) ou bien les utiliser dans
d’autres applications en particulier des assistants.

Le principe d’utilisation de ces fonctions est simple :
On commence par créer un nouveau catalogue (FileNew) ou charger un catalogue existant (FileLoad)
en mémoire (en spécifiant éventuellement un mot de passe si celui-ci est protégé), puis on vient lire ou
écrire dans les tables comme on le ferait manuellement dans Mobiscript.
Si l’on souhaite conserver les modifications effectuées, on enregistre le catalogue à la fin avec FileSave.

Les fonctions de cette classe font parfois référence à la notion de grappe (cluster en anglais).
Une grappe dans une table de Mobiscript représente un ensemble de lignes appartenant à la même
entité de niveau supérieure.
Par exemple, dans la table « Blocs », les lignes correspondant à des blocs appartenant à un même
chapitre constituent une grappe. Elles sont dessinées sur fond jaune pour mieux les repérer. La grappe
des blocs relatifs au premier chapitre du catalogue sera la grappe de rang un et ainsi de suite.
Les fonctions qui acceptent en paramètre un rang de grappe considèreront le rang de ligne défini dans
le paramètre LineRank comme étant relatif à la grappe spécifiée.
Si le rang de grappe spécifié en paramètre est égal à 0, les fonctions considèreront le rang de ligne
comme étant absolu (c’est-à-dire relatif au début de la table).

Les rangs de grappe ou de ligne sont toujours numérotés à partir de 1.

La liste des tables avec la valeur qui sert de paramètre aux fonctions est la suivante :

    Valeur de Table                               Description de la table
    CATTABLE_CONSTANTS = 0                        Constantes
    CATTABLE_SECTIONS = 1                         Chapitres
    CATTABLE_BLOCKS = 2                           Blocs
    CATTABLE_ARTICLES = 3                         Articles
    CATTABLE_PRICES = 4                           Prix (contient des prix d’achat quand le catalogue est en prix
                                                  « Achat » ou bien des prix de vente quand le catalogue est en
                                                  prix « Vente » ou « Achat et vente »)
    CATTABLE_PURCHASEPRICES = 5                   Prix d’achat (utilisée uniquement quand le catalogue est en
                                                  prix « Achat et vente »)
    CATTABLE_REFERENCES = 6                       Références
    CATTABLE_TEXTURES = 7                         Textures
    CATTABLE_MODELS = 8                           Modèles
    CATTABLE_MODELFINISHTYPES = 17                Types de finition de modèle
    CATTABLE_MODELFINISHES = 9                    Finitions de modèles
    CATTABLE_MODELHANDLES = 10                    Poignées de modèles
    CATTABLE_FAMILIES = 11                        Familles
    CATTABLE_FAMILYFINISHTYPES = 18               Types de finition de famille
    CATTABLE_FAMILYFINISHES = 12                  Finitions de familles
    CATTABLE_2DENTITIES = 13                      Entités 2D
    CATTABLE_2DPRIMITIVES = 14                    Primitives 2D
    CATTABLE_3DENTITIES = 15                      Entités 3D
    CATTABLE_3DPRIMITIVES = 16                    Primitives 3D
    CATTABLE_RESOURCES = 19                       Fichiers incorporés (textures, …)


La liste des fonctions de la classe Catalog est la suivante :

FileNew( SessionId As Long, BaseCatalogFileName As String, Measurement As Long, CatalogType As Long ) As
Boolean

   Cette fonction crée un catalogue en mémoire. Le catalogue incorpore les informations du catalogue de base
   dont le nom (sans chemin ni extension) est spécifié dans le paramètre BaseCatalogFileName.
   Le paramètre Measurement permet de spécifier l’unité de mesure employée dans le catalogue.
   Le paramètre CatalogType indique s’il s’agit d’un catalogue standard (CatalogType=0) ou un catalogue de
   base ou intermédiaire (CatalogType=1).

   La liste des unités de mesure disponibles est la suivante :

    Valeur de l’Unité de mesure                   Description de l’unité de mesure
    CATUNIT_MILLIMETRE = 0                        Millimètre
    CATUNIT_MILLIMETRE_ONEDEC = 8                 Millimètre avec une décimale
    CATUNIT_MILLIMETRE_TWODEC = 9                 Millimètre avec deux décimale
    CATUNIT_CENTIMETRE_ONEDEC = 1                 Centimètre avec une décimale
    CATUNIT_INCHDECIMAL = 2                       Pouce (décimale)
    CATUNIT_INCHFRACT32 = 3                       Pouce (en trente-deuxièmes)
    CATUNIT_INCHFRACT16 = 4                       Pouce (en seizièmes)
    CATUNIT_INCHFRACT8 = 5                        Pouce (en huitièmes)

   Pour une application donnée, seul un catalogue peut être créé en mémoire à la fois. Le catalogue créé est
   alors appelé le catalogue courant.

   Retour : s’il y a suffisamment de mémoire pour créer le catalogue, la fonction retourne 1, sinon, elle retourne
   0.

FileLoad( SessionId As Long, CatalogFileName As String, Password As String ) As Boolean

   Cette fonction charge en mémoire le catalogue dont le nom de fichier (avec le chemin complet et l’extension)
   est spécifié dans le paramètre CatalogFileName.
   Pour une application donnée, seul un catalogue peut être chargé en mémoire à la fois. Le catalogue chargé est
   alors appelé le catalogue courant.

   Retour : si le fichier catalogue est trouvé et qu’il y a suffisamment de mémoire pour le charger, la fonction
   retourne 1, sinon, elle retourne 0.

FileSave( SessionId As Long, CatalogFileName As String ) As Boolean

   Cette fonction enregistre le catalogue courant sur disque.
   La variable CatalogFileName contient le nom du fichier (avec le chemin complet et l’extension) dans lequel le
   catalogue courant sera enregistré.
   Attention : si le catalogue est un catalogue de base ou un catalogue intermédiaire (CatalogType=1 lors de la
   création du catalogue avec la fonction FileNew) alors le nom de fichier doit commencer par un caractère « # ».

   Retour : si l’enregistrement a été effectué sans problème, la fonction retourne 1, sinon, elle retourne 0.

FileExportImage( SessionId As Long, ArticleRank As Long, Opened As Long, ViewMode As Long,
ImageFileName As String, XRes As Long, YRes As Long, BackGroungColor As String, Transparent As Boolean,
JPEGQuality As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vignette correspondant à l’article de rang ArticleRank dans la table des
   articles sous la forme d’un fichier .JPG, .BMP, .GIF, .PNG ou .TIF dont le nom (avec le chemin complet et
   l’extension) est spécifié dans le paramètre ImageFileName.
   Si Opened vaut 0, l’article est représenté dans l’état fermé ; sinon, il est représenté dans l’état ouvert.
   Le paramètre ViewMode indique quel type de representation de l’article on souhaite obtenir.

    Valeur de ViewMode                          Description
    VIEWMODE_2D = 0                             Vue de dessus
    VIEWMODE_ELEVATION = 1                      Vue de face (élévation) filaire
    VIEWMODE_REALELEVATION = 2                  Vue de face (élévation) réaliste
    VIEWMODE_3D = 3                             Perspective filaire
    VIEWMODE_REAL3D = 4                         Perspective réaliste
    VIEWMODE_PHOTO3D = 5                        Perspective photoréaliste

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.

   Le paramètre BackGroungColor permet de définir la couleur de fond de l’image. Il s’exprime sous la forme
   d’une chaîne de caractères représentant les valeurs décimales (de 0 à 255) de la composante rouge, puis
   verte puis bleu de la couleur de fond, séparées par une virgule comme dans l’exemple suivant : « 255,128,0 ».
   Si le paramètre BackGroungColor est une chaîne vide, la couleur de fond sera blanche.
   Si le paramètre Transparent est positionné à vrai, la couleur de fond sera définie comme transparente
   (uniquement pour les formats .GIF, .PNG et .TIF).
   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100 avec une valeur préconisée de 75).
   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Pour des raisons de performance, il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à
   3.

    Valeur de AntiAliasing         Description
    1                              Pas d’anti-crénelage
    2                              L’image est générée avec une résolution de 2 x XRes sur 2 x
                                   YRes puis une moyenne sur 4 pixels est effectuée
    3                              L’image est générée avec une résolution de 3 x XRes sur 3 x
                                   YRes puis une moyenne sur 9 pixels est effectuée

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportModelImage( SessionId As Long, FinishTypesList As String, FinishesList As String, ImageFileName As
String, XRes As Long, YRes As Long, JPEGQuality As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vignette correspondant au modèle spécifié dans FinishTypesList et
   FinishesList sous la forme d’un fichier .JPG, .BMP, .GIF, .PNG ou .TIF dont le nom (avec le chemin complet et
   l’extension) est spécifié dans le paramètre ImageFileName.
   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100).

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.
   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à 3.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportFamilyFinishImage( SessionId As Long, FinishTypeRank As Long, FinishRank As Long, TextureRank
as Long, Width As Long, Depth As Long, ImageFileName As String, XRes As Long, YRes As Long, JPEGQuality
As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vignette correspondant à la texture de la finition de famille spécifiée par
   FinishTypesRank, FinisheRank et TextureRank sous la forme d’un fichier .JPG, .BMP, .GIF, .PNG ou .TIF dont
   le nom (avec le chemin complet et l’extension) est spécifié dans le paramètre ImageFileName.
   Normalement TextureRank vaut 1 mais peut prendre une autre valeur si le type de finition fait intervenir
   plusieurs colonnes de textures (comme par exemple « Coloris PT » qui regroupe « Coloris dessus » et
   « Coloris chant ») et que l’on souhaite exporter la vignette représentant un coloris « secondaire ».

   Les paramètres Width et Depth permettent de spécifier la taille en unités de mesure du catalogue de
   l’échantillon représenté dans l’image exportée.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.

   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100).
   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à 3.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportModelFinishImage( SessionId As Long, FinishTypeRank As Long, FinishRank As Long, TextureRank
as Long, Width As Long, Depth As Long, ImageFileName As String, XRes As Long, YRes As Long, JPEGQuality
As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vignette correspondant à la texture de la finition de modèle spécifiée par
   FinishTypesRank et FinisheRank et TextureRank sous la forme d’un fichier .JPG, .BMP, .GIF, .PNG ou .TIF
   dont le nom (avec le chemin complet et l’extension) est spécifié dans le paramètre ImageFileName.
   Normalement TextureRank vaut 1 mais peut prendre une autre valeur si le type de finition fait intervenir
   plusieurs colonnes de textures (comme par exemple « Coloris façade » qui regroupe « Centre 1 », « Centre 2
   » et « Tour ») et que l’on souhaite exporter la vignette représentant un coloris « secondaire ».

   Les paramètres Width et Depth permettent de spécifier la taille en unités de mesure du catalogue de
   l’échantillon représenté dans l’image exportée.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.

   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100).
   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à 3.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportResource( SessionId As Long, LineRank As Long, ResourceFileName As String ) As Boolean

   Cette fonction permet de générer un fichier à partir de la ressource incorporée dans le catalogue courant. Le
   nom du fichier généré (avec le chemin complet et l’extension) est spécifié dans le paramètre
   ResourceFileName.

   Les ressources incorporées sont par exemple les fichiers de textures inscrits dans la colonne « Fichier JPG ou
   BMP » de la table « Textures » et dont la case « Incorporé » située sur la même ligne est cochée.
   Cependant, il est envisageable d’incorporer dans un catalogue tout type de fichier (images, son, vidéo, etc.) et
   de les extraire le moment venu pour s’en servir.
   Par exemple, les photos des poignées d’un catalogue pourraient être incorporées dans le fichier catalogue.
   Ensuite, une application ce SDK pourrait se servir de la fonction FileExportResource pour exporter ces
   photos afin de les afficher dans une « Combo box graphique » de choix de poignée.

   Le paramètre LineRank qui indique le rang de la ressource à exporter dans la table CATTABLE_RESOURCES
   peut être obtenu à l’aide de la fonction TableGetLineRankFromName si l’on connaît le nom de celle-ci.

   Remarque : il est possible d’incorporer un fichier par programme en utilisant la fonction TableSetLineInfo
   décrite plus loin et en spécifiant le nom du fichier à incorporer (avec le chemin complet et l’extension) dans le
   paramètre InfoValue.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

IsLoaded( SessionId As Long ) As Boolean

   Cette fonction permet de savoir si un catalogue est chargé en mémoire et donc s’il est possible d’appeler les
   fonctions qui s’appliquent au catalogue chargé en mémoire (la plupart des fonctions de la classe Catalog).

   Retour : la fonction retourne 1 si un catalogue est chargé en mémoire, 0 sinon.

GetActiveTable( SessionId As Long ) As Long

   Retour : la fonction retourne la valeur identifiant la table qui est sélectionnée dans la boîte à option « Entité »
   de MobiScript, c’est-à-dire la table affichée dans MobiScript.

GetInfo( SessionId As Long, InfoType As Long ) As String

   Cette fonction permet de lire les informations d’ordre général concernant le catalogue courant (nom du
   catalogue, code du catalogue, catalogue de base utilisé, etc.).
   En fait, ces informations sont celles qui sont présentes dans la boîte de dialogue « Catalogue | Informations »
   de Mobiscript.
   Attention, les informations dépendantes de la langue comme le nom, le nom du catalogue de base sont
   retournées dans la langue courante.
   L’information demandée est spécifiée par le paramètre InfoType dont voici la liste des valeurs :

     Valeur de InfoType                              Description
     CATINFO_NAME = 0                                Nom du catalogue (30 caractères maxi)
     CATINFO_CODE = 1                                Code du catalogue (8 caractères maxi)
     CATINFO_PASSWORD = 10                           Mot de passe protégeant l’accès au catalogue
     CATINFO_TYPE = 6                                Type de catalogue (rang dans la liste déroulante
                                                     « Type » de la boîte de dialogue « Catalogue |
                                                     Informations » de Mobiscript)
                                                     (exemple : 1 pour « Cuisines et salles de bains », 2
                                                     pour « Rangement », 3 pour « Electroménager », etc.)
     CATINFO_SUBTYPE = 8                             Sous-type de catalogue (rang dans la liste déroulante
                                                     « Sous-type »)
                                                     (exemple : 1 pour « Aucun », 2 pour « Façades », 3
                                                     pour « Caissons », 4 pour « Accessoires » si Type
                                                     vaut 1)
     CATINFO_BASECATALOG = 2008                      Catalogue de base utilisé (30 caractères maxi)
     CATINFO_LANGUAGE = 17                           Langue de travail du catalogue
                                                     (exemple : « FRA », « ENG », etc.)
     CATINFO_UNIT = 15                               Unité de mesure employée dans le catalogue (rang
                                                     dans la liste déroulante « Unité de mesure »)
                                                     (exemple : 1 pour « mm », 2 pour « cm », etc.)
     CATINFO_PRICETYPE = 18                          Type des prix dans le catalogue (rang dans la liste
                                                     déroulante « Prix »)
                                                     (exemple : 1 pour « Achat », 2 pour « Vente », 3 pour
                                                     « Achat et vente »)
     CATINFO_CURRENCY = 2                            Symbole de la devise utilisée pour représenter les prix
                                                     (exemple : « EUR »)
     CATINFO_VATINCLUDED = 1008                      Vaut « 1 » si les prix de vente sont entrés TTC, « 0 »
                                                     s’ils sont HT
     CATINFO_VATRATE = 9                             Taux de TVA si les prix de vente sont entrés TTC
                                                     (exemple : « 19,6 »)
     CATINFO_CREATIONDATE = 19                       Date de création du catalogue au format AAAAMMJJ
     CATINFO_MODIFICATIONDATE = 20                   Date de dernière modification du catalogue au format
                                                     AAAAMMJJ
     CATINFO_STARTVALIDITYDATE = 21                  Date d’entrée en vigueur du catalogue au format
                                                     AAAAMMJJ
     CATINFO_ENDVALIDITYDATE = 22                    Date de fin de validité du catalogue au format
                                                     AAAAMMJJ
     CATINFO_SELLINGPRICESWOPW = 3003                Vaut « 1 » si la table des prix de vente peut être
                                                     consultée et modifiée même sans connaître le mot de
                                                     passe du catalogue

   Retour : la fonction retourne la chaîne de caractères représentant l’information demandée.

SetInfo( SessionId As Long, InfoValue As String, InfoType As Long ) As Boolean

   Cette fonction permet d’écrire les informations d’ordre générales concernant le catalogue courant.
   Consultez la fonction GetInfo pour plus de détails.
   Attention : l’information Unité de mesure est en lecture seule.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

TableAddLines( SessionId As Long, Table As Long, ClusterRank As Long, NbLines As Long ) As Long

   Cette fonction permet d’ajouter une suite de NbLines lignes vierges à la table défini par Table et à la fin de la
   grappe défini par ClusterRank.
   Exécuter cette fonction a le même effet que cliquer sur le bouton « Ajouter » situé en bas de la fenêtre de
   Mobiscript.
   Retour : la fonction retourne le rang de la première ligne ajoutée par rapport à la grappe indiquée.
   Elle retourne -1 si la valeur de ClusterRank est invalide.

TableInsertLines( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long, NbLines As Long
) As Long

   Cette fonction permet d’insérer une suite de NbLines lignes vierges dans la table défini par Table. Les lignes
   seront insérées dans la grappe indiquée par ClusterRank et devant la ligne spécifiée par LineRank.
   Exécuter cette fonction a le même effet que de sélectionner une ligne et de cliquer sur le bouton « Insérer »
   situé en bas de la fenêtre de Mobiscript.

   Retour : la fonction retourne le rang de la première ligne insérée par rapport à la grappe indiquée.
   Elle retourne -1 si la valeur de ClusterRank ou de LineRank est invalide.

TableDeleteLines( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long, NbLines As
Long ) As Long

   Cette fonction permet de supprimer une suite de NbLines lignes dans la table défini par Table. Les lignes
   seront supprimées dans la grappe indiquée par ClusterRank et à partir de la ligne spécifiée par LineRank.
   Exécuter cette fonction a le même effet que de sélectionner une suite de lignes dans la table et de cliquer sur
   le bouton « Supprimer » situé en bas de la fenêtre de Mobiscript.

   Retour : la fonction retourne le rang de la première ligne supprimée par rapport à la grappe indiquée.
   Elle retourne -1 si la valeur de ClusterRank ou de LineRank est invalide.

TableGetLineInfo( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long, InfoColumnRank
As Long ) As String

   Cette fonction permet d’obtenir l’information contenue dans la cellule correspondant à la colonne de rang
   InfoColumnRank (numéroté à partir de 1) et à la ligne de rang LineRank de la grappe ClusterRank de la table
   Table du catalogue courant.

   Attention, les informations dépendantes de la langue comme le nom ou la description sont retournées dans la
   langue courante.

   Si le paramètre ClusterRank vaut CLUSTER_FROM_ITEM (c’est-à-dire 0), alors le paramètre LineRank est
   considéré comme étant le rang dans la table et non plus le rang dans le cluster.

   Retour : la fonction retourne la chaîne de caractères représentant l’information demandée.
   Elle retourne une chaîne vide si la valeur de ClusterRank ou de LineRank est invalide.

TableSetLineInfo( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long, InfoColumnRank
As Long, InfoValue As String ) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères InfoValue dans la cellule correspondant à la colonne de
   rang InfoColumnRank (numéroté à partir de 1) et à la ligne de rang LineRank de la grappe ClusterRank de la
   table Table du catalogue courant.

   Attention, les informations dépendantes de la langue comme le nom ou la description doivent être fournies
   dans la langue courante.

   Si le paramètre ClusterRank vaut CLUSTER_FROM_ITEM (c’est-à-dire 0), alors le paramètre LineRank est
   considéré comme étant le rang dans la table et non plus le rang dans le cluster.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

TableGetLine( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long ) As String
   Cette fonction permet d’obtenir dans une seule chaîne de caractères toutes les informations contenues dans
   les cellules de la ligne de rang LineRank de la grappe ClusterRank de la table Table du catalogue courant.

   Attention, les informations dépendantes de la langue comme le nom ou la description sont retournées dans la
   langue courante.

   Si le paramètre ClusterRank vaut CLUSTER_FROM_ITEM (c’est-à-dire 0), alors le paramètre LineRank est
   considéré comme étant le rang dans la table et non plus le rang dans le cluster.

   Retour : la fonction retourne la chaîne de caractères représentant les informations de la ligne spécifiée
   séparées par un caractère de tabulation.
   Elle retourne une chaîne vide si la valeur de ClusterRank ou de LineRank est invalide.

TableGetLineRankFromCode( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long,
Code As String, BackScan As Boolean ) As Long

   Cette fonction permet de retrouver dans la table Table le rang de la ligne dont le code est identique à Code.
   La recherche s’effectue en partant de la ligne LineRank de la grappe ClusterRank et dans le sens croissant
   des rangs de lignes si BackScan vaut 0 (dans le sens de la fin vers le début si BackScan vaut 1).

   Remarque : pour retrouver le rang d’un article par son numéro de référence, il faut utiliser la fonction
   TableGetLineRankFromName décrite ci-après.

   Retour : la fonction retourne le rang de la ligne trouvée par rapport à la grappe spécifiée et -1 si la ligne n’est
   pas trouvée.

TableGetLineRankFromName( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long,
Name As String, BackScan As Boolean ) As Long

   Cette fonction permet de retrouver dans la table Table le rang de la ligne dont le nom est identique à Name.
   La recherche s’effectue en partant de la ligne LineRank de la grappe ClusterRank et dans le sens croissant
   des rangs de lignes si BackScan vaut 0 (dans le sens de la fin vers le début si BackScan vaut 1).
   Attention, le paramètre Name n’est recherché que dans la langue courante.

   Retour : la fonction retourne le rang de la ligne trouvée par rapport à la grappe spécifiée et -1 si la ligne n’est
   pas trouvée.

TableGetLinesNb( SessionId As Long, Table As Long, ClusterRank As Long ) As Long

   Cette fonction permet d’obtenir le nombre de lignes contenues dans la grappe ClusterRank de la table Table.

   Retour : la fonction retourne le nombre de lignes et -1 si la valeur de ClusterRank est invalide.

TableGetClusterRankFromLineRank( SessionId As Long, Table As Long, LineRank As Long ) As Long

   Retour : la fonction retourne le rang de la grappe à laquelle appartient la ligne de rang LineRank dans la table
   Table. La fonction retourne -1 si LineRank est invalide.

TableGetFirstLineRankFromClusterRank( SessionId As Long, Table As Long, ClusterRank As Long ) As Long

   Retour : la fonction retourne le rang dans la table Table de la première ligne appartenant à la grappe de rang
   ClusterRank. La fonction retourne 0 si la grappe est vide et -1 si ClusterRank est invalide.

TableGetColumnsNb( SessionId As Long, Table As Long ) As Long

   Retour : la fonction retourne le nombre de colonnes de la table Table.

TableGetColumnTitle( SessionId As Long, Table As Long, ClusterRank As Long, LineRank As Long, ColumnNb
As Long, ColumnRank As Long ) As String
   Retour : la fonction retourne la chaîne de caractères représentant le titre de la colonne de rang ColumnRank
   dans la table Table et cela au niveau de la ligne de rang LineRank de la grappe de rang ClusterRank.
   Indiquer à la fonction le nombre de colonne de la table grâce au paramètre ColumnNb permet d’accélérer son
   traitement. Cela peut s’avérer important si la fonction doit être appelée souvent.
   Si le paramètre ColumnNb vaut zéro, la détermination du nombre de colonnes de la table est effectué à
   l’intérieur de la fonction.

TableGetActiveLineRank( SessionId As Long, Table As Long ) As Long

   Retour : la fonction retourne le rang (numéroté à partir de 1) de la ligne active dans la table Table. La ligne
   active est la ligne correspondant à la cellule qui reçoit les caractères tapés au clavier.
   Attention, le rang retourné est le rang dans la table complète. Il peut ne pas correspondre au numéro de ligne
   affiché dans la première colonne du tableau dans MobiScript si vous avez coché la case « Gauche » ou la
   case « Droit » dans la table CATTABLE_ARTICLES, CATTABLE_PRICES, CATTABLE_PURCHASEPRICES
   ou CATTABLE_REFERENCES.

   Remarque : Cette fonction peut être utile lors de l’écriture de fonctions d’extension de MobiScript (par exemple un assistant
   à l’écriture de scripts) afin de savoir à quelle ligne doit s’appliquer la fonction.

TableSelectionGetFirstLineRank( SessionId As Long ) As Long

   Retour : la fonction retourne le rang (numéroté à partir de 1) de la première ligne sélectionnée de la table
   active dans MobiScript.
   La fonction retourne -1 si vous avez coché la case « Gauche » ou la case « Droit » dans la table
   CATTABLE_ARTICLES, CATTABLE_PRICES, CATTABLE_PURCHASEPRICES ou
   CATTABLE_REFERENCES.

   Remarque : Avec la fonction TableSelectionGetLinesNb, cette fonction peut être utile lors de l’écriture de fonctions
   d’extension de MobiScript pour balayer les lignes sélectionnées dans la table active afin de leur appliquer un traitement
   particulier.

TableSelectionGetLinesNb( SessionId As Long ) As Long

   Retour : la fonction retourne le nombre de lignes sélectionnées dans la table active dans MobiScript.
   La fonction retourne 0 si vous avez coché la case « Gauche » ou la case « Droit » dans la table
   CATTABLE_ARTICLES, CATTABLE_PRICES, CATTABLE_PURCHASEPRICES ou
   CATTABLE_REFERENCES.

   Remarque : Avec la fonction TableSelectionGetFirstLineRank, cette fonction peut être utile lors de l’écriture de fonctions
   d’extension de MobiScript pour balayer les lignes sélectionnées dans la table active afin de leur appliquer un traitement
   particulier.

GetClusterRankFromModelFinishType( SessionId As Long, ModelRank As Long, FinishType As String ) As
Long

   Cette fonction permet de retrouver dans la table « Finitions de modèle » le rang de la grappe défini par le
   modèle ModelRank et le type de finition FinishType.
   Le paramètre ModelRank représente le rang du modèle concerné dans la table « Modèles ».
   Le paramètre FinishType doit être l’une des chaînes de caractères que l’on trouve dans la boîte à options
   « Type de finition » de la table « Finitions de modèle ». Attention, ces chaînes de caractères dépendent de la
   langue courante.
   Le rang de la grappe retourné par cette fonction est destiné à servir de paramètre pour les fonctions de cette
   classe qui requièrent ce type de paramètre.

   Retour : la fonction retourne le rang de la grappe et -1 si le rang du modèle ou la chaîne de caractères
   FinishType est invalide.

GetClusterRankFromModelHandleType( SessionId As Long, ModelRank As Long, HandleType As String ) As
Long
   Cette fonction permet de retrouver dans la table « Poignées de modèle » le rang de la grappe défini par le
   modèle Model et le type de poignée HandleType.
   Le paramètre ModelRank représente le rang du modèle concerné dans la table « Modèles ».
   Le paramètre HandleType doit être l’une des chaînes de caractères que l’on trouve dans la boîte à options
   « Type de poignée » de la table « Poignées de modèle ». Attention, ces chaînes de caractères dépendent de
   la langue courante.
   Le rang de la grappe retourné par cette fonction est destiné à servir de paramètre pour les fonctions de cette
   classe qui requièrent ce type de paramètre.

   Retour : la fonction retourne le rang de la grappe et -1 si le rang du modèle ou la chaîne de caractères
   HandleType est invalide.

GetClusterRankFromFamilyFinishType( SessionId As Long, FamilyRank As Long, FinishType As String ) As
Long

   Cette fonction permet de retrouver dans la table « Finitions de famille » le rang de la grappe défini par la
   famille FamilyRank et le type de finition FinishType.
   Le paramètre FamilyRank représente le rang de la famille concernée dans la table « Familles ».
   Le paramètre FinishType doit être l’une des chaînes de caractères que l’on trouve dans la boîte à options
   « Type de finition » de la table « Finitions de famille ». Attention, ces chaînes de caractères dépendent de la
   langue courante.
   Le rang de la grappe retourné par cette fonction est destiné à servir de paramètre pour les fonctions de cette
   classe qui requièrent ce type de paramètre.

   Retour : la fonction retourne le rang de la grappe et -1 si le rang de la famille ou la chaîne de caractères
   FinishType est invalide.

DicoUpdate( SessionId As Long ) As Boolean

   Cette fonction permet d’ajouter à la table du dictionnaire de traduction du catalogue courant tous les textes
   (noms de chapitre, noms et descriptions de bloc, noms et descriptions de modèle, finitions, etc.) qui ont été
   ajoutés dans ce catalogue depuis la dernière mise à jour et de supprimer tous les textes qui ont été enlevés du
   catalogue.

   Une mise à jour est également effectuée automatiquement lors de l’ouverture de la fenêtre de traduction d’un
   catalogue dans MobiScript.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

DicoGetLinesNb( SessionId As Long ) As Long

   Retour : la fonction retourne le nombre de lignes de la table du dictionnaire de traduction du catalogue
   courant.

DicoSetStringFromLineRank( SessionId As Long, LineRank As Long, LanguageCode As String, Text As String )
As Boolean

   Cette fonction permet d’écrire dans la table du dictionnaire de traduction du catalogue courant la chaîne de
   caractères Text représentant la traduction dans la langue défini par LanguageCode de la chaîne de caractères
   présente à la ligne LineRank.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

DicoGetStringFromLineRank( SessionId As Long, LineRank As Long, LanguageCode As String ) As String

   Cette fonction permet de lire dans la table du dictionnaire de traduction du catalogue courant la chaîne de
   caractères représentant la traduction dans la langue défini par LanguageCode de la chaîne de caractères
   présente à la ligne LineRank.
   Retour : la fonction retourne la chaîne de caractères traduite ou une chaîne de caractères vide si LineRank est
   invalide.

DicoSetStringFromKey( SessionId As Long, KeyString As String, LanguageCode As String, TranslatedString As
String ) As Boolean

   Cette fonction permet d’écrire dans la table du dictionnaire de traduction du catalogue courant la chaîne de
   caractères TranslatedString représentant la traduction dans la langue défini par LanguageCode de la chaîne
   de caractères KeyString.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

DicoGetStringFromKey( SessionId As Long, KeyString As String, LanguageCode As String ) As String

   Cette fonction permet de lire dans la table du dictionnaire de traduction du catalogue courant la chaîne de
   caractères représentant la traduction dans la langue défini par LanguageCode de la chaîne de caractères
   KeyString.

   Retour : la fonction retourne la chaîne de caractères traduite ou la chaîne de caractères KeyString si
   KeyString est absent du dictionnaire.


La classe « Scene »
Les fonctions de la classe Scene permettent d’accéder par programme en lecture et en écriture aux
scènes de KitchenDraw.
Grâce aux fonctions de la classe Scene, il sera possible de développer des modules de génération de
fichiers de commande fabricant ou des extensions à KitchenDraw (fonctions « plug-in » exécutées
automatiquement lors du déclanchement d’un évènement comme l’enregistrement d’une scène ou alors
associées à des commandes de menu spécifiques).
Ces fonctions seront également utilisées dans le développement d’assistants permettant la configuration
d’objets hautement « paramétrables » tels les meubles ou les plans de travail spéciaux, les escaliers, les
vérandas, etc.

Les fonctions de cette classe qui accèdent à un catalogue à partir de son nom de fichier sans extension
partent du principe que ce catalogue est chargé en mémoire ou à défaut, qu’il se trouve dans le
répertoire défini dans l’entrée « Dir » de la section « Catalogs » du fichier de configuration SPACE.INI
(qui lui-même doit se trouver dans le même répertoire que DV.DLL, c’est-à-dire dans le répertoire de
l’application ou alors dans le répertoire système de Windows).

La liste des fonctions de la classe Scene est la suivante :

FileLoad( SessionId As Long, SceneFileName As String ) As Boolean

   Cette fonction charge en mémoire la scène dont le nom (avec le chemin complet) est spécifié dans le
   paramètre SceneFileName.
   Pour une application donnée, seule une scène peut être chargée en mémoire à la fois. La scène chargée est
   alors appelée la scène courante.

   Retour : si le fichier scène est trouvé et qu’il y a suffisamment de mémoire pour le charger, la fonction retourne
   1, sinon, elle retourne 0.

FileSave( SessionId As Long, SceneFileName As String) As Boolean

   Cette fonction enregistre la scène courante sur disque.
   La variable SceneFileName contient le nom du fichier (avec le chemin complet) dans lequel la scène courante
   sera enregistrée.
   Retour : si l’enregistrement a été effectué sans problème, la fonction retourne 1, sinon, elle retourne 0.

FileLoadCatalogScene( SessionId As Long, CatalogFileName As String ) As Boolean

   Cette fonction charge en mémoire la scène de présentation correspondant au catalogue dont le nom (avec le
   chemin complet) est spécifié dans le paramètre CatalogFileName.

   La scène de présentation d’un catalogue contient les spécifications de dessin des vignettes du catalogue. Elle
   est créée dans le répertoire des catalogues lorsqu’on valide l’une des boîtes de dialogue de MobiScript qui
   définissent la façon dont les vignettes doivent être dessinées (commandes du sous-menu « Catalogue |
   Vignettes » ). Elle porte le même nom que le catalogue.

   Si aucune scène de présentation n’existe pour le catalogue, une scène vide est créée en mémoire.
   Une fois chargée en mémoire la scène de présentation devient la scène courante. Vous pouvez ensuite agir
   sur cette scène à l’aide des fonctions de la classe Scene décrites ci-après puis éventuellement l’enregistrer.

   Vous devez charger la scène de présentation avant d’exporter des vignettes du catalogue si vous voulez qu’un
   modèle particulier de façade, de finition ou de poignée soit appliqué.

   Retour : si le fichier catalogue est trouvé et qu’il y a suffisamment de mémoire pour charger la scène de
   présentation correspondante, la fonction retourne 1, sinon, elle retourne 0.

FileSaveCatalogScene( SessionId As Long, SceneFileName As String ) As Boolean

   Cette fonction enregistre sur disque la scène de présentation correspondant au catalogue courant.
   La variable SceneFileName contient le nom du fichier (avec le chemin complet) dans lequel la scène de
   présentation sera enregistrée.

   Retour : si l’enregistrement a été effectué sans problème, la fonction retourne 1, sinon, elle retourne 0.

FileExportBOMList( SessionId As Long, ListFileName As String, ListType As Long, FormatName As String,
Factorized As Boolean, Concatenate As Boolean ) As Boolean

   Cette fonction permet d’exporter une nomenclature (liste de constituants) de la scène courante sous la forme
   d’un fichier texte dont le nom (avec le chemin complet) est spécifié dans le paramètre ListFileName.

   Le paramètre ListType permet de spécifier le type de nomenclature à générer.

    Valeur de ListType                               Description
    SCNBOMEXPTYPE_ALL = 0                            Nomenclature détaillée comprenant tous les constituants
                                                     de la scène c’est-à-dire les composants de type PANC et
                                                     PANF (panneau), PROF (profile), PIECE (pièce), PROD
                                                     (produit), MO (main d’œuvre)
    SCNBOMEXPTYPE_PANCUTLIST = 1                     Liste de débit panneaux comprenant uniquement les
                                                     composants de type PANC et PANF (panneau)

   Le paramètre FormatName permet de spécifier le format du fichier à générer. Celui-ci représente le nom du
   logiciel qui sera censé ouvrir ou importer le fichier ainsi généré.
   La liste des formats de fichier supporté est la suivante :
         SheetLayout
         FastCut
         The Itemizer
         Cut Planner
         Cutting Optimizer
         OptiCoupe IV
         Optimik
         Leonardo
         CutList Plus
   S’il vaut Vrai le paramètre Factorized indique que la liste doit être factorisée c’est-à-dire que les lignes
   identiques doivent être représentées par une seule ligne mais avec une information de quantité.

   S’il vaut Vrai le paramètre Concatenate indique que la liste générée doit être écrite à la suite du contenu du
   fichier ListFileName (si celui-ci existe déjà évidemment). S’il vaut Faux, le fichier sera d’abord vidé.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportXML( SessionId As Long, ListFileName As String, Factorized As Boolean ) As Boolean

   Cette fonction permet d’exporter le contenu de la scène en cours sous la forme d’un fichier XML dont le nom
   (avec le chemin complet) est spécifié dans le paramètre ListFileName.

   S’il vaut Vrai le paramètre Factorized indique que les objets identiques doivent être représentées par un seul
   « tag » mais avec une information de quantité.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportImage( SessionId As Long, ImageFileName As String, XRes As Long, YRes As Long,
BackGroungColor As String, Transparent As Boolean, JPEGQuality As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vue en cours (vue de dessus, élévation ou perspective) sous la forme d’un
   fichier .JPG, .BMP, .GIF, .PNG ou .TIF dont le nom (avec le chemin complet) est spécifié dans le paramètre
   ImageFileName.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.

   Le paramètre BackGroungColor permet de définir la couleur de fond de l’image. Il s’exprime sous la forme
   d’une chaîne de caractères représentant les valeurs décimales (de 0 à 255) de la composante rouge, puis
   verte puis bleu de la couleur de fond, séparées par une virgule comme dans l’exemple suivant : « 255,128,0 ».
   Si le paramètre BackGroungColor est une chaîne vide, la couleur de fond sera blanche.
   Si le paramètre Transparent est positionné à vrai, la couleur de fond sera définie comme transparente
   (uniquement pour les formats .GIF, .PNG et .TIF).
   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100).

   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à 3.

    Valeur de AntiAliasing         Description
    1                              Pas d’anti-crénelage
    2                              L’image est générée avec une résolution de 2 x XRes sur 2 x
                                   YRes puis une moyenne sur 4 pixels est effectuée
    3                              L’image est générée avec une résolution de 3 x XRes sur 3 x
                                   YRes puis une moyenne sur 9 pixels est effectuée

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportSelectionImage( SessionId As Long, ImageFileName As String, XRes As Long, YRes As Long ) As
Boolean

   Cette fonction permet d’exporter une image de visualisation des objets sélectionnés de la vue en cours (vue
   de dessus, élévation ou perspective) sous la forme d’un fichier .BMP, .GIF ou .PNG dont le nom (avec le
   chemin complet) est spécifié dans le paramètre Image.
   Cette image ne donne pas une représentation réaliste de la vue en cours mais permet de visualiser, grâce à
   une opération de superposition d’image, quels sont les objets sélectionnés.
   Si le format .BMP est choisi, les carrés de sélection sont dessinés en blanc sur fond noir.
   Si le format .GIF ou .PNG est choisi, les carrés de sélection sont dessinés en noir sur fond transparent.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.
   Normalement, l’ « image de la sélection » doit être générée avec la même résolution que l’image servant à
   représenter la scène.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportSelectionOutlineImage( SessionId As Long, PixelXRot As Long, PixelYRot As Long, Angle As Double,
ImageFileName As String, XRes As Long, YRes As Long ) As Boolean

   Cette fonction permet d’exporter une image de visualisation des contours des objets sélectionnés de la vue
   en cours (vue de dessus ou élévation) sous la forme d’un fichier .BMP, .GIF ou .PNG dont le nom (avec le
   chemin complet) est spécifié dans le paramètre ImageFileName.
   Cette image ne donne pas une représentation réaliste de la vue en cours mais permet de visualiser, grâce à
   une opération de superposition d’image, le déplacement à la souris de la sélection.
   Si le format .BMP est choisi, les traits de contour sont dessinés en blanc sur fond noir.
   Si le format .GIF ou .PNG est choisi, les traits de contour sont dessinés en noir sur fond transparent.

   Les paramètres PixelXRot et PixelYRot représentent la position en coordonnées image (pixels) du point de
   pivot de l’éventuelle rotation (par exemple la position du pointeur de la souris) et le paramètre Angle permet de
   spécifier en degrés l’angle de rotation des contours.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée, qui,
   normalement, doit être identique à la résolution de l’image servant à représenter la scène.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportCatalogImage( SessionId As Long, CatalogFileName As String, ArticleRef As String, HandingType As
Long, Opened As Long, ViewMode As Long, ImageFileName As String, XRes As Long, YRes As Long,
BackGroungColor As String, Transparent As Boolean, JPEGQuality As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vignette correspondant à l’article de référence ArticleRef et de sens
   HandingType dans le catalogue CatalogFileName (nom de fichier court sans extension).

    Valeur de HandingType                      Description
    HANDINGTYPE_NONE = 0                       Pas de sens applicable
    HANDINGTYPE_LEFT = 1                       Sens Gauche
    HANDINGTYPE_RIGHT = 2                      Sens Droit

   L’article adopte les finitions génériques de la scène de présentation associée au catalogue CatalogFileName.
   Si Opened vaut 0, l’article est représenté dans l’état fermé ; sinon, il est représenté dans l’état ouvert.
   Le paramètre ViewMode indique quelle vue de l’article on souhaite obtenir.

    Valeur de ViewMode                           Description
    VIEWMODE_2D = 0                              Vue de dessus
    VIEWMODE_ELEVATION = 1                       Vue de face (élévation) filaire
    VIEWMODE_REALELEVATION = 2                   Vue de face (élévation) réaliste
    VIEWMODE_3D = 3                              Perspective filaire
    VIEWMODE_REAL3D = 4                          Perspective réaliste
    VIEWMODE_PHOTO3D = 5                         Perspective photoréaliste

   La vignette est générée sous la forme d’un fichier .JPG, .BMP, .GIF, .PNG, ou .TIF de résolution XRes x YRes
   dont le nom (avec le chemin complet) est spécifié dans le paramètre ImageFileName.

   Le paramètre BackGroungColor permet de définir la couleur de fond de l’image. Il s’exprime sous la forme
   d’une chaîne de caractères représentant les valeurs décimales (de 0 à 255) de la composante rouge, puis
   verte puis bleu de la couleur de fond, séparées par une virgule comme dans l’exemple suivant : « 255,128,0 ».
   Si le paramètre BackGroungColor est une chaîne vide, la couleur de fond sera blanche.
   Si le paramètre Transparent est positionné à vrai, la couleur de fond sera définie comme transparente
   (uniquement pour les formats .GIF, .PNG et .TIF).
   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100 avec une valeur recommandée de 75).

   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à 3.

    Valeur de AntiAliasing         Description
    1                              Pas d’anti-crénelage
    2                              L’image est générée avec une résolution de 2 x XRes sur 2 x
                                   YRes puis une moyenne sur 4 pixels est effectuée
    3                              L’image est générée avec une résolution de 3 x XRes sur 3 x
                                   YRes puis une moyenne sur 9 pixels est effectuée

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 si ArticleRef n’a pas été trouvé dans
   CatalogFileName ou si un problème est intervenu lors de l’écriture du fichier.

FileExportCatalogOutlineImage( SessionId As Long, CatalogFileName As String, ArticleRef As String,
HandingType As Long, Width As Long, Depth As Long, Height As Long, Angle As Double, Opened As Long,
ImageFileName As String, XRes As Long, YRes As Long) As Boolean

   Cette fonction permet d’exporter une image de visualisation du contour de l’article de référence ArticleRef et
   de sens HandingType dans le catalogue CatalogFileName (nom de fichier court sans extension). Cette image
   de visualisation correspond à la vue en cours de la scène courante (vue de dessus, élévation ou perspective).
   Elle est exportée sous la forme d’un fichier .BMP, .GIF ou .PNG dont le nom (avec le chemin complet) est
   spécifié dans le paramètre ImageFileName.
   Cette image ne donne pas une représentation réaliste de l’article mais permet de visualiser, grâce à une
   opération de superposition d’image, le déplacement à la souris du contour de l’article à poser en « drag &
   drop ».
   Si le format .BMP est choisi, les traits de contour sont dessinés en blanc sur fond noir.
   Si le format .GIF ou .PNG est choisi, les traits de contour sont dessinés en noir sur fond transparent.

   Les dimensions appliquées à l’article qui peuvent être différentes des dimensions par défaut sont définies dans
   les paramètres Width, Depth et Height.
   Si Opened vaut 0, l’article est représenté dans l’état fermé ; sinon, il est représenté dans l’état ouvert pour peu
   qu’un état ouvert ait été spécifié dans le catalogue.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.
   Normalement, l’image de contour doit être générée avec la même résolution que l’image servant à représenter
   la scène.

   Le point d’origine est au centre de l’image de contour.

   Le paramètre Angle permet de spécifier en degrés un éventuel angle de rotation de l’article effectué durant
   l’opération de « drag & drop ».

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileExportCatalogImageFromScript( SessionId As Long, CatalogFileName As String, Script As String,
HandingType As Long, Width As Long, Depth As Long, Height As Long, Opened As Long, ViewMode As Long,
ImageFileName As String, XRes As Long, YRes As Long, BackGroungColor As String, Transparent As Boolean,
JPEGQuality As Long, AntiAliasing As Long ) As Boolean

   Cette fonction permet d’exporter la vignette représentant un bloc généré par un script.
   Tout d’abord, la fonction crée un bloc temporaire dans le catalogue CatalogFileName (nom de fichier sans
   extension) à partir du script Script. Ensuite, elle ajoute un article à ce bloc. Les dimensions de cet article sont
   précisées par les paramètres Width, Depth et Height et le sens par le paramètre HandingType.
   Si Opened vaut 0, l’article est représenté dans l’état fermé ; sinon, il est représenté dans l’état ouvert.
   Le paramètre ViewMode indique quelle vue de l’article on souhaite obtenir (voir la fonction
   FileExportCatalogImage ci-dessus pour plus de détails).
   L’article adopte les finitions génériques de la scène de présentation associée au catalogue CatalogFileName.
   La vignette est générée sous la forme d’un fichier .JPG, .BMP, GIF, PNG ou .TIF de résolution XRes x YRes
   dont le nom (avec le chemin complet) est spécifié dans le paramètre ImageFileName.

   Le paramètre BackGroungColor permet de définir la couleur de fond de l’image. Il s’exprime sous la forme
   d’une chaîne de caractères représentant les valeurs décimales (de 0 à 255) de la composante rouge, puis
   verte puis bleu de la couleur de fond, séparées par une virgule comme dans l’exemple suivant : « 255,128,0 ».
   Si le paramètre BackGroungColor est une chaîne vide, la couleur de fond sera blanche.
   Si le paramètre Transparent est positionné à vrai, la couleur de fond sera définie comme transparente
   (uniquement pour les formats .GIF, .PNG et .TIF).
   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100 avec une valeur recommandée de 75).

   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques (voir la fonction FileExportCatalogImage ci-dessus pour plus de détails).

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

FileGetSelectionPoints( SessionId As Long, ImageResX As Long, ImageResY As Long ) As String

   Cette fonction permet d’obtenir les points de sélection c’est-à-dire les points de contour appartenant aux objets
   sélectionnés de la scène courante. Cette liste de points de sélection correspond à la vue en cours de la scène
   courante (vue de dessus, élévation ou perspective).
   Elle est retournée sous la forme d’une chaîne de caractères listant les différents points.
   Les coordonnées des points de sélection sont exprimés en pixels dans le repère correspondant à l’image dont
   la résolution en pixels est de ImageResX x ImageResY et qui sert à représenter la vue en cours.
   Les coordonnées des points sont séparées par une virgule et les points par un point-virgule comme indiqué
   dans l’exemple ci-dessous :
                                                                                                ième
   « x1,y1,z1;x2,y2,z2;….;xn,yn,zn;…», où « xn », « yn » et « zn » sont les coordonnées du n         point de
   sélection.

   Retour : la fonction retourne la chaîne de caractères listant les points de sélection.

FileGetSelectionOutlinePoints( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelXRot As
Long, PixelYRot As Long, Angle As Double ) As String

   Cette fonction permet d’obtenir les polylignes constituant le contour des objets sélectionnés de la scène
   courante. Cette liste de polylignes de visualisation correspond à la vue en cours de la scène courante (vue de
   dessus, élévation ou perspective).
   Elle est retournée sous la forme d’une chaîne de caractères listant les différentes polylignes.
   Les coordonnées des points des polylignes sont exprimés en pixels dans le repère correspondant à l’image
   dont la résolution en pixels est de ImageResX x ImageResY et qui sert à représenter la vue en cours.
   Les coordonnées des points sont séparées par une virgule, les points par un point-virgule et les polylignes par
   deux points (« : »), comme indiqué dans l’exemple ci-dessous :
   « p1x1,p1y1,p1z1;p1x2,p1y2,p1z2;….;p1xn,p1yn,p1zn;…:p2x1,p2y1,p2z1;p2x2,p2y2,p2z2;….;p2xn,p2yn,p2zn
                                                                          ième               ième
   ;….», où « pmxn », « pmyn » et « pmzn » sont les coordonnées du n           point de la m      polyligne.

   Les paramètres PixelXRot et PixelYRot représentent la position en coordonnées image (pixels) du point de
   pivot de l’éventuelle rotation (par exemple la position du pointeur de la souris) et le paramètre Angle permet de
   spécifier en degrés l’angle de rotation des contours.

   Retour : la fonction retourne la chaîne de caractères listant les polylignes.

FileGetCatalogOutlinePoints( SessionId As Long, ImageResX As Long, ImageResY As Long, CatalogFileName
As String, ArticleRef As String, HandingType As Long, Width As Long, Depth As Long, Height As Long, Angle As
Double, Opened As Long ) As String

   Cette fonction permet d’obtenir les polylignes constituant le contour de l’article de référence ArticleRef et de
   sens HandingType dans le catalogue CatalogFileName (nom de fichier court sans extension). Cette liste de
   polylignes de visualisation correspond à la vue en cours de la scène courante (vue de dessus, élévation ou
   perspective).
   Elle est retournée sous la forme d’une chaîne de caractères listant les différentes polylignes.
   Les coordonnées des points des polylignes sont exprimés en pixels dans le repère correspondant à l’image
   dont la résolution en pixels est de ImageResX x ImageResY et qui sert à représenter la vue en cours.
   Les coordonnées des points sont séparées par une virgule, les points par un point-virgule et les polylignes par
   deux points (« : »), comme indiqué dans l’exemple ci-dessous :
   « p1x1,p1y1,p1z1;p1x2,p1y2,p1z2;….;p1xn,p1yn,p1zn;…:p2x1,p2y1,p2z1;p2x2,p2y2,p2z2;….;p2xn,p2yn,p2zn
                                                                         ième               ième
   ;….», où « pmxn », « pmyn » et « pmzn » sont les coordonnées du n          point de la m      polyligne.

   Les dimensions appliquées à l’article qui peuvent être différentes des dimensions par défaut sont définies dans
   les paramètres Width, Depth et Height.
   Si Opened vaut 0, le contour de l’article est représenté dans l’état fermé ; sinon, il est représenté dans l’état
   ouvert pour peu qu’un état ouvert ait été spécifié dans le catalogue.

   Le paramètre Angle permet de spécifier en degrés un éventuel angle de rotation de l’article effectué durant
   l’opération de « drag & drop ».

   Retour : la fonction retourne la chaîne de caractères listant les polylignes.

EditIsUndoPossible( SessionId As Long ) As Boolean

   Retour : la fonction retourne 1 si la fonction EditUndo permet d’annuler la dernière opération effectuée, 0
   sinon.

EditIsRedoPossible( SessionId As Long ) As Boolean

   Retour : la fonction retourne 1 si la dernière opération effectuée est une annulation et donc si la fonction
   EditUndo permet de rétablir l’avant-dernière opération effectuée, 0 sinon.

EditUndo( SessionId As Long ) As Boolean

   Cette fonction annule la dernière opération effectuée.
   Appeler cette fonction deux fois de suite équivaut à ne rien faire ; il n’y a qu’un seul niveau d’annulation.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditDelete( SessionId As Long ) As Boolean

   Cette fonction supprime les objets sélectionnés de la scène courante.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditPlaceObject( SessionId As Long, CatalogFileName As String, ArticleRef As String, HandingType As Long,
Width As Long, Depth As Long, Height As Long, X As Long, Y As Long, Altitude As Long, AltitudeType as Long,
OXYAngle As Long, Opened As Long, Percussion As Long, Pool As Long) As Long

   Cette fonction ajoute dans la scène courante l’article de référence ArticleRef et de sens HandingType pris dans
   le catalogue CatalogFileName (nom court avec ou sans extension).
   L’article est posé avec les dimensions Width, Depth et Height de telle sorte que son point d’origine dans le plan
   horizontal se trouve sur le point de coordonnées X, Y et que son orientation dans la scène fasse un angle de
   OXYAngle degrés par rapport à l’axe horizontal.

   L’altitude de l’article c’est-à-dire sa position suivant l’axe verticale est défini par le paramètre Altitude qui
   spécifie une valeur et par le paramètre AltitudeType qui indique si Altitude précise la position du bas de l’article
   (ALTITUDETYPE_ON = 0) ou du sommet de l’article (ALTITUDETYPE_UNDER = 1).

   Si l’indicateur Opened est positionné à 1, l’objet sera posé dans l’état « ouvert ».
   Si l’indicateur Percussion est positionné à 1, la fonction effectue un ancrage automatique en fonction des
   percussions éventuelles avec les autres objets de la scène courante.

   Si l’indicateur Pool est positionné à 1, l’objet ne sera pas visible dans les vues de dessus, d’élévation et de
   perspective. Par contre Il figurera dans la pioche c’est-à-dire dans la liste des objets placés en mode chiffrage
   (sans information de position) et susceptibles d’être positionnés manuellement dans un second temps.
   Si vous utilisez cette fonction avec l’indicateur Pool positionné à 1, les informations X, Y et Altitude seront
   ignorées.

   Retour : la fonction retourne l’identifiant de l’objet posé si tout s’est bien passé, -1 sinon.

EditPlaceObjectPixel( SessionId As Long, CatalogFileName As String, ArticleRef As String, HandingType As
Long, Width As Long, Depth As Long, Height As Long, ImageResX As Long, ImageResY As Long, PixelX As Long,
PixelY As Long, Altitude As Long, AltitudeType as Long, OXYAngle As Long, Opened As Long, Percussion As
Long, Pool As Long) As Long

   Cette fonction a la même fonction que la fonction décrite précédemment (EditPlaceObject) à la différence
   près que la position du point d’origine de l’objet (PixelX et PixelY) est exprimée en pixels dans le repère
   correspondant à l’image dont la résolution en pixels est de ImageResX x ImageResY et qui sert à représenter
   la vue en cours.

   Si le mode de visualisation est VIEWMODE_2D, PixelX et PixelY représentent la position du point d’origine de
   l’objet dans le plan horizontal.
   Si le mode de visualisation est VIEWMODE_ELEVATION ou VIEWMODE_REALELEVATION, PixelX et PixelY
   représentent la position du point d’origine de l’objet dans le plan d’élévation courant.

   Pour les autres paramètres, veuillez vous reporter à la fonction précédente EditPlaceObject.

   Retour : la fonction retourne l’identifiant de l’objet posé si tout s’est bien passé, -1 sinon.

EditPlaceLinearObject( SessionId As Long, CatalogFileName As String, ArticleRef As String, FinishesList As
String, Place as Long) As Boolean

   Cette fonction commence par effacer les objets linéaires du même type (plinthe, plan de travail, moulure de
   plan de travail, cache-lumière, corniche) que l’article ArticleRef qui se trouvent déjà dans la scène
   (si ArticleRef est vide et Place vaut 0, tous les objets linéaires de la scène sont effacés quelque soit leur type).

   Ensuite, si le paramètre Place vaut 1, la fonction crée un ou plusieurs gabarits suivant les objets présents dans
   la scène courante et du type (plinthe, plan de travail, moulure de plan de travail, cache-lumière, corniche) de
   l’objet linéaire à poser.
   L’article linéaire de référence ArticleRef pris dans le catalogue CatalogFileName (nom de fichier sans chemin
   d’accès avec ou sans extension) est ensuite posé le long du ou des gabarits générés et dans les finitions
   précisées dans FinishesList.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditReplaceSelection( SessionId As Long, CatalogFileName As String, ArticleRef As String, HandingType As
Long, Width As Long, Depth As Long, Height As Long, Opened As Long) As Boolean

   Cette fonction remplace tous les objets sélectionnés de la scène courante par l’article de référence ArticleRef
   et de sens HandingType pris dans le catalogue CatalogFileName (nom court avec ou sans extension).
   L’article se substituant aux objets sélectionnés est posé avec les dimensions Width, Depth et Height et à
   l’emplacement exact et avec la même orientation que les objets sélectionnés.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditSelectAll( SessionId As Long) As Boolean

   Cette fonction sélectionne tous les objets de la scène courante.
   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditReverseSelection( SessionId As Long) As Boolean

   Cette fonction inverse l’état de sélection de tous les objets de la scène courante. Ainsi, les objets sélectionnés
   deviennent non sélectionnés et réciproquement.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditSelectFromRectangle( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelX1 As Long,
PixelY1 As Long, PixelX2 As Long, PixelY2 As Long, MultipleSelection As Long) As Boolean

   Cette fonction sélectionne tous les objets de la scène courante qui sont complètement inclus dans le rectangle
   défini par les deux points PixelX1, PixelY1 et PixelX2, PixelY2 exprimés en pixels dans le repère
   correspondant à l’image dont la résolution en pixels est de ImageResX x ImageResY et qui sert à représenter
   la vue en cours.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

EditGetSceneX( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelX As Long) As Long

   Retour : la fonction retourne la coordonnée en unités « scène » qui correspond à la coordonnée « pixel »
   horizontale PixelX en considérant que l’image qui représente la vue en cours possède une résolution en pixels
   de ImageResX x ImageResY.

EditGetSceneY( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelY As Long) As Long

   Retour : la fonction retourne la coordonnée en unités « scène » qui correspond à la coordonnée « pixel »
   verticale PixelY en considérant que l’image qui représente la vue en cours possède une résolution en pixels de
   ImageResX x ImageResY.

EditGetPixelX( SessionId As Long, ImageResX As Long, ImageResY As Long, SceneX As Long) As Long

   Retour : la fonction retourne la coordonnée en pixels qui correspond à la coordonnée en unités « scène »
   horizontale SceneX en considérant que l’image qui représente la vue en cours possède une résolution en
   pixels de ImageResX x ImageResY.

EditGetPixelY( SessionId As Long, ImageResX As Long, ImageResY As Long, SceneY As Long) As Long

   Retour : la fonction retourne la coordonnée en pixels qui correspond à la coordonnée en unités « scène »
   verticale SceneY en considérant que l’image qui représente la vue en cours possède une résolution en pixels
   de ImageResX x ImageResY.

EditGetMagneticPoint( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelX As Long , PixelY
As Long, MagneticMargin As Long) As String

   Cette fonction permet d’obtenir le point magnétique le plus proche du point projeté dans la vue en cours et
   défini par les coordonnées PixelX et PixelY dans une image dont la résolution en pixels est de ImageResX x
   ImageResY.
   Si aucun point magnétique n’est trouvé dans un carré de MagneticMargin pixels de côté autour du point
   (PixelX , PixelY) ou si MagneticMargin =0 (magnétisme désactivé), x2 = PixelX, y2 = PixelY, x1 et y1
   représentent respectivement les valeurs de x2 et y2 convertis en unités de la scène et x3, y3 et z3
   représentent les coordonnées dans la scène du point projeté dans la vue en cours défini par les coordonnées
   PixelX et PixelY.

   Retour : la fonction retourne une chaîne de caractères dont le format est le suivant : « x1;y1;x2;y2;x3;y3;z3 »

   où,
   x1 = coordonnée x du point magnétique projeté dans le plan de la vue en cours (vue de dessus, plan
   d’élévation) exprimé en unités de la scène,
   y1 = coordonnée y du point magnétique projeté dans le plan de la vue en cours (vue de dessus, plan
   d’élévation) exprimé en unités de la scène,

   x2 = coordonnée x du point magnétique projeté dans le plan de la vue en cours (vue de dessus, plan
   d’élévation) exprimé en pixels dans le repère correspondant à l’image dont la résolution en pixels est de
   ImageResX x ImageResY,
   y2 = coordonnée y du point magnétique projeté dans le plan de la vue en cours (vue de dessus, plan
   d’élévation) exprimé en pixels dans le repère correspondant à l’image dont la résolution en pixels est de
   ImageResX x ImageResY,

   x3 = coordonnée x du point magnétique exprimé en unités de la scène,
   y3 = coordonnée y du point magnétique exprimé en unités de la scène,
   z3 = coordonnée z du point magnétique exprimé en unités de la scène.

SelectionGetObjectsNb( SessionId As Long) As Long

   Retour : la fonction retourne le nombre d’objets sélectionnés de la scène courante.

SelectionGetObjectId( SessionId As Long, SelectedObjectRank As Long) As Long

   Retour : la fonction retourne l’identifiant de l’objet sélectionné de rang SelectedObjectRank de la scène
   courante. Cette fonction permet de construire la liste des objets sélectionnés de la scène en faisant une boucle
   sur SelectedObjectRank commençant à 1 et se finissant au nombre retourné par la fonction SelectionGetNb
   décrite ci-dessus.

SelectionMove( SessionId As Long, SceneXOrig As Long, SceneYOrig As Long, SceneZOrig As Long,
OXYAngleOrig As Double, OYZAngleOrig As Double, OZXAngleOrig As Double, SceneXExt As Long, SceneYExt
As Long, SceneZExt As Long, OXYAngleExt As Double, OYZAngleExt As Double, OZXAngleExt As Double,
Distance As Long, Duplicate As Long, Percussion As Long) As Boolean

   Cette fonction provoque la translation et/ou la rotation des objets sélectionnés de la scène courante.
   L’axe de translation est définie par le vecteur en coordonnées scène ayant pour origine le point (SceneXOrig,
   SceneYOrig, SceneZOrig) et pour extrémité le point (SceneXExt, SceneYExt, SceneZExt).
   La valeur (longueur) de la translation est définie par le paramètre Distance exprimé en unités de mesure de la
   scène. Si le paramètre Distance est égal à 0, la valeur (longueur) de la translation est définie par la distance
   entre les deux points dont les coordonnées sont passées en paramètres.

   Les rotations sont définies par les différences entre les angles OXYAngleExt et OXYAngleOrig, OYZAngleExt
   et OYZAngleOrig et enfin OZXAngleExt et OZXAngleOrig.

   Si l’indicateur Duplicate est positionné à 1, la fonction n’efface pas les objets sélectionnés situés à leur position
   d’origine. Il y a alors ajout de nouveaux objets dans la scène courante.

   Si l’indicateur Percussion est positionné à 1, la fonction effectue un ancrage automatique en fonction des
   percussions éventuelles avec les autres objets de la scène courante.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionPixelMove( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelXOrig As Long,
PixelYOrig As Long, OXYAngleOrig As Double, PixelXExt As Long, PixelYExt As Long, OXYAngleExt As Double,
Distance As Long, Duplicate As Long, Percussion As Long) As Boolean

   Cette fonction provoque la translation et/ou la rotation des objets sélectionnés de la scène courante.
   L’axe de la translation est définie par le vecteur en coordonnées pixel ayant pour origine le point (PixelXOrig,
   PixelYOrig) et pour extrémité le point (PixelXExt, PixelYExt).
   La valeur (longueur) de la translation est définie par le paramètre Distance exprimé en unités de mesure de la
   scène. Si le paramètre Distance est égal à 0, la valeur (longueur) de la translation est définie par la distance
   entre les deux points dont les coordonnées sont passées en paramètres.
   La rotation dans le plan horizontale est définie par la différence entre les angles OXYAngleExt et
   OXYAngleOrig.

   Si l’indicateur Duplicate est positionné à 1, la fonction n’efface pas les objets situés à leur position d’origine. Il y
   a alors ajout de nouveaux objets dans la scène courante.

   Si l’indicateur Percussion est positionné à 1, la fonction effectue un ancrage automatique en fonction des
   percussions éventuelles avec les autres objets de la scène courante.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionRotate( SessionId As Long, OXYAngle As Double, OYZAngle As Double, OZXAngle As Double) As
Boolean

   Cette fonction provoque la rotation des objets sélectionnés de la scène courante dans un ou plusieurs des 3
   plans de rotation.

   Cette rotation s’effectue pour tous les objets sélectionnés autour du même pivot situé au centre du
   parallélépipède englobant tous les objets sélectionnés.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionDimension( SessionId As Long ) As Boolean

   Cette fonction lance l’opération de génération automatique de cotes sur les objets sélectionnés de la scène. Si
   aucun objet n’est sélectionné, la génération des cotes s’effectue pour tous les objets de la scène.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionOpen( SessionId As Long ) As Boolean

   Cette fonction place les objets sélectionnés de la scène dans leur état « ouvert ».

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionClose( SessionId As Long ) As Boolean

   Cette fonction place les objets sélectionnés de la scène dans leur état « fermé ».

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionHide( SessionId As Long ) As Boolean

   Cette fonction cache les objets sélectionnés de la scène.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionShow( SessionId As Long ) As Boolean

   Cette fonction montre les objets sélectionnés de la scène qui étaient cachés.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

SelectionGetList( SessionId As Long) As String

   Cette fonction permet de récupérer l’état de sélection global de la scène courante. Cela peut servir en
   particulier pour faire une sauvegarde de l’état de sélection de la scène avant un traitement qui pourrait venir
   altérer cet état de sélection.
   Par exemple, un traitement qui voudrait supprimer certains objets de la scène devra préalablement
   sélectionner ces objets perdant ainsi l’état de sélection existant. Si l’état de sélection de la scène a été
   sauvegardé dans une chaîne de caractères, il pourra être restaurer à l’issue du traitement grâce à la
   commande SelectionSetList décrite ci-après.

   Retour : la fonction retourne la liste des identifiants des objets sélectionnés de la scène courante sous la forme
   d’une chaîne de caractères avec la virgule comme séparateur.

SelectionSetList( SessionId As Long, ) As String

   Cette fonction sélectionne les objets de la scène courante dont les identifiants figurent dans le paramètre
   SelectionList. Ce paramètre est une chaîne de caractères listant les identifiants des objets à sélectionner
   séparés par une virgule. Il peut être le résultat de la commande SelectionGetList décrite précédemment.

   Retour : la fonction retourne 1 si tout s’est bien passée, 0 sinon.

ObjectGetKeywordInfo( SessionId As Long, ObjectId As Long, KeyWord As String) As String

   Cette fonction permet d’obtenir l’information spécifiée par le paramètre KeyWord concernant l’objet dont
   l’identifiant est ObjectId.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.
   Les valeurs que peut prendre le paramètre KeyWord sont décrites dans le document « Réalisation de modèles
   de documents WORD ». Tous les mots clé de type « Objet »peuvent être employés.

   Retour : la fonction retourne l’information demandée sous la forme d’une chaîne de caractères ou une chaîne
   vide si ObjectId vaut -1 ou ne correspond à aucun objet de la scène ou encore si KeyWord n’est pas reconnu.

ObjectSetKeywordInfo( SessionId As Long, ObjectId As Long, Value As String, KeyWord As String) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères Value dans le champ de l’objet dont l’identifiant est
   ObjectId spécifié par le paramètre KeyWord.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.
   Les valeurs que peut prendre le paramètre KeyWord sont décrites dans le document « Réalisation de modèles
   de documents WORD ». Tous les mots clé de type « Objet » peuvent être employés.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon (par exemple si ObjectId vaut -1 ou ne
   correspond à aucun objet de la scène ou encore si KeyWord n’est pas reconnu).

ObjectGetInfo( SessionId As Long, ObjectId As Long, InfoType As Long) As String

   Cette fonction permet d’obtenir l’information spécifiée par le paramètre InfoType concernant l’objet dont
   l’identifiant est ObjectId.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.
   Les valeurs que peut prendre le paramètre InfoType sont décrites dans le tableau ci-dessous :

     Valeurs de InfoType                           Description
     OBJINFO_CATALOGFILENAME = 0                   Nom de fichier du catalogue d’origine de l’objet (8
                                                   caractères maxi)
     OBJINFO_CATALOGNAME = 1                       Nom du catalogue d’origine de l’objet (30 caractères maxi)
     OBJINFO_CATALOGCODE = 2                       Code du catalogue d’origine de l’objet (8 caractères maxi)
     OBJINFO_SECTIONNAME = 3                       Nom du chapitre dans lequel se trouve l’objet (30 caractères
                                                   maxi)
     OBJINFO_BLOCKCODE = 4                         Code du bloc d’origine de l’objet (10 caractères maxi)
     OBJINFO_NAME = 5                              Nom de l’objet (30 caractères maxi)
     OBJINFO_KEYREF = 7                            Référence clé de l’objet (30 caractères maxi) qui correspond
                                                   à la référence clé de l’article correspondant dans le catalogue
                                                   d’origine.
     OBJINFO_REF = 8                               Référence de l’objet (30 caractères maxi)
     OBJINFO_USERREF = 9                           Référence « utilisateur » de l’objet. Cette référence est
                           éventuellement affectée à l’objet dans KitchenDraw par
                           l’utilisateur lui-même par l’intermédiaire de la boîte de
                           dialogue « Objet | Attributs ».
OBJINFO_CODE = 6           Code de l’objet à ne pas confondre avec la référence. Ce
                           code est une « référence secondaire » renseignée en cas de
                           double référencement.
OBJINFO_HANDING = 10       Sens (ou position des charnières) de l’objet sous la forme
                           « G » ou « D » et fonction de la langue courante.
OBJINFO_HANDINGTYPE = 11   Sens (ou position des charnières) de l’objet sous la forme
                           d’un entier long :
                           HANDINGTYPE_NONE = 0
                           HANDINGTYPE_LEFT = 1
                           HANDINGTYPE_RIGHT = 2
OBJINFO_DIMX = 12          Largeur de l’objet exprimée dans l’unité de mesure de la
                           scène.
OBJINFO_DIMY = 13          Profondeur de l’objet exprimée dans l’unité de mesure de la
                           scène.
OBJINFO_DIMZ = 14          Hauteur de l’objet exprimée dans l’unité de mesure de la
                           scène.
OBJINFO_ISDIMXVAR = 15     Indicateur de « variabilité » de la largeur de l’objet. Cet
                           indicateur peut-être utilisé pour déterminer s’il faut « griser »
                           ou pas la zone d’édition de la largeur correspondant à l’objet
                           actif de la scène en cours.
OBJINFO_ISDIMYVAR = 16     Indicateur de « variabilité » de la profondeur de l’objet.
OBJINFO_ISDIMZVAR = 17     Indicateur de « variabilité » de la hauteur de l’objet.
OBJINFO_ORDERDIMX = 18     Largeur de l’objet pour le fichier de commande.
                           Cette valeur vaut toujours 0 si l’on a le paramètre LC0 dans le
                           script du bloc ; elle est égale à la « dimension catalogue »
                           correspondante de l’objet si l’on a le paramètre LCL, LCP ou
                           LCH dans le script du bloc ; elle est égale à la « dimension
                           scène » correspondante de l’objet si l’on a le paramètre LCLV,
                           LCPV ou LCHV dans le script du bloc.
OBJINFO_ORDERDIMY = 19     Profondeur de l’objet pour le fichier de commande.
                           Cette valeur vaut toujours 0 si l’on a le paramètre PC0 dans le
                           script du bloc ; elle est égale à la « dimension catalogue »
                           correspondante de l’objet si l’on a le paramètre PCL, PCP ou
                           PCH dans le script du bloc ; elle est égale à la « dimension
                           scène » correspondante de l’objet si l’on a le paramètre
                           PCLV, PCPV ou PCHV dans le script du bloc.
OBJINFO_ORDERDIMZ = 20     Hauteur de l’objet pour le fichier de commande.
                           Cette valeur vaut toujours 0 si l’on a le paramètre HC0 dans le
                           script du bloc ; elle est égale à la « dimension catalogue »
                           correspondante de l’objet si l’on a le paramètre HCL, HCP ou
                           HCH dans le script du bloc ; elle est égale à la « dimension
                           scène » correspondante de l’objet si l’on a le paramètre
                           HCLV, HCPV ou HCHV dans le script du bloc.
OBJINFO_POSX = 21          Position sur l’axe des X (largeur de l’écran) de l’objet
                           exprimée dans l’unité de mesure de la scène. La valeur 0 se
                           situe au milieu du rectangle pointillé vert représentant les
                           dimensions de la scène.
OBJINFO_POSY = 22          Position sur l’axe des Y (hauteur de l’écran) de l’objet
                           exprimée dans l’unité de mesure de la scène. La valeur 0 se
                           situe au milieu du rectangle pointillé vert représentant les
                           dimensions de la scène.
OBJINFO_POSZ = 23          Position sur l’axe des Z (altitude) de l’objet exprimée dans
                           l’unité de mesure de la scène. La valeur 0 se situe au niveau
                           de la face inférieure du parallélépipède pointillé vert
                           représentant les dimensions de la scène.
OBJINFO_ON_OR_UNDER = 55   Altitude de référence de l’objet :
                           ALTITUDETYPE_ON = 0
                                 ALTITUDETYPE_UNDER = 1
OBJINFO_ON_OR_UNDER_TEXT = 178   Altitude de référence de l’objet sous forme du texte qui
                                 apparaît dans la boîte à options de la fenêtre de pose. Ce
                                 texte dépend de la langue en vigueur.
OBJINFO_ANGLEXY = 24             Angle dans le plan horizontal (0, X, Y) de l’objet en degrés.
OBJINFO_ANGLEYZ = 25             Angle dans le plan (0, Y, Z) de l’objet en degrés.
OBJINFO_ANGLEZX = 26             Angle dans le plan (0, Z, X) de l’objet en degrés.
OBJINFO_DISTLEFTWALL = 27        Distance entre le côté gauche de l’objet et le coin gauche
                                 du mur dans ou contre lequel il est posé.
OBJINFO_DISTRIGHTWALL = 28       Distance entre le côté droit de l’objet et le coin droit du
                                 mur dans ou contre lequel il est posé.
OBJINFO_UNITTEXT = 29            Texte représentant l’unité de mesure de l’objet (qui peut
                                 être différent de l’unité de mesure de la scène).
OBJINFO_UNITVALUE = 30           Valeur de l’unité de mesure de l’objet exprimée en
                                 millimètres. Si l’unité choisi pour le catalogue est « mm (1.0
                                 mm) », alors la valeur retournée sera « 1 » bien que
                                 l’incrément de mesure au niveau du catalogue soit le dixième
                                 de millimètre.
OBJINFO_ID = 31                  Identificateur numérique unique et immuable de l’objet.
OBJINFO_TYPE = 32                Type de l’objet dont voici la liste des valeurs possibles :

                                  Valeur de OBJINFO_TYPE                Description
                                  OBJTYPE_STANDARD = 0                  Objet catalogué standard
                                  OBJTYPE_DOOR = 1                      Porte
                                  OBJTYPE_WINDOW = 2                    Fenêtre
                                  OBJTYPE_RECESS = 3                    Niche
                                  OBJTYPE_PLAN = 4                      Objet plan posé à
                                                                        l’intérieur d’un gabarit
                                                                        dessiné librement par
                                                                        l’utilisateur.
                                  OBJTYPE_PLANARTICLE = 5               Objet plan posé à
                                                                        l’intérieur d’un gabarit
                                                                        prédéterminé dans le
                                                                        catalogue mais
                                                                        « découpable » par
                                                                        l’utilisateur.
                                  OBJTYPE_LINEAR = 6                    Objet linéaire le long d’un
                                                                        gabarit (plinthe, corniche,
                                                                        etc.)
                                  OBJTYPE_WALL = 7                      Mur
                                  OBJTYPE_TEXT = 8                      Texte
                                  OBJTYPE_LINEARDIMENSION =             Cote linéaire simple ou
                                  9                                     multiple, manuelle ou
                                                                        automatique
                                  OBJTYPE_ARROW = 10                    Flèche
                                  OBJTYPE_PLANNINGAREA = 11             Zone aménageable
                                  OBJTYPE_ELEVATIONSYMBOL               Symbole d’élévation
                                  = 12
                                  OBJTYPE_ANGULARDIMENSION              Cote angulaire
                                  = 13
                                  OBJTYPE_DXF3D = 14                    Fichier DXF3D importé
                                  OBJTYPE_WMF = 15                      Fichier WMF importé
                                  OBJTYPE_GROUP = 16                    Objet entête d’un
                                                                        ensemble d’objets
                                                                        groupés.
                                  OBJTYPE_OPEN = 17                     Objet non catalogué
                                                                        posé à l’aide de la
                                                                        commande « Poser |
                                                                        Article libre »
                              OBJTYPE_METAFILE = 18                   Objet issu d’une
                                                                      opération « Edition |
                                                                      Coller »
                              OBJTYPE_DXF2D = 19                      Fichier DXF2D importé
                              OBJTYPE_BMP = 20                        Fichier BMP importé
                              OBJTYPE_ENVELOPE = 21                   Objet entête d’un
                                                                      ensemble type
                              OBJTYPE_TECHNICALSYMBOL                 Symbole technique posé
                              = 22                                    en élévation
                              OBJTYPE_LIGHTSOURCE = 23                Source de lumière
                              OBJTYPE_TILE = 24                       Carreau de sol ou de mur
                              OBJTYPE_RADIUSDIMENSION =               Cote de rayon
                              25
OBJINFO_COMPONENTTYPE = 33   Type du composant dont voici la liste des valeurs possibles :

                              Valeur de                              Description
                              OBJINFO_COMPONENTTYPE
                              COMPTYPE_OPTION = 0                    Composant « normal »
                                                                     c’est-à-dire, option ou
                                                                     accessoire de l’objet
                                                                     parent ou membre d’un
                                                                     ensemble type associé à
                                                                     l’objet parent pour des
                                                                     raisons de commodité de
                                                                     pose.
                               COMPTYPE_INTERMEDIATE = 1 Composant intermédiaire
                                                                     pour liste de débit (voir la
                                                                     documentation de
                                                                     MobiScript 2 pour plus
                                                                     d’information)
                               COMPTYPE_CARCASEPANEL = Panneau de caisson pour
                               2                                     liste de débit
                               COMPTYPE_FRONTPANEL = 3               Panneau de façade pour
                                                                     liste de débit
                               COMPTYPE_PROFILE = 4                  Morceau d’article linéaire
                                                                     pour nomenclature
                                                                     détaillée
                               COMPTYPE_PART = 5                     Quincaillerie pour
                                                                     nomenclature détaillée
                                                                     (pieds, charnières, etc.)
                               COMPTYPE_LIQUIDPRODUCT = Produit liquide pour
                               6                                     nomenclature détaillée
                                                                     (colle, vernis, etc.)
                               COMPTYPE_LABOR = 7                    Main d’oeuvre pour
                                                                     nomenclature détaillée
                               COMPTYPE_SUBSET = 8                   Sous-ensemble pour liste
                                                                     de débit (voir la
                                                                     documentation de
                                                                     MobiScript 2 pour plus
                                                                     d’information)
                               COMPTYPE_NOTACOMPONENT L’objet n’est pas un
                               = -1                                  composant (objet de plus
                                                                     haut niveau)
OBJINFO_NUMBER = 34          Numéro de l’objet tel qu’il peut apparaître dans le tableau de
                             chiffrage ou sur les vues de dessus ou les élévations quand le
                             type de marquage « Numéro » est sélectionné dans la boîte
                             de dialogue « Scène | Marquage ».
OBJINFO_QUANTITY = 35        Quantité de l’objet. Cette information est différente de 1 pour
                             les objets linéaires, plans ou ceux pour lesquels une boîte de
                                dialogue demandant la quantité apparaît lorsqu’on les pose
                                dans la scène.
                                ATTENTION : à part les objets mentionnés ci-dessus,
                                plusieurs objets identiques présents dans la scène (même
                                s’ils ne possèdent pas de graphique) ne sont pas regroupés
                                en un seul objet avec une quantité supérieure à 1.
OBJINFO_LENGTH = 36             Somme des longueurs des portions d’un objet linéaire posé
                                sur gabarit. Cette information est utilisée pour chiffrer un objet
                                linéaire ayant un type de prix « à la longueur ».
OBJINFO_AREA = 37               Surface nette d’un objet plan.
OBJINFO_LEFTCUTANGLE = 38       Angle de découpe à gauche pour un objet plan.
OBJINFO_RIGHTCUTANGLE = 39      Angle de découpe à droite pour un objet plan.
OBJINFO_LEFTCUTLENGTH = 40      Longueur de la découpe frontale à gauche pour un objet
                                plan.
OBJINFO_RIGHTCUTLENGTH = 41     Longueur de la découpe frontale à droite pour un objet
                                plan.
OBJINFO_LAYER = 42              Calque sur lequel se trouve l’objet.
OBJINFO_PRICE = 43              Prix de l’objet obtenu en prenant le prix catalogue traité par le
                                type de prix et modifié éventuellement par des options mais
                                sans application de la « valeur de point » ni du coefficient de
                                vente. Retourne une chaîne de caractères vide si l’objet n’est
                                pas « facturable », ou s’il n’est pas valide.
                                Par contre, le prix est retourné même si l’objet n’est pas
                                « posé » dans la scène (dans le cas d’un composant non
                                « coché »).
OBJINFO_GROUPNAME = 44          Nom du groupe auquel appartient éventuellement l’objet
OBJINFO_GROUPNUMBER = 45        Numéro du groupe auquel appartient éventuellement l’objet
OBJINFO_PRIORITY = 46
OBJINFO_PAGE = 47               Numéro de page du catalogue papier où se trouve décrit
                                l’objet
OBJINFO_VATTYPE = 48            Type de taux de taxe applicable à l’objet (provenant du
                                catalogue d’origine).
OBJINFO_DESCRIPTION = 49        Description longue de l’objet telle qu’elle apparaît sur les
                                devis.
OBJINFO_COMMENT_CUSTOMER = 50   Commentaire à destination du client final (apparaît dans le
                                devis).
OBJINFO_COMMENT_SUPPLIER = 51   Commentaire à destination du fournisseur (apparaît dans
                                le bon de commande fournisseur).
OBJINFO_COMMENT_FITTER = 52     Commentaire à destination du poseur (apparaît dans le bon
                                de pose ou tout document à destination du poseur).
OBJINFO_XML = 53                Zone de données aux format XML utilisées uniquement par
                                les « Plug-Ins » KitchenDraw et qui leur permet de stocker des
                                informations spécifiques dans les objets
OBJINFO_VALUE = 54
OBJINFO_PRICETYPE = 56          Type de prix
OBJINFO_PRICEPERQUANTITY = 57
OBJINFO_ISVALID = 58            Indicateur de validité des dimensions d’un objet ainsi que de
                                son existence dans le modèle et les finitions qui lui sont
                                affectés. Retourne la chaîne de caractères « 1 » si l’objet est
                                valide et « 0 » sinon.
OBJINFO_ISPLACED = 59           Indicateur de pose (pour un composant) indique si le
                                composant est « coché » dans la boîte de dialogue Objet |
                                Composants.
                                Retourne la chaîne de caractères « 1 » si l’objet est « posé »
                                dans la scène et « 0 » sinon.
OBJINFO_ISSELECTED = 60         Indicateur de sélection (points de contour visibles ou pas)
                                Retourne la chaîne de caractères « 1 » si l’objet est
                                sélectionné et « 0 » sinon.
OBJINFO_ISACTIVE = 61           Indicateur d’activité (points de contour clignotant ou pas)
                                                   Retourne la chaîne de caractères « 1 » si l’objet est l’objet
                                                   actif et « 0 » sinon.
     OBJINFO_ISOPEN = 62                           Indicateur d’ouverture Retourne la chaîne de caractères
                                                   « 1 » si l’objet est dans l’état « ouvert » et « 0 » sinon.
     OBJINFO_SUPPLIERID = 63                       Identifiant du fournisseur du catalogue d’origine de l’objet.
     OBJINFO_MODELNAME = 64                        Nom du modèle appliqué à l’objet si celui-ci dépend de
                                                   modèle.
     OBJINFO_MODELCODE = 65                        Code du modèle appliqué à l’objet si celui-ci dépend de
                                                   modèle.
     OBJINFO_MODELPRICECOLUMN = 66                 Groupe de prix du modèle appliqué à l’objet si celui-ci
                                                   dépend de modèle.
     OBJINFO_MODELFINISHTYPE…
     OBJINFO_MODELFINISHTYPE+15
     OBJINFO_MODELFINISHNAME…
     OBJINFO_MODELFINISHNAME+15
     OBJINFO_MODELFINISHCODE…
     OBJINFO_MODELFINISHCODE+15
     OBJINFO_FAMILYFINISHTYPE…
     OBJINFO_FAMILYFINISHTYPE+15
     OBJINFO_FAMILYFINISHNAME…
     OBJINFO_FAMILYFINISHNAME+15
     OBJINFO_FAMILYFINISHCODE…
     OBJINFO_FAMILYFINISHCODE+15
     OBJINFO_TEXTURE…                              Textures de l’objet définissables par l’utilisateur
     OBJINFO_TEXTURE+8
     OBJINFO_COMPONENTLEVEL = 171                  Position de l’objet dans la hiérarchie des composants.
                                                   Une valeur de 1 indique que l’objet n’est pas un composant
                                                   mais un objet de plus haut niveau.
     OBJINFO_BASEPRICE = 172                       Prix d’achat de base de l’objet provenant du catalogue.
                                                   Ce prix n’est disponible que lorsque le catalogue contient à la
                                                   fois des prix d’achat et des prix de vente. Sinon, cette
                                                   information vaut toujours 0.
     OBJINFO_GROSSSELLINGPRICE = 173               Prix de vente brut HT de l’objet.
     OBJINFO_FAMILYNAME = 174                      Nom de la famille de l’objet.
     OBJINFO_FAMILYCODE = 175                      Code de la famille de l’objet.
     OBJINFO_SECTIONCODE = 176                     Code du chapitre de l’objet provenant du catalogue.
     OBJINFO_TOPIC = 177                           « Métier » de l’objet provenant du catalogue (cuisine, salle de
                                                   bains, …).
     OBJINFO_OCCURRENCESNB = 179                   Nombre d’occurrences de l’objet dans la scène (nombre de
                                                   fois qu’il apparaît dans la scène de manière strictement
                                                   identique en terme de dimensions, de finitions et
                                                   éventuellement de composants).

   Retour : la fonction retourne l’information demandée sous la forme d’une chaîne de caractères ou une chaîne
   vide si ObjectId vaut -1 ou ne correspond à aucun objet de la scène ou encore si InfoType n’est pas reconnu.

ObjectSetInfo( SessionId As Long, ObjectId As Long, Value As String, InfoType As Long) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères Value dans le champ de l’objet dont l’identifiant est
   Object spécifié par le paramètre InfoType.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.
   Consultez la fonction ObjectGetInfo pour connaître les valeurs que peut prendre le paramètre InfoType.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon (par exemple si ObjectId vaut -1 ou ne
   correspond à aucun objet de la scène ou encore si InfoType n’est pas reconnu).

ObjectGetScript( SessionId As Long, ObjectId As Long) As String

   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.
   Retour : la fonction retourne le script de l’objet identifié par ObjectId.

ObjectSetScript( SessionId As Long, ObjectId As Long, Script As String) As Boolean

   Cette fonction permet de remplacer puis de recompiler le script de l’objet dont l’identifiant est ObjectId dans la
   scène courante. Cela se traduit généralement par un changement de la vue de dessus de l’objet, de son
   modèle 3D, de sa description, etc.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.

   Cette fonction est utilisée lors dans le développement d’un assistant, et dans la partie validation de celui-ci.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ObjectGetCustomInfo( SessionId As Long, ObjectId As Long, InfoKey As String ) As String

   Cette fonction permet de lire la chaîne de caractères identifiée par le paramètre InfoKey et contenu dans la
   zone de l’objet ObjectId qui est dédiée aux extensions d’application que sont les assistants et les « plug-ins ».
   Cette chaîne de caractères doit y avoir été placée auparavant grâce à la fonction ObjectSetCustomInfo
   décrite plus loin et la même valeur du paramètre InfoKey.
   Ces chaînes de caractères permettent à un assistant ou un « plug-in » de stocker dans les objets de la scènes
   des variables de configuration qui lui sont spécifiques, le paramètre InfoKey lui permettant d’isoler ses
   variables propres de celles des autres assistants ou « plug-ins ».
   Ces chaînes de caractères spécifiques apparaissent dans le fichier XML qui est généré par la commande
   « Fichier | Exporter | Données de gestion (.XML) » chacune sous un tag égal à la valeur du paramètre InfoKey
   correspondant.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.

   Retour : la fonction retourne l’information demandée sous la forme d’une chaîne de caractères.

ObjectSetCustomInfo( SessionId As Long, ObjectId As Long, Value As String, InfoKey As String) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères Value dans la zone de l’objet ObjectId qui est dédiée
   aux extensions d’application. Cette chaîne de caractères sera identifiée par le paramètre InfoKey.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

ObjectGetParentId( SessionId As Long, ObjectId As Long) As Long

   Retour : la fonction retourne l’identifiant de l’objet parent de l’objet identifié par ObjectId si celui-ci possède un
   parent, -1 sinon.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.

ObjectGetChildrenNb( SessionId As Long, ObjectId As Long, AllComponents As Long) As Long

   Retour : la fonction retourne le nombre de composants que possède l’objet dont l’identifiant est ObjectId dans
   la scène courante. Les composants comptabilisés sont les composants « posés » ou non, valides ou non et
   quelque soit leur type.
   Si AllComponents vaut 1, ce nombre représente tous les composants de l’objet quelque soit leur niveau dans
   la hiérarchie alors que si AllComponents vaut 0, ce nombre représente seulement les composants du niveau
   inférieur.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.

ObjectGetChildId( SessionId As Long, ObjectId As Long, ChildRank As Long, AllComponents As Long) As Long

   Retour : la fonction retourne l’identifiant du composant de rang ChildRank (numéroté à partir de 1) que
   possède l’objet dont l’identifiant est ObjectId dans la scène courante.
   Attention : le paramètre ChildRank va pointer vers un composant différent en fonction de la valeur du
   paramètre AllComponents. Prière de vous reporter à la description de la fonction ObjectGetChildrenNb pour
   connaître la signification exacte de ce paramètre.
   Le nombre de composants de l’objet ObjectId est retourné par la fonction ObjectGetChildrenNb décrite
   précédemment.
   Le paramètre AllComponents utilisé dans cette fonction doit avoir la même valeur que celui utilisé dans la
   fonction ObjectGetChildrenNb.
   Si ObjectId vaut -2, la fonction s’applique à l’objet actif de la scène courante.

ObjectSelect( SessionId As Long, ObjectId As Long, MultipleSelection As Long) As Long

   Cette fonction permet de sélectionner l’objet dont l’identifiant est ObjectId dans la scène courante.
   Si l’indicateur MultipleSelection est positionné à 1, les objets éventuellement déjà sélectionnés le resteront.

   Retour : la fonction retourne le nombre d’objet sélectionné après l’exécution de la fonction.

ObjectGetFinishesConfig( SessionId As Long, ObjectId As Long) As String

   Retour : la fonction retourne une chaîne de caractères permettant de connaître le modèle et les finitions en
   vigueur pour l’objet dont l’identifiant est ObjectId.
   La chaîne de caractères retournée se présente sous la forme suivante :
   «-1,10008,10009,10010,20005,20006;;5,0,0,4,9,7».

   A gauche des « ;; », se trouvent, séparés par des virgules, les types de finition de l’objet. Le code -1
   représente le modèle, les codes en 1XXXX représentent les finitions de modèle et les codes en 2XXXX les
   finitions de famille. Il est possible d’obtenir les noms des types de finition correspondant à ces rangs grâce à la
   fonction CatalogGetFinishTypeName de la classe Appli.
   A droite des « ;; », se trouvent, séparés par des virgules, les rangs (numérotés à partir de 0) des finitions
   appliquées à l’objet et correspondant respectivement au types de finition listés précédemment. Chacun de ces
   rangs représente la position de la finition en vigueur dans la liste des finitions possibles pour le type de finition
   correspondant.

ObjectSetFinishesConfig( SessionId As Long, ObjectId As Long, FinishesList As String ) As Boolean

   Cette fonction permet de modifier le modèle et les finitions de l’objet dont l’identifiant est ObjectId.
   Cela se fait grâce au paramètre FinishesList représentant la chaîne de caractères listant dans l’ordre le rang
   du modèle éventuel suivi les rangs des finitions à appliquer.
   Les rangs de finition sont numérotés à partir de 0 et sont séparés par des virgules.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ObjectModifyFinishesConfig( SessionId As Long, ObjectId As Long, ModifiedLine As Long, NewFinish As Long,
Modify as Long ) As String

   Retour : cette fonction retourne une chaîne de caractères représentant la configuration de finitions à présenter
   suite à la modification de la configuration de l’objet dont l’identifiant est ObjectId par un changement de finition
   numéroté à partir de 0 (NewFinish) effectué au niveau du type de finition de rang ModifiedLine numéroté à
   partir de 1.
   La chaîne de caractères retournée se présente sous la forme suivante :
   «-1,10008,10009,10010,20005,20006;;5,0,0,4,9,7».

   A gauche des « ;; », se trouvent, séparés par des virgules, les types de finition de l’objet. Le code -1
   représente le modèle, les codes en 10000 représentent les finitions de modèle et les codes en 20000 les
   finitions de famille. Il est possible d’obtenir les noms des types de finition correspondant à ces rangs grâce à la
   fonction CatalogGetFinishTypeName de la classe Appli.
   A droite des « ;; », se trouvent, séparés par des virgules, les rangs (numérotés à partir de 0) des finitions
   appliquées à l’objet et correspondant respectivement au types de finition listés précédemment. Chacun de ces
   rangs représente la position de la finition en vigueur dans la liste des finitions possibles pour le type de finition
   correspondant.
   Si l’indicateur Modify est positionné à 1, la configuration des finitions de l’objet sera effectivement modifiée.

ObjectGetFinishCodeAndName( SessionId As Long, ObjectId As Long, FinishTypeRank As Long, FinishRank As
Long ) As String

   Retour : cette fonction retourne une chaîne de caractères contenant, séparés par « ;; », le code et le nom de la
   finition de rang FinishRank (numéroté à partir de 0) dans le type de finition de rang FinishTypeRank.

ObjectExportImage( SessionId As Long, ObjectId As Long, Opened As Long, ViewMode As Long,
ImageFileName As String, XRes As Long, YRes As Long, BackGroungColor As String, Transparent As Boolean,
JPEGQuality As Long, AntiAliasing As Long) As Boolean

   Cette fonction permet d’exporter la vue de l’objet de la scène en cours spécifié par ObjectId (vue de dessus ou
   perspective) sous la forme d’un fichier .JPG, .BMP, .GIF, .PNG ou .TIF dont le nom (avec le chemin complet)
   est spécifié dans le paramètre ImageFileName.

   Les paramètres XRes et YRes permettent de spécifier la résolution en pixels de l’image exportée.

   Si le paramètre Opened est égal à 0, l’objet est représenté fermé ; sinon, il est représenté ouvert.
   Le paramètre ViewMode indique quelle vue de l’article on souhaite obtenir.

    Valeur de ViewMode                           Description
    VIEWMODE_2D = 0                              Vue de dessus
    VIEWMODE_ELEVATION = 1                       Vue de face (élévation) filaire
    VIEWMODE_REALELEVATION = 2                   Vue de face (élévation) réaliste
    VIEWMODE_3D = 3                              Perspective filaire
    VIEWMODE_REAL3D = 4                          Perspective réaliste
    VIEWMODE_PHOTO3D = 5                         Perspective photoréaliste

   Le paramètre BackGroungColor permet de définir la couleur de fond de l’image. Il s’exprime sous la forme
   d’une chaîne de caractères représentant les valeurs décimales (de 0 à 255) de la composante rouge, puis
   verte puis bleu de la couleur de fond, séparées par une virgule comme dans l’exemple suivant : « 255,128,0 ».
   Si le paramètre BackGroungColor est une chaîne vide, la couleur de fond sera blanche.
   Si le paramètre Transparent est positionné à vrai, la couleur de fond sera définie comme transparente
   (uniquement pour les formats .GIF, .PNG et .TIF).
   Pour le format .JPG uniquement, il est possible de contrôler le niveau de qualité de l’image par le paramètre
   JPEGQuality (valeur comprise entre 0 et 100).

   Le paramètre AntiAliasing indique le niveau d’anti-crénelage mis en œuvre pour réduire l’effet d’escalier sur les
   obliques. Il est déconseillé d’utiliser une valeur d’anti-crénelage supérieure à 3.

    Valeur de AntiAliasing         Description
    1                              Pas d’anti-crénelage
    2                              L’image est générée avec une résolution de 2 x XRes sur 2 x
                                   YRes puis une moyenne sur 4 pixels est effectuée
    3                              L’image est générée avec une résolution de 3 x XRes sur 3 x
                                   YRes puis une moyenne sur 9 pixels est effectuée

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

ObjectGetShape( SessionId As Long, ObjectId As Long ) As String

   Retour : la fonction retourne la chaîne de caractères qui liste les points du gabarit correspondant à l’objet dont
   l’identifiant est ObjectId.
   Les coordonnées exprimées en valeurs décimales sont séparées par une virgule, et les points par un point-
   virgule comme indiqué ci-dessous :
                                                                                                                 ième
    « x1,y1,z1,t1;x2,y2,z2,t2;….;xn,yn,zn,pn;…», où « xn », « yn » et « zn » sont les coordonnées scène du n
   point du gabarit et « pn » sa valeur de propriétés.
   Les propriétés des points de gabarit sont indiquées dans le tableau suivant :

    Propriétés de point de gabarit              Description
    SHAPEPOINTPROP_SELECTED = 1                 Indicateur de sélection du point
    SHAPEPOINTPROP_ARC = 2                      Indicateur d’arc de cercle : indique que le point défini
                                                un arc de cercle avec le point de gabarit précédent et
                                                le point suivant.

   La valeur indiquée après les coordonnées d’un point est la somme des valeurs de propriété de ce point. Ainsi,
   un point qui est à la fois sélectionné et un point d’arc de cercle aura une valeur de propriété égale à 3 (1 + 2).

ObjectSetShape( SessionId As Long, ObjectId As Long, ShapePointsList As String ) As Boolean

   Cette fonction permet de modifier les points constituant le gabarit de l’objet dont l’identifiant est ObjectId.
   Cela se fait grâce au paramètre ShapePointsList représentant la chaîne de caractères listant dans l’ordre les
   points du gabarit.
   Le format de la chaîne de caractères est spécifié dans la description de la fonction ObjectGetShape.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ObjectWizard( SessionId As Long, ObjectId As Long ) As Boolean

   Cette fonction permet de lancer l’exécution de l’assistant éventuellement associé à l’objet dont l’identifiant est
   ObjectId.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ObjectValueToIncrements( SessionId As Long, ObjectId As Long, Value As String ) As Long

   Cette fonction permet de convertir les valeurs de dimension ou d’altitude d’objet retournées en unités
   catalogue (par exemple par la fonction ObjectGetInfo) en nombre d’incréments de mesure (plus petite
   variation de mesure) du catalogue d’origine de l’objet.
   L’incrément de mesure peut être identique à l’unité de mesure du catalogue comme dans le cas des unités de
   mesure impériales ou dans le cas de l’unité de mesure « 1mm ». Il peut aussi être différent de l’unité de
   mesure comme dans le cas de l’unité de mesure « 1mm (1.0 mm) » où l’unité de mesure du catalogue est le
   millimètre tandis que l’incrément de mesure est le dixième de millimètre.

   Cette fonction trouve son intérêt lors du développement d’assistants ou de fonctions Plug-ins qui doivent
   fonctionner aussi bien en unités métriques qu’impériales.
   Dans ce cas, les dimensions d’objets doivent être converties en incréments, puis traitées, et enfin converties
   en valeur d’affichage (par la fonction ObjectIncrementsToValue décrite ci-après) avant d’être affichées ou
   modifiées par la fonction ObjectSetInfo.
   L’assistant de sous-pente « sdk_slop.dll » est un exemple de l’utilisation de ces fonctions.

   Remarque : les objets provenant des catalogues standard comme les catalogues de contraintes ou les
   catalogues de décoration retournent des valeurs de dimensions en unités scène. Dans ce cas, la fonction
   considère que l’unité de mesure du catalogue est l’unité de mesure de la scène courante.

   Retour : la fonction retourne le nombre d’incréments de mesure correspondant à la valeur Value.

ObjectIncrementsToValue ( SessionId As Long, ObjectId As Long, IncrementsNumber As String ) As String

   Cette fonction permet de formater un nombre d’incréments de mesure passé en paramètre dans
   IncrementsNumber en une chaîne de caractères exprimée en unités catalogue (unités de mesure du catalogue
   d’origine de l’objet ObjectId).
   Par exemple, un nombre d’incréments de 67 pour un objet venant d’un catalogue en 1/32ème de pouce
   donnera la chaîne de caractères « 2 3/32 ».
   Voir la fonction ObjectValueToIncrements décrite ci-dessus pour plus de détails.
   Retour : la fonction retourne la chaîne de caractères représentant la valeur d’affichage en unités catalogue
   correspondant au nombre d’incréments IncrementsNumber.

ZoomEnlarge( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelX1 As Long, PixelY1 As Long,
PixelX2 As Long, PixelY2 As Long ) As Boolean

   Cette fonction permet d’effectuer un zoom sur la vue en cours à partir d’un rectangle.
   Les paramètres PixelX1 et PixelY1 déterminent la position d’un des coins du rectangle tandis que PixelX2 et
   PixelY2 déterminent la position du coin opposé.
   Ils sont exprimés en pixels dans le repère correspondant à l’image dont la résolution en pixels est de
   ImageResX x ImageResY et qui sert à représenter la vue en cours.

   Retour : la fonction retourne toujours 1.

ZoomReduce( SessionId As Long ) As Boolean

   Cette fonction permet d’effectuer un zoom arrière sur la vue en cours en divisant par deux la longueur des
   segments en pixels.

   Retour : la fonction retourne toujours 1.

ZoomInitial( SessionId As Long ) As Boolean

   Cette fonction permet de régler le zoom de la vue en cours à sa valeur par défaut.
   En vue de dessus, le rectangle en pointillés vert bornant la scène est affichée avec une petite marge autour.
   En élévation, la vue de face de l’objet actif est affichée avec une petite marge autour.
   En perspective, la totalité du champ de vision est affichée.

   Retour : la fonction retourne toujours 1.

ZoomAdjusted( SessionId As Long ) As Boolean

   Cette fonction permet d’obtenir le zoom de la vue en cours le plus important possible tout en affichant
   intégralement tous les objets de la scène.

   Retour : la fonction retourne toujours 1.

ZoomFromPoint( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelX1 As Long, PixelY1 As
Long, ZoomPercentage As Long ) As Boolean

   Cette fonction permet d’effectuer un zoom centré sur le point défini par les paramètres PixelX1 et PixelY1.
   Les paramètres PixelX1 et PixelY1 sont exprimés en pixels dans le repère correspondant à l’image dont la
   résolution en pixels est de ImageResX x ImageResY et qui sert à représenter la vue en cours.
   Si la valeur de ZoomPercentage est positive, le zoom est un agrandissement dont le pourcentage est donné
   par la valeur de ZoomPercentage. Par exemple une valeur de 100 donne un agrandissement d’un facteur 2 sur
   chaque axe.
   Réciproquement, une valeur négative de ZoomPercentage entraîne une réduction du facteur de zoom. Par
   exemple une valeur de -100 donne une réduction d’un facteur 2 sur chaque axe.
   Cette fonction peut être utilisée pour gérer une fonction de zoom avant/zoom arrière à partir de la molette de la
   souris comme dans KitchenDraw.

   Retour : la fonction retourne toujours 1.

ZoomMove( SessionId As Long, ImageResX As Long, ImageResY As Long, StartPixelX As Long, StartPixelY As
Long, EndPixelX As Long, EndPixelY As Long ) As Boolean

   Cette fonction ne change pas le facteur de zoom mais permet de translater la vue en cours de telle sorte que le
   point défini par les paramètres StartPixelX et StartPixelY se retrouve déplacé à la position définie par
   EndPixelX et EndPixelY.
   Les paramètres StartPixelX, StartPixelY, EndPixelX, et EndPixelY sont exprimés en pixels dans le repère
   correspondant à l’image dont la résolution en pixels est de ImageResX x ImageResY et qui sert à représenter
   la vue en cours.

   Retour : la fonction retourne toujours 1.

ViewSetMode( SessionId As Long, ViewMode As Long ) As Boolean

   Cette fonction permet de choisir un type de vue.
   Le paramètre ViewMode indique quelle vue de la scène courante on souhaite obtenir.

    Valeur de ViewMode                          Description
    VIEWMODE_2D = 0                             Vue de dessus
    VIEWMODE_ELEVATION = 1                      Vue de face (élévation) filaire
    VIEWMODE_REALELEVATION = 2                  Vue de face (élévation) réaliste
    VIEWMODE_3D = 3                             Perspective filaire
    VIEWMODE_REAL3D = 4                         Perspective réaliste
    VIEWMODE_PHOTO3D = 5                        Perspective photoréaliste

   Retour : la fonction retourne toujours 1.

ViewGetObserverHAngle( SessionId As Long ) As Long

   Retour : la fonction retourne la valeur en degrés de l’angle dans le plan horizontal correspondant à la direction
   du regard de l’observateur.

ViewSetObserverHAngle( SessionId As Long, Angle As Long ) As Boolean

   Cette fonction permet de fixer la direction du regard de l’observateur dans le plan horizontal à partir du
   paramètre Angle exprimé en degrés. Une valeur de 0 force l’observateur à regarder dans le sens de la largeur
   de la scène (vers la droite quand on regarde l’écran en vue de dessus).

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ViewGetObserverVAngle( SessionId As Long ) As Long

   Retour : la fonction retourne la valeur en degrés de l’angle dans le plan vertical correspondant à la direction du
   regard de l’observateur. Une valeur retournée positive indique que l’observateur regarde vers le haut.

ViewSetObserverVAngle( SessionId As Long, Angle As Long ) As Boolean

   Cette fonction permet de fixer la direction du regard de l’observateur dans le plan vertical à partir du paramètre
   Angle exprimé en degrés (-90° à +90°). Une valeur positive force l’observateur à regarder vers le haut.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ViewGetObserverX( SessionId As Long ) As Long

   Retour : la fonction retourne la valeur en unités scène de la position de l’observateur sur l’axe des X.

ViewSetObserverX( SessionId As Long, Value As Long ) As Boolean

   Cette fonction permet de fixer la position de l’observateur sur l’axe des X à partir du paramètre Value exprimé
   en unités scène.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ViewGetObserverY( SessionId As Long ) As Long

   Retour : la fonction retourne la valeur en unités scène de la position de l’observateur sur l’axe des Y.
ViewSetObserverY( SessionId As Long, Value As Long ) As Boolean

   Cette fonction permet de fixer la position de l’observateur sur l’axe des Y à partir du paramètre Value exprimé
   en unités scène.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

ViewGetObserverZ( SessionId As Long ) As Long

   Retour : la fonction retourne la valeur en unités scène de la position de l’observateur sur l’axe vertical des Z.

ViewSetObserverZ( SessionId As Long, Value As Long ) As Boolean

   Cette fonction permet de fixer la position de l’observateur sur l’axe des Z à partir du paramètre Value exprimé
   en unités scène.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneGetKeywordInfo( SessionId As Long, KeyWord As String) As String

   Cette fonction permet d’obtenir l’information spécifiée par le paramètre KeyWord concernant la scène
   courante.
   Les valeurs que peut prendre le paramètre KeyWord sont décrites dans le document « Réalisation de modèles
   de documents WORD ». Tous les mots clé de type « Fournisseur », « Scène », « Rubrique » et « Base »
   peuvent être employés. Le mot clé KeyWord doit intégré le caractère « @ » en tête et les parenthèses en fin.

   Retour : la fonction retourne l’information demandée sous la forme d’une chaîne de caractères.

SceneSetKeywordInfo( SessionId As Long, Value As String, KeyWord As String) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères Value dans le champ de la scène courante spécifié par
   le paramètre KeyWord.
   Les valeurs que peut prendre le paramètre KeyWord sont décrites dans le document « Réalisation de modèles
   de documents WORD ». Tous les mots clé de type « Fournisseur », « Scène », « Rubrique » et « Base »
   peuvent être employés. Le mot clé KeyWord doit intégré le caractère « @ » en tête et les parenthèses en fin.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

SceneGetInfo( SessionId As Long, InfoType As Long) As String

   Cette fonction permet d’obtenir l’information spécifiée par le paramètre InfoType concernant la scène en cours.
   Les valeurs que peut prendre le paramètre InfoType sont décrites dans le tableau ci-dessous :

    Valeurs de InfoType                                       Description
    SCNINFO_AUTO_2D_DIMENSIONS = 0                            Indicateur de cotation automatique en vue de
                                                              dessus
                                                              Retourne la chaîne de caractères « 1 » si la cotation
                                                              automatique en vue de dessus est activée et « 0 »
                                                              sinon.
    SCNINFO_AUTO_ELEVATION_DIMENSIONS = 1                     Indicateur de cotation automatique en élévation
                                                              Retourne la chaîne de caractères « 1 » si la cotation
                                                              automatique en élévation est activée et « 0 » sinon.
    SCNINFO_UNITTEXT = 2                                      Texte représentant l’unité de mesure de la scène
    SCNINFO_UNITVALUE = 3                                     Valeur de l’unité de mesure de la scène exprimée
                                                              en millimètres
    SCNINFO_LASTOBJDROPPOSX = 4                               Position sur l’axe des X (largeur de l’écran) du
                                                              dernier objet lâché dans la scène avant ancrage
                                                              automatique exprimée dans l’unité de mesure de la
                                                              scène. La valeur 0 se situe au milieu du rectangle
                                                              pointillé vert représentant les dimensions de la
                                                              scène
    SCNINFO_LASTOBJDROPPOSY = 5                               Position sur l’axe des Y (hauteur de l’écran) du
                                                              dernier objet lâché dans la scène avant ancrage
                                                              automatique exprimée dans l’unité de mesure de la
                                                              scène. La valeur 0 se situe au milieu du rectangle
                                                              pointillé vert représentant les dimensions de la
                                                              scène
    SCNINFO_LASTOBJDROPPOSZ = 6                               Position sur l’axe des Z (altitude) du dernier objet
                                                              lâché dans la scène avant ancrage automatique
                                                              exprimée dans l’unité de mesure de la scène. La
                                                              valeur 0 se situe au niveau de la face inférieure du
                                                              parallélépipède pointillé vert représentant les
                                                              dimensions de la scène
    SCNINFO_LASTOBJDROPANGLEXY = 7                            Angle dans le plan horizontal (0, X, Y) du dernier
                                                              objet lâché dans la scène avant ancrage
                                                              automatique exprimé en degrés

   Retour : la fonction retourne l’information demandée sous la forme d’une chaîne de caractères ou une chaîne
   vide si InfoType n’est pas reconnu.

SceneSetInfo( SessionId As Long, Value As String, InfoType As Long) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères Value dans le champ de la scène spécifié par le
   paramètre InfoType.
   Consultez la fonction SceneGetInfo pour connaître les valeurs que peut prendre le paramètre InfoType.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

SceneGetCustomInfo( SessionId As Long, InfoKey As String ) As String

   Cette fonction permet de lire la chaîne de caractères identifiée par le paramètre InfoKey et contenu dans la
   zone de la scène courante dédiée aux extensions d’application que sont les assistants et les « plug-ins ».
   Cette chaîne de caractères doit y avoir été placée auparavant grâce à la fonction SceneSetCustomInfo
   décrite plus loin et la même valeur du paramètre InfoKey.
   Ces chaînes de caractères permettent à un assistant ou un « plug-in » de stocker dans la scènes des variables
   de configuration qui lui sont spécifiques, le paramètre InfoKey lui permettant d’isoler ses variables propres de
   celles des autres assistants ou « plug-ins ».
   Ces chaînes de caractères spécifiques apparaissent dans le fichier XML qui est généré par la commande
   « Fichier | Exporter | Données de gestion (.XML) » chacune sous un tag égal à la valeur du paramètre InfoKey
   correspondant.

   Retour : la fonction retourne l’information demandée sous la forme d’une chaîne de caractères.

SceneSetCustomInfo( SessionId As Long, Value As String, InfoKey As String) As Boolean

   Cette fonction permet d’écrire la chaîne de caractères Value dans la zone de la scène courante dédiée aux
   extensions d’application. Cette chaîne de caractères sera identifiée par le paramètre InfoKey.

   Retour : la fonction retourne 1 si l’écriture s’est bien passée, 0 sinon.

SceneGetObjectsNb( SessionId As Long ) As Long

   Retour : la fonction retourne le nombre d’objets dans la scène courante quelque soit leur type (murs, cote,
   objet standard de catalogue, objet linéaire, etc.).
   Si l’objet est un composant il sera comptabilisé uniquement s’il est de type COMPTYPE_OPTION (composant
   visible dans la boîte de dialogue Objet | Composants) et s’il est « posé ».
   Attention, les composants comptabilisés à ce niveau le sont aussi au niveau des nombres de composants
   d’objets retournés par la fonction ObjectGetChildrenNb.
   Les composants « non posés » ou invalides sont ignorés.

   Un composant « non posé » est un composant valide ou pas qui n’est pas arrivé « posé » par défaut lors de la
   pose de son objet parent ou qui a été retiré par l’utilisateur de la liste des composants posés à l’aide de la boîte
   de dialogue Objet | Composants.
   Un composant invalide est un composant qui n’existe pas dans le modèle, les finitions ou les dimensions qui lui
   sont appliquées. Un composant invalide ne peut pas être posé dans la scène.

SceneGetObjectId( SessionId As Long, Rank As Long ) As Long

   Retour : la fonction retourne l’identifiant unique et immuable de l’objet dont le rang dans la scène est spécifié
   par le paramètre Rank numéroté à partir de 1.

SceneValueToIncrements( SessionId As Long, Value As String ) As Long

   Cette fonction permet de convertir les valeurs de position ou de dimension d’objet retournées en unités scène
   par exemple par la fonction SceneGetInfo en nombre d’incréments de mesure (plus petite variation de
   mesure) de la scène en cours.
   L’incrément de mesure peut être identique à l’unité de mesure de la scène comme dans le cas des unités de
   mesure impériales ou dans le cas de l’unité de mesure « 1mm ». Il peut aussi être différent de l’unité de
   mesure comme dans le cas de l’unité de mesure « 1mm (1.0 mm) » où l’unité de mesure de la scène est le
   millimètre tandis que l’incrément de mesure est le dixième de millimètre.

   Cette fonction trouve son intérêt lors du développement d’assistants ou de fonctions Plug-ins qui doivent
   fonctionner aussi bien en unités métriques qu’impériales.
   Dans ce cas, les positions et les dimensions d’objets doivent être converties en incréments, puis traitées, et
   enfin converties en valeur d’affichage (par la fonction SceneIncrementsToValue décrite ci-après) avant d’être
   affichées.
   L’assistant de sous-pente « sdk_slop.dll » est un exemple de l’utilisation de ces fonctions.

   Retour : la fonction retourne le nombre d’incréments de mesure correspondant à la valeur Value.

SceneIncrementsToValue ( SessionId As Long, IncrementsNumber As String ) As String

   Cette fonction permet de formater un nombre d’incréments de mesure passé en paramètre dans
   IncrementsNumber en une chaîne de caractères exprimée en unités scène.
   Par exemple, un nombre d’incréments de 67 pour une scène en 1/32ème de pouce donnera la chaîne de
   caractères « 2 3/32 ».
   Voir la fonction SceneValueToIncrements décrite ci-dessus pour plus de détails.

   Retour : la fonction retourne la chaîne de caractères représentant la valeur d’affichage en unités scène
   correspondant au nombre d’incréments IncrementsNumber.

SceneGetGenericsNb( SessionId As Long ) As Long

   Retour : la fonction retourne le nombre de génériques de la scène courante.

SceneAddGeneric( SessionId As Long, CatalogFileName As String) As Boolean

   Cette fonction permet d’ajouter un générique dans la scène courante.
   Le catalogue utilisé dans le nouveau générique sera spécifié dans le paramètre CatalogFileName.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneDeleteGeneric( SessionId As Long, GenericRank As Long ) As Boolean

   Cette fonction permet de supprimer le générique de rang GenericRank (numéroté à partir de 1) dans la scène
   courante.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.
SceneGetShapesNb( SessionId As Long ) As Long

   Retour : la fonction retourne le nombre de gabarits de la scène courante.

SceneGetShape( SessionId As Long, ShapeRank As Long ) As String

   Retour : la fonction retourne la chaîne de caractères qui liste les points du gabarit de rang ShapeRank
   (numéroté à partir de 1) dans la scène courante.
   Les coordonnées exprimées en valeurs décimales sont séparées par une virgule et les points par un point-
   virgule comme indiqué dans l’exemple ci-dessous :
                                                                                                            ième
   « x1,y1,z1,t1;x2,y2,z2,t2;….;xn,yn,zn,tn;…», où « xn », « yn » et « zn » sont les coordonnées scène du n
   point du gabarit et « tn » son type.

   Les propriétés des points de gabarit sont indiquées dans le tableau suivant :

    Propriétés de point de gabarit              Description
    SHAPEPOINTPROP_SELECTED = 1                 Indicateur de sélection du point
    SHAPEPOINTPROP_ARC = 2                      Indicateur d’arc de cercle : indique que le point défini
                                                un arc de cercle avec le point de gabarit précédent et
                                                le point suivant.

   La valeur indiquée après les coordonnées d’un point est la somme des valeurs de propriété de ce point. Ainsi,
   un point qui est à la fois sélectionné et un point d’arc de cercle aura une valeur de propriété égale à 3 (1 + 2).

SceneSetShape( SessionId As Long, ShapeRank As Long, ShapePointsList As String ) As Boolean

   Cette fonction permet de modifier les points constituant le gabarit de rang ShapeRank (numéroté à partir de 1)
   dans la scène courante.
   Cela se fait grâce au paramètre ShapePointsList représentant la chaîne de caractères listant dans l’ordre les
   points du gabarit.
   Le format de la chaîne de caractères est spécifié précédemment dans la description de la fonction
   SceneGetShape.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneAddShape( SessionId As Long, ShapePointsList As String ) As Boolean

   Cette fonction permet d’ajouter un gabarit dans la scène courante.
   Les points du gabarit sont listés dans le paramètre ShapePointsList.
   Le format de la chaîne de caractères est spécifié précédemment dans la description de la fonction
   SceneGetShape.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneDeleteShape( SessionId As Long, ShapeRank As Long ) As Boolean

   Cette fonction permet de supprimer le gabarit de rang ShapeRank (numéroté à partir de 1) dans la scène
   courante.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneDeleteAllShapes( SessionId As Long ) As Boolean

   Cette fonction permet de supprimer tous les gabarits de la scène courante.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneGetActiveShape( SessionId As Long ) As Long
   Retour : la fonction retourne le rang (numéroté à partir de 1) du gabarit actif de la scène courante, ou 0 s’il n’y
   a pas de gabarit dans la scène courante.

SceneSetActiveShape( SessionId As Long, ShapeRank As Long ) As Boolean

   Cette fonction permet de forcer le gabarit actif de la scène courante grâce au paramètre ShapeRank (numéroté
   à partir de 1).

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SceneUpdatePrices( SessionId As Long ) As Boolean

   Cette fonction provoque la mise à jour des informations permettant le calcul des prix des objets de la scène en
   cours (prix catalogue, coefficients relatifs au paramétrage des catalogues, taux de TVA, etc.).

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

GenericGetCatalogFileName( SessionId As Long, GenericRank As Long) As String

   Retour : la fonction retourne le nom de fichier du catalogue correspondant au générique de rang GenericRank.
   Même si la plupart du temps les scènes ne possèdent qu’un seul générique (spécification d’un modèle et de
   finitions génériques), il est possible d’en définir jusqu’à 4.

GenericSetCatalogFileName( SessionId As Long, GenericRank As Long, CatalogFileName As String ) As
Boolean

   Cette fonction permet de changer le catalogue correspondant au générique de rang GenericRank.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

GenericGetFinishesConfig( SessionId As Long, GenericRank As Long) As String

   Retour : la fonction retourne une chaîne de caractères permettant de connaître le modèle et les finitions en
   vigueur pour le générique de rang GenericRank (numéroté à partir de 1) de la scène courante.
   La chaîne de caractères retournée se présente sous la forme suivante :
   «-1,10008,10009,10010,20005,20006;;5,0,0,4,9,7».

   A gauche des « ;; », se trouvent, séparés par des virgules, les types de finition. Le code -1 représente le
   modèle, les codes en 10000 représentent les finitions de modèle et les codes en 20000 les finitions de famille.
   Il est possible d’obtenir les noms des types de finition correspondant à ces rangs grâce à la fonction
   CatalogGetFinishTypeName de la classe Appli.
   A droite des « ;; », se trouvent, séparés par des virgules, les rangs (numérotés à partir de 0) des finitions
   appliquées à l’objet et correspondant respectivement au types de finition listés précédemment. Chacun de ces
   rangs représente la position de la finition en vigueur dans la liste des finitions possibles pour le type de finition
   correspondant.

   Le premier élément de la liste des rangs des types de finition (« -1 ») représente le modèle et précise que le
   premier élément de la liste des rangs des finitions en vigueur est le rang du modèle en vigueur dans le
   générique de rang GenericRank.

GenericSetFinishesConfig( SessionId As Long, GenericRank As Long, FinishesList As String ) As Boolean

   Cette fonction permet de modifier le modèle et les finitions en vigueur dans le générique de rang GenericRank
   (numéroté à partir de 1) de la scène courante.
   Cela se fait grâce au paramètre FinishesList représentant la chaîne de caractères listant dans l’ordre le rang
   du modèle suivi des rangs des finitions.
   Les rangs de finition sont numérotés à partir de 0 et sont séparés par des « , ».

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.
GenericModifyFinishesConfig( SessionId As Long, GenericRank As Long, FinishesList As String, ModifiedLine
As Long, NewFinish As Long, Modify as Long ) As String

   Retour : cette fonction retourne une chaîne de caractères représentant la configuration de finitions à présenter
   suite à la modification de la configuration du générique de rang GenericRank passée dans le paramètre
   FinishesList par un changement de finition numéroté à partir de 0 (NewFinish) effectué au niveau du type de
   finition de rang ModifiedLine numéroté à partir de 1.
   La chaîne de caractères retournée se présente sous la forme suivante :
   «-1,10008,10009,10010,20005,20006;;5,0,0,4,9,7».

   A gauche des « ;; », se trouvent, séparés par des virgules, les types de finition. Le code -1 représente le
   modèle, les codes en 1XXXX représentent les finitions de modèle et les codes en 2XXXX les finitions de
   famille. Il est possible d’obtenir les noms des types de finition correspondant à ces rangs grâce à la fonction
   CatalogGetFinishTypeName de la classe Appli.
   A droite des « ;; », se trouvent, séparés par des virgules, les rangs (numérotés à partir de 0) des finitions
   appliquées à l’objet et correspondant respectivement au types de finition listés précédemment. Chacun de ces
   rangs représente la position de la finition en vigueur dans la liste des finitions possibles pour le type de finition
   correspondant.

HeadingGetObjectsNb( SessionId As Long, HeadingRank As Long, Factorized as Long ) As Long

   Retour : la fonction retourne le nombre d’objets dans la rubrique spécifiée par le paramètre HeadingRank.
   Si HeadingRank vaut OBJLIST_ALLHEADINGS (c'est à dire 0), la fonction retourne le nombre d’objets
   appartenant à l’une ou l’autre des rubriques de la scène courante. Si l’indicateur Factorized vaut 1 alors les
   objets strictement identiques sont factorisés c’est-à-dire comptent pour un. La fonction qui permet de retrouver
   le nombre d’occurrences d’un objet est HeadingGetObjectOccurrencesNb. Il est également possible
   d’obtenir cette information en utilisant la fonction ObjectGetInfo (en passant l’ InfoType
   OBJTYPE_OCCURRENCESNB).
   Remarque : Seuls les objets chiffrés, valides et « posés » appartiennent à une rubrique.

HeadingGetObjectId( SessionId As Long, HeadingRank As Long, Factorized as Long, Rank As Long) As Long

   Retour : la fonction retourne l’identifiant unique et immuable de l’objet dont le rang dans la rubrique
   HeadingRank numéroté à partir de 1 est spécifié par le paramètre Rank numéroté à partir de 1. Si l’indicateur
   Factorized vaut 1 le rang tient compte d’une éventuelle factorisation des objets strictement identiques.


HeadingGetObjectOccurrencesNb( SessionId As Long, HeadingRank As Long, Factorized as Long, Rank As
Long) As Long

   Retour : la fonction retourne le nombre d’occurrences de l’objet dont le rang dans la rubrique HeadingRank
   numéroté à partir de 1 est spécifié par le paramètre Rank numéroté à partir de 1. Si l’indicateur Factorized vaut
   0 la fonction retourne 1.

SupplierGetObjectsNb( SessionId As Long, SupplierID As String, HeadingRank As Long, Factorized as Long ) As
Long

   Retour : la fonction retourne le nombre d’objets dans la rubrique spécifiée par le paramètre HeadingRank pour
   le fournisseur spécifié par SupplierID.
   Si HeadingRank vaut OBJLIST_ALLHEADINGS (c'est à dire 0), la fonction retourne le nombre d’objets
   appartenant à l’une ou l’autre des rubriques de la scène courante.
   Si l’indicateur Factorized vaut 1 alors les objets strictement identiques sont factorisés c’est-à-dire comptent
   pour un.
   Remarque : Seuls les objets chiffrés, valides et posés appartiennent à une rubrique.

SupplierGetObjectId( SessionId As Long, SupplierID As String, HeadingRank As Long, Factorized as Long, Rank
As Long ) As Long

   Retour : la fonction retourne l’identifiant unique et immuable de l’objet dont le rang dans la rubrique
   HeadingRank numéroté à partir de 1 pour le fournisseur SupplierID est spécifié par le paramètre Rank
   numéroté à partir de 1. Si l’indicateur Factorized vaut 1 le rang tient compte d’une éventuelle factorisation des
   objets strictement identiques.
   Il est possible d’obtenir le nombre d’occurrences d’un objet en utilisant la fonction ObjectGetInfo (en passant l’
   InfoType OBJTYPE_OCCURRENCESNB).


LayersSetLoad( SessionId As Long, LayersFileName As String, LayersSetName As String ) As Long

   Cette fonction permet de charger le jeu de calques dont le nom est LayersSetName depuis le fichier de jeux de
   calques LayersFileName.
   Les jeux de calques sont utilisés pour spécifier si les objets appartenant à tel ou tel calque doivent être affichés
   ou pas, et si oui suivant quel style ils seront dessinés (style de contour et de surface), si les objets peuvent être
   sélectionnés ou pas, etc.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

GetPointedObject( SessionId As Long, ImageResX As Long, ImageResY As Long, PixelX As Long, PixelY As
Long, PreviousObjectId As Long) As Long

   Retour : la fonction retourne l’identifiant de l’objet de la scène situé « sous » le point de coordonnées PixelX,
   PixelY. Si plusieurs objets se trouvent « sous » ce point, une liste de priorité du plus haut au plus bas est
   établie. En faisant varier le paramètre PreviousObjectId il est alors possible de parcourir cette liste. Lors du
   premier appel à la fonction, le paramètre PreviousObjectId doit prendre la valeur de -1.
   La fonction revoie -1 si aucun objet de la scène ne se trouve « sous » le point de coordonnées PixelX, PixelY.

IsLoaded( SessionId As Long ) As Boolean

   Cette fonction permet de savoir si une scène est chargée en mémoire et donc s’il est possible d’appeler les
   fonctions qui s’appliquent à la scène chargée en mémoire (la plupart des fonctions de la classe Scene).

   Retour : la fonction retourne 1 si une scène est chargée en mémoire, 0 sinon.

ObjectsAgainstWallGetList( SessionId As Long, WallId As Long, MaxDistance As Long) As String

   Retour : la fonction retourne la liste des objets de la scène courante ayant la même orientation que le mur dont
   l’identifiant est WallId et dont le point d’origine est positionné à une distance maximale de MaxDistance de ce
   mur (en unités de la scène).
   Le résultat est une chaîne de caractères liste les identifiants des objets répondant aux critères mentionnés au
   paragraphe précédent et séparés par une virgule.



La classe « Dico »

Les fonctions de la classe Dico permettent de manipuler par programme les fichiers dictionnaires utilisés
par les applications multilingues comme KitchenDraw.

La liste des fonctions de la classe Dico est la suivante :

FileNew( SessionId As Long, KeyLanguageCode As String ) As Boolean

   Cette fonction crée en mémoire un nouveau dictionnaire dont la langue clé (celle qui sert à exprimer les textes
   à traduire) est spécifiée par le paramètre KeyLanguageCode.
   Les différents codes de langues sont listés dans la boîte à option (combo box) « Langues » de la boîte de
   dialogue « Configuration | Système » de KitchenDraw.

   Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

FileLoad( SessionId As Long, DicoFileName As String ) As Boolean
    Cette fonction charge en mémoire un dictionnaire dont le nom de fichier (avec le chemin complet) est spécifié
    par le paramètre DicoFileName.

    Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

FileSave( SessionId As Long, DicoFileName As String ) As Boolean

    Cette fonction enregistre le dictionnaire qui se trouve chargé en mémoire dans un fichier dont le nom (avec le
    chemin complet) est spécifié par le paramètre DicoFileName.

    Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

FileInsertLine( SessionId As Long, Ident As String, KeyString As String ) As Boolean

    Cette fonction insère une nouvelle ligne dans le dictionnaire chargé en mémoire.
    Le paramètre Ident contient la chaîne de caractères qui apparaîtra dans la colonne « Ident » du dictionnaire.
    Le paramètre KeyString est le texte correspondant à cette nouvelle entrée. Il sera placé dans la colonne du
    dictionnaire correspondant à la « langue clé ».

    Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

SetStringFromKey( SessionId As Long, KeyString As String, KeyLanguageCode As String, TranslatedString As
String ) As Boolean

    Cette fonction écrit la chaîne de caractères TranslatedString dans une cellule du dictionnaire chargé en
    mémoire. Cette cellule correspondant à la traduction de la chaîne de caractères définit par le paramètre
    KeyString dans la langue définit par le paramètre KeyLanguageCode.

    Retour : la fonction retourne 1 si l’opération s’est bien passée, 0 sinon.

GetStringFromKey( SessionId As Long, KeyString As String, KeyLanguageCode As String ) As String

    Retour : cette fonction retourne la chaîne de caractères correspondant à la traduction de la chaîne de
    caractères définit par le paramètre KeyString dans la langue définit par le paramètre KeyLanguageCode.




Evènements
Un certain nombre d’évènements se produisant lors de l’utilisation de KitchenDraw permettent de
déclancher l’exécution de fonctions correspondantes se trouvant dans des bibliothèques DLL.
Ces fonctions sont appelées fonctions « plug-in » et portent des noms prédéfinis correspondant aux
évènements qui les déclanchent. Par exemple, la fonction « plug-in » OnSceneInformationBefore()
correspond à l’évènement qui se déclanche lorsque l’utilisateur lance la commande « Scène |
Information » juste avant que la boîte de dialogue n’apparaisse.

L’enregistrement d’une fonction « plug-in » se fait dans le fichier de configuration SPACE.INI.
Deux méthodes peuvent être employées au choix :
Ou bien déclarer la liste des bibliothèques DLL dans la section [plugins] du fichier SPACE.INI.
        [Plugins]
        plugin1.dll=
        plugin2.dll=

Dans ce cas, KitchenDraw analyse le contenu des différentes bibliothèques DLL mentionnées et
enregistre toutes les fonctions « plug-in » présentes à l’intérieur. Toutes ces fonctions « plug-in » sont
alors susceptibles d’être exécutées si l’évènement correspondant se déclanche.
Ou bien déclarer les bibliothèques DLL dans des sections dédiées à chaque fonction ce qui permet de
choisir les fonctions que l’on souhaite enregister. Cette méthode est plus souple parce qu’elle permet de
n’enregistrer qu’une partie des fonctions de la DLL et aussi parce que si plusieurs DLL réagissent au
même évènement il sera possible de contrôler l’ordre d’application des fonctions.
La fonction appartenant à la bibliothèque DLL qui se trouve en première position dans la liste sera
exécutée en premier, ensuite ce sera le tour de la deuxième et ainsi de suite.
       [OnAppStartBefore]
       mykdext.dll=
       [OnFileSaveEnd]
       mykdext.dll=
       prodext.dll=
       [OnFileOpenBefore]
       mykdext.dll=

La liste des fonctions « plug-in » gérées est la suivante :
       OnAppStartBefore,
       OnAppStartAfter,
       OnAppQuitBefore,
       OnAppQuitAfter,

       OnFileNewBefore,
       OnFileNewAfter,
       OnFileOpenBefore,
       OnFileOpenAfter,
       OnFileSaveBefore,
       OnFileSaveAfter,
       OnFileSaveAsBefore,
       OnFileSaveAsAfter,
       OnFileSaveVersionBefore,
       OnFileSaveVersionAfter,
       OnFileCloseBefore,
       OnFileCloseAfter,
       OnFileGenerateOrdersBefore,
       OnFileGenerateOrders,
       OnFileGenerateOrdersAfter,

       OnSceneInformationBefore,
       OnSceneInformation,
       OnSceneInformationAfter,
       OnSceneInformationDlgInit,
       OnSceneInformationDlgValidation,
       OnSceneInformationDlgOk,
       OnSceneSpaceBefore,
       OnSceneSpace,
       OnSceneSpaceAfter,
       OnSceneGenericFinishesBefore,
       OnSceneGenericFinishes,
       OnSceneGenericFinishesAfter,
       OnScenePartsListBefore,
       OnScenePartsList,
       OnScenePartsListAfter,
       OnSceneUpdatePricesBefore,
       OnSceneUpdatePrices,
       OnSceneUpdatePricesAfter,
       OnSceneVATRatesBefore,
       OnSceneVATRates,
       OnSceneVATRatesAfter,
       OnSceneCommentBefore,
       OnSceneComment,
       OnSceneCommentAfter,
       OnSceneRenumberBefore,
       OnSceneRenumber,
       OnSceneRenumberAfter,
       OnSceneCheckingBefore,
       OnSceneChecking,
       OnSceneCheckingAfter,
       OnSceneLayersBefore,
       OnSceneLayers,
       OnSceneLayersAfter,
       OnSceneDrawingStyleBefore,
       OnSceneDrawingStyle,
       OnSceneDrawingStyleAfter,
       OnSceneMarkBefore,
       OnSceneMark,
       OnSceneMarkAfter,
       OnSceneGridBefore,
       OnSceneGrid,
       OnSceneGridAfter,
       OnSceneAutomaticLinearArticlesBefore,
       OnSceneAutomaticLinearArticlesAfter,
       OnObjectPlaceBefore,
       OnObjectPlaceAfter,
       OnObjectDeleteBefore,
       OnObjectDeleteAfter,
       OnObjectMoveBefore,
       OnObjectMoveAfter,
       OnObjectAttributsBefore,
       OnObjectAttributs,
       OnObjectAttributsAfter,
       OnObjectAttributsDlgInit,
       OnObjectAttributsDlgValidation,
       OnObjectAttributsDlgOk,
       OnObjectComponentsBefore,
       OnObjectComponents,
       OnObjectComponentsAfter,
       OnObjectFinishesBefore,
       OnObjectFinishes,
       OnObjectFinishesAfter,
       OnObjectPricesBefore,
       OnObjectPrices,
       OnObjectPricesAfter,
       OnObjectSpecialTermsBefore,
       OnObjectSpecialTerms,
       OnObjectSpecialTermsAfter,
       OnObjectCommentsBefore,
       OnObjectComments,
       OnObjectCommentsAfter,
       OnObjectWizardBefore,
       OnObjectWizard,
       OnObjectWizardAfter,
       OnObjectCatalogPrices,
       OnObjectGrossSellingPrice.

Toutes les fonctions « plug-in » reçoivent en entrée un seul paramètre de type Long qui servira de lien
vers KitchenDraw et vers la scène en cours.
Elles retournent une valeur booléenne.

Voici le squelette d’une fonction « plug-in » écrite en VB6 :

'=========================================================================
Public Function OnFileSaveAfter(ByVal lCallParamsBlock As Long) As Boolean
'=========================================================================
oAppli As Object
oScene As Object
lSessionId As Long
bOk As Boolean
lNbObjects As Long

Set oAppli = CreateObject("KDSDK.Appli")
Set oScene = CreateObject("KDSDK.Scene")

lSessionId = oAppli.StartSessionFromCallParams(lCallParamsBlock)

lNbObjects = oScene.SceneGetObjectsNb(oAppli)
MsgBox "Nombre d’objets dans la scène : " & lNbObjects

bOk = oAppli.EndSession(lSessionId)

Set oAppli = Nothing
Set oScene = Nothing

OnFileSaveAfter = True
End Function

Vous pouvez constater que la plupart des fonctions « plug-in » existent en 2 ou 3 ou même 6 variantes.
Une variante dont le nom se termine par « Before », une autre dont le nom se termine par « After » et
dans le cas d’une commande faisant intervenir une boîte de dialogue une troisième sans terminaison.

En fait, lorsqu’un utilisateur exécute une commande de l’application, deux ou trois évènements
successifs se produisent.

Le premier évènement (« Before ») se déclanche avant l’exécution de la fonction standard ou l’apparition
de la boîte de dialogue. Le retour de la fonction « plug-in » éventuellement exécutée conditionne la
continuation de la commande : un retour de la valeur 1 permet de continuer le processus alors qu’un
retour de la valeur 0 l’arrête.
Ce type de fonction permet de « préparer » la scène avant que la commande standard ne s’exécute ou
bien d’empêcher qu’elle ne s’exécute si certaines conditions ne sont pas remplies.

Le second évènement se déclanche au moment de l’apparition de la boîte de dialogue et si une fonction
« plug-in » sans terminaison est enregistrée, elle s’exécutera à la place de la boîte de dialogue standard.
Ce type de fonction permet de remplacer des traitements standard par des traitements spécifiques.

Enfin, un dernier évènement se déclanche une fois la commande standard exécutée ou la boîte de
dialogue fermée après validation (clic sur « OK » ou appui sur ENTREE).
Ce type de fonction permet d’effectuer un post-traitement. Par exemple, dans le cas de la pose d’un
article dans la scène, une fonction « plug-in » pourrait analyser les articles déjà présents pour effectuer
un contrôle de cohérence ou poser des objets de liaison.
En effet, à part dans le cas des composants, KitchenDraw ne dispose pas en standard de fonctions inter
objets.
Les fonctions « plug-in » sont un moyen souple et puissant de donner de l’intelligence à un catalogue.

Voici l’organigramme d’enchaînement des diverses fonctions « plug-in » associées à une commande :
                                        CommandBefore()


                                               Retour de la fonction OnCommandBefore()
                                         0     1

                                   OnCommand() est enregistrée ?
                                       Oui               Non
                     OnCommand()                         Commande standard




                                       OnCommandAfter()




Dans le cas particulier des fonctions OnSceneInformation… et OnObjectAttributs…, 3 autres versions
existent : la première avec l’extension « DlgInit », la deuxième avec l’extension « DlgValidation » et la
troisième avec l’extension « DlgOk ».

L’évènement « DlgInit » se déclanche tout à la fin de la phase d’initialisation de la boîte de dialogue,
juste avant l’affichage de celle-ci. La fonction « plug-in » correspondante pourrait être utilisée pour
changer l’initialisation par défaut ou même pour changer la disposition de la boîte de dialogue elle-même
en ajoutant, en supprimant ou en déplaçant des contrôles.

L’évènement « DlgValidation » se déclanche juste après que l’utilisateur ait cliqué sur le bouton « Ok »
ou appuyé sur la touche ENTREE. La fonction « plug-in » correspondante pourrait être utilisée pour
vérifier la validité des valeurs entrées par l’utilisateur dans la boîte de dialogue. Une valeur de retour
« Faux » empêche la boîte de dialogue de se fermer.

L’évènement « DlgOk» se déclanche après l’évènement « DlgValidation » sauf si la fonction « plug-in »
« DlgValidation » a retourné « Faux ». La fonction « plug-in » correspondant à l’évènement « DlgOk»
pourrait être utilisée pour stocker les valeurs contenues dans la boîte de dialogue ou lancer des
traitements à partir de ces valeurs.

								
To top