FormIt for Windows
Français
Français
  • Introduction
  • Nouveautés
  • Fonctionnalités FormIt
    • Clients multiples
    • Modélisation de solides conceptuels
    • Utilisation des formats de données
    • Langues
    • Collaboration
    • Graphiques de présentation
    • FormIt et Autodesk Docs
    • FormIt et Dynamo
    • Analyse d’ensoleillement et d’énergie
    • FormIt et Revit
    • FormIt + JavaScript pour les plug-ins
  • Introduction à FormIt
    • Questions fréquemment posées
    • Conditions préalables et installation
    • Configuration d’un projet
    • Barres d’outils et palettes
    • Navigation dans la scène
  • FormIt Primer
    • Partie I
      • 1.1 – Définition de l’emplacement
      • 1.2 – Configuration d’un projet avec des images et une grille
      • 1.3 – Esquisse 3D et Faire glisser la face
      • 1.4 – Ajout de sols avec des niveaux
      • 1.5 Groupement d’objets
      • 1.6 – Contrôle de la visibilité avec les calques
      • 1.7 – Peinture avec matériaux
      • 1.8 – Création de poteaux avec un réseau
      • 1.9 –Ajout de détails
      • 1.10 – Groupes de calcul avec Dynamo
      • 1.11 – Importation de modèles avec la bibliothèque de contenu
      • 1.12 – Styles visuels
      • 1.13 – Plans de coupe
      • 1.14 – Exportation de l’image
      • 1.15 – Utilisation de Revit
    • Partie II
      • 2.1 – Outil Ligne de décalage
      • 2.2 – Outils de modélisation avancés : Coque et Couverture
      • 2.3 Workflow de la vue Orthogonale
      • 2.4 – Workflows de terrain 3D
      • 2.5 – Plug-ins
      • 2.6 – Nœuds Dynamo FormIt
      • 2.7 – Outils de diagnostic
      • 2.8 – Workflows Revit avancés
      • 2.9 – Analyse d’ensoleillement et d’énergie Insight
      • 2.10 – Sessions de collaboration
  • Bibliothèque d’outils
    • 3D Text
    • Aligner caméra avec face
    • Arc
    • Réseau
    • Array Along Path
    • Enregistrement automatique
    • Coupe booléenne
    • Intersection booléenne
    • Jointure booléenne
    • Circle
    • Collaboration
    • Bibliothèque de contenu
    • Copier l’objet
    • Couverture, Balayage, Lisser
    • Créer un panorama
    • Facettage de courbe et de surface
    • Supprimer, Modifier, Déplacer
    • Dynamo
    • Analyse d’énergie avec Insight
    • Faces : extrusion, coupe et décalage
    • Faces : aplanir
    • Faces : inclinaison et facette/lissage
    • Arborescence des groupes
    • Groupes
    • Importation et exportation de données
    • Calques
    • Niveaux et aire
    • Lignes
    • Matériaux
    • Mesurer l’angle
    • Mesurer
    • Mailles
    • Mise en miroir
    • Statistiques du modèle
    • Arborescence du modèle
    • Modification des faces, des arêtes et des points
    • Échelle non uniforme
    • Droite décalée
    • Vues orthogonales
    • Caméra orthogonale et en perspective
    • Placement de primitives
    • Placer un sommet
    • Plug-ins
    • Polygone
    • Propriétés
    • Railing Along Path
    • Rectangle
    • Revit
    • Rotation d’un objet
    • Mise à l’échelle·d’un objet
    • Scènes
    • Plans de coupe
    • Sélection
    • Définition de l’emplacement
    • Soleil + Ombres
    • Coque
    • Accrochages et déductions
    • Analyse d’ensoleillement
    • Spline
    • Système de meneaux de vitrine/mur-rideau
    • Gestionnaire d’annulation
    • Styles visuels
    • Plans de construction
    • Axes universels
  • Plug-ins
    • Introduction aux plug-ins
    • Utilisation des plug-ins
    • Développement de plug-ins
      • Votre premier plug-in
        • Plugin Playground (Playground de plug-ins)
        • Lancement de l’exemple de plug-in
        • Ajout de vos propres fonctionnalités
        • Enregistrement de votre travail dans GitHub
        • Publication de votre projet
      • Développement avancé
        • Utilisation d’un IDE
        • Clonage d’un exemple de plug-in
        • Hébergement d’un plug-in sur un serveur local
        • Aperçu d’un plug-in dans Plugin Manager
        • Configuration de FormIt pour le développement
        • Hébergement d’un plug-in sur GitHub
        • Configuration générale de plug-in dans le fichier manifest
        • Rechargement pour les modifications locales
        • Moteurs côté client et Web
        • Débogage
        • Gestion des versions
      • Options de développement supplémentaires
        • Création d’un plug-in de groupe de fonctions HTML
        • Création d’un plug-in combiné de barre d’outils et de groupe de fonctions HTML
        • Création d’un plug-in basé sur une barre d’outils
        • Test d’un plug-in combiné de barre d’outils et de groupe de fonctions HTML
        • Création d’un add-in
        • Appel de plug-ins et d’API à partir de Dynamo
    • API FormIt
    • Exemples
      • Génération de guirlandes lumineuses
      • Plug-in Manage Cameras (Gérer les caméras)
      • Plug-in Properties Plus (Propriétés plus)
      • 3D Context Creator
      • Communauté de plug-ins FormIt
  • Annexe
    • Raccourcis clavier
Powered by GitBook
On this page
  • Côté client (FormIt) et côté Web (HTML)
  • Côté client (FormIt)
  • Côté Web (HTML)
  • Trois méthodes pour appeler des commandes côté client (FormIt) à partir d’un plug-in Web :
  • Méthode 1 : FormItInterface.CallMethod
  • Méthode 2 : FormIt.CallJS
  • Méthode 3 (asynchrone/await)
  • Méthode 4 (RegisterAsyncAPI)
Edit on GitHub
  1. Plug-ins
  2. Développement de plug-ins
  3. Développement avancé

Moteurs côté client et Web

PreviousRechargement pour les modifications localesNextDébogage

Last updated 2 years ago

Les plug-ins FormIt utilisent deux moteurs JavaScript distincts :

  • Groupe de fonctions affichant le code HTML (côté Web)

  • Le côté client (FormIt) effectue des appels à FormIt et à son noyau de géométrie.

Ces deux moteurs JavaScript fonctionnent selon des processus distincts.

Côté client (FormIt) et côté Web (HTML)

FormIt exécute plusieurs moteurs JavaScript simultanément :

  • L’application FormIt possède son propre moteur JavaScript

  • Chaque barre d’outils de plug-in possède son propre moteur JavaScript.

  • Chaque groupe de fonctions de plug-in possède son propre moteur JavaScript (Chromium).

Les plug-ins peuvent spécifier l’emplacement de chargement du script JavaScript :

Côté client (FormIt)

    "Scripts": [
        "PLUGINLOCATION/blockFormItSide.js",
        "https://formit3d.github.io/FormItExamplePlugins/SharedPluginFiles/PluginUtils18_0.js"
    ]

Côté Web (HTML)

  • Les scripts côté Web sont chargés à partir de la page Web.

  • Les scripts côté Web peuvent appeler le script JavaScript côté client (FormIt) à l’aide de plusieurs appels asynchrones.

Trois méthodes pour appeler des commandes côté client (FormIt) à partir d’un plug-in Web :

Méthode 1 : FormItInterface.CallMethod

CallMethod prend un nom de fonction et les arguments qui seront exécutés côté FormIt. La fonction transmise sera appelée avec le résultat de l’appel de la fonction.

    var args = {
        "w": 10,
        "l": 10,
        "h": 10
    }
    FormItInterface.CallMethod("CreateBlock", args, function(result)
    {
        // Result of the function call
    });

Avantages :

➕ Pas besoin de await.

Inconvénients :

➖ Un rappel est nécessaire pour obtenir le résultat et s’appelle « who know when ».

➖ Les scripts sont définis à deux emplacements différents.

➖ La logique du plug-in doit être divisée en deux fichiers différents.

Méthode 2 : FormIt.CallJS

*Disponible uniquement dans FormIt 2022.1 et versions ultérieures

CallJS utilise la fonction JavaScript pour un appel côté FormIt et l’objet arguments.json.

var args =
{
    "w": 10,
    "l": 10,
    "h": 10
};
var result = await FormIt.CallJS("CreateBlock", args);

Avantages :

➕ Le résultat est disponible en cas de besoin

Inconvénients :

➖ **** Vous devez ajouter await à tous les appels asynchrones. Si vous oubliez, rien ne fonctionnera comme prévu.

➖ **** Potentiellement plus lent en raison de await

Méthode 3 (asynchrone/await)

const pt1 = await WSM.Geom.Point3d(0,0,0);

Avec un appel asynchrone, le côté Web appelle le côté FormIt. Cet appel commence dans un processus, est envoyé à un autre processus, puis le résultat est transmis au processus de départ. C’est pourquoi await est nécessaire.

Seules les API FormIt intégrées peuvent être appelées par défaut.

Avantages :

➕ Le résultat est disponible en cas de besoin.

➕ Permet de combiner tout le code dans un seul fichier JS exécuté côté Web, sans script défini dans manifest.json.

Inconvénients :

➖ **** Vous devez ajouter await à tous les appels asynchrones. Si vous oubliez, rien ne fonctionnera comme prévu.

➖ **** Potentiellement plus lent en raison de await.

Méthode 4 (RegisterAsyncAPI)

*Disponible uniquement dans FormIt 2023.0 et versions ultérieures

Pour appeler une fonction définie par l’utilisateur dans FormIt, la fonction doit être enregistrée. Par exemple :

Côté client (FormIt)

FormIt.RegisterAsyncAPI("HelloBlockAsync", "CreateBlock", "l, w, h");
// CreateBlock runs from FormIt.
HelloBlockAsync.CreateBlock = function(args)
{
    return { "Result" : "It Worked!!"};
}

Côté Web (HTML)

var result = await HelloBlockAsync.CreateBlock(l, w, h);

Avantages :

➕ Le résultat est disponible en cas de besoin.

➕ Permet de combiner tout le code dans un seul fichier JS exécuté côté Web, sans script défini dans manifest.json.

Inconvénients :

➖ **** Vous devez ajouter await à tous les appels asynchrones. Si vous oubliez, rien ne fonctionnera comme prévu.

➖ **** Potentiellement plus lent en raison de await.

Spécifié à l’aide du fichier

Spécifié à l’aide du fichier

Reportez-vous à pour obtenir un exemple.

manifest.json
index.html
HelloBlockAsync