Dans ce cours sketchup, nous allons procéder à une lecture du livre de Mattew Scarpino auquel nous nous référons. Avec la prochaine série de notes, nous pourrions commencer à écrire du code, mais nous devons d’abord comprendre quelles sont les trois structures importantes : le module Sketchup, la classe Model et la classe Entities.
Avant de commencer, nous vous donnons un aperçu sur le contenu de cette page. Il convient ici de rappeler que le langage Ruby tant qu’il est traité sur le livre de Mattew Scarpino est relativement ancien. Ceci n’a pas vraiment d’importance parce que nous nous intéressons aux bases et aux principes.
Voici les titres des articles précédents :
Dans cette série d’articles de cours sketchup, nous allons mettre de côté la théorie de la programmation et passer aux choses amusantes : créer des formes sketchup via le code. Vous commencez par les lignes et progressez jusqu’aux surfaces.
Dans les prochains articles, vous commencerez à former vos figures tridimensionnelles en utilisant les mêmes mécanismes « Push / Pull » et « Follow Me » disponibles dans sketchup.
En cours de route, ce chapitre montre comment créer des fichiers de script Ruby et les exécuter dans sketchup. Jusqu’à présent, vous avez entré des commandes dans la console Ruby et étudié les résultats. Mais avec les scripts, vous pouvez stocker vos commandes dans des fichiers au lieu d’avoir à les ressaisir à chaque fois. De plus, comme cela deviendra clair dans les prochains articles, vous pouvez accomplir beaucoup plus avec des scripts qu’avec des commandes individuelles.
Ce chapitre concerne principalement les objets Edge et Face de SketchUp – une fois que vous comprenez leur fonctionnement, vous pouvez construire à peu près n’importe quoi. Mais avant de pouvoir intégrer ces objets dans un projet, vous devez vous familiariser avec trois structures de données de base : le module sketchup, la classe Model et la classe Entities.
Presque tous les scripts Sketchup commencent par accéder à trois structures de données :
Une fois que vous avez compris comment ils fonctionnent ensemble, vous êtes prêt à créer vos scripts dans SketchUp.
Le module Sketchup :
Contrairement aux classes et objets décrits dans le chapitre précédent, la première structure de données que nous rencontrons dans Sketchup est un module. Plus tard, nous verrons quels modules sont en détail. Pour l’instant, tout ce que vous devez savoir, c’est qu’un formulaire est un ensemble de méthodes.
La plupart des scripts Ruby commencent par appeler l’une des méthodes de ce module. Les méthodes du “module Sketchup” accèdent aux propriétés liées à l’application SketchUp dans son ensemble.
Pour voir comment cela fonctionne, ouvrez la Ruby Console (Fenêtre> Ruby Console dans le menu principal de SketchUp) et exécutez la commande suivante :
Sketchup.version
Cette commande affiche la version de l’application SketchUp utilisée. Vous pouvez également entrer Sketchup.os_language pour déterminer la langue actuelle. Pour voir toutes les méthodes fournies par le module Sketchup, entrez Sketchup.methods dans la console Ruby.
La méthode la plus importante du module Sketchup est active_model. Il renvoie l’objet Model correspondant au dessin SketchUp actuellement ouvert.
La commande suivante montre comment fonctionne cette méthode :
mod = Sketchup.active_model
Cela récupère l’objet Modèle actuel, puis définit mod égal à l’objet Modèles. L’objet Modèle est crucial dans toutes les routines SketchUp non triviales et le paragraphe suivant explique pourquoi.
Tout comme le module Sketchup représente l’ensemble de l’application SketchUp, l’objet Modèle représente un seul fichier SketchUp (* .skp) ou plus précisément, les informations de conception contenues dans le fichier.
Lorsque vous ouvrez un nouveau fichier dans SketchUp, les propriétés du module Sketchup restent les mêmes, mais les données de l’objet Modèle actif deviennent complètement différentes.
Les méthodes de la classe Modèle fournissent des informations sur le projet en cours.
modified?
identifie si le projet en cours a été modifié depuis la dernière fois qu’il a été enregistré.
Les commandes suivantes montrent comment il est utilisé :
mod = Sketchup.active_model
mod.modified?
La méthode title renvoie le titre du dessin courant et la méthode description renvoie sa description textuelle. La méthode path renvoie le chemin d’accès au fichier utilisé.
Les méthodes de la classe Model que nous utiliserons le plus sont celles qui accèdent aux objets conteneurs du projet en cours. Par exemple, vous pouvez considérer un objet comme une commode : c’est un objet unique contenant plusieurs compartiments et chaque compartiment peut contenir plusieurs objets.
Le tableau 1 montre six des « tiroirs » les plus importants d’objets contenus dans le modèle d’objet.
En modifiant les objets dans ces six bacs, vous pouvez configurer presque tous les aspects d’un dessin SketchUp. Pour y accéder, vous devez appeler les méthodes appropriées. Ou:
entités : renvoie un objet entités qui contient les formes du dessin courant ;
niveaux : renvoie un objet niveaux qui contient les niveaux SketchUp dans le projet en cours ;
Definitions : renvoie un objet ComponentDefinitions qui contient toutes les définitions des composants du projet en cours ;
Matériaux : renvoie un objet matériaux qui gère les matériaux utilisés dans la conception actuelle ;
Options : renvoie un OptionManager qui permet d’accéder à plusieurs OptionsProviders ;
Pages : renvoie un objet pages qui contient les pages du dessin courant ;
La plupart de ces méthodes ont des noms pluriels : entités, niveaux, définitions matériaux. Renvoie les objets dont les classes ont des noms similaires : Entités, Lilevels, définitions et matériaux. Chaque objet pluriel fonctionne essentiellement comme un tableau.
Comme vous pouvez l’imaginer, un élément du tableau Entities est une Entity. De même, le tableau Layers contient plusieurs éléments Layer, le tableau Materials contiendra de nombreux Materials et ainsi de suite. Attention à ne pas vous tromper.
Pour le moment, tout ce que nous voulons faire, c’est dessiner les formes de base de SketchUp. Pour commencer, la première étape consiste à appeler la méthode entity de la classe Model et à accéder à l’objet Entities du dessin courant.
Le code suivant montre comment cela est faisable :
mod = Sketchup.active_model
ents = mod.entities
Vous pouvez obtenir le même résultat en enchaînant les deux méthodes ensemble. Comme ça :
ents = Sketchup.active_model.entitiesv
Chaque objet géométrique dans un dessin SketchUp est représenté par une entité ou sa sous-classe, y compris des lignes, des faces, des images, du texte, des groupes et des composants. Pour gérer ou modifier les objets Entité dans un dessin, vous devez accéder au conteneur Entités principal du dessin. Ce conteneur est utilisé pour faire trois choses principales :
Ajoute de nouveaux objets Entity au projet SketchUp actuel
Déplacer, redimensionner, faire pivoter et supprimer des objets Entité dans le dessin
Stocke les objets Entity dans un tableau pouvant être indexé.
Le premier point est le plus important. La classe Entities contient de nombreuses méthodes qui ajoutent de nouveaux objets Entity au dessin. Les méthodes d’ajout les plus simples (add_X) sont répertoriées comme suit :
En ce qui concerne les formes, Edge et Face sont les objets Entité les plus importants. Chaque fois que vous en ajoutez un au module Entité, une forme correspondante apparaît dans la fenêtre SketchUp. Ainsi, lorsque vous enregistrez le dessin, les arêtes et les faces seront stockées dans l’objet Modèle. Pour bien comprendre les classes Edge et Face, vous devez connaître leurs superclasses, Entity et Drawingelement.
La classe Drawingelement est la superclasse de Edge, Face, Group, Image, Text, de ComponentDefinition et ComponentInstance.
De nombreuses méthodes de cette classe contrôlent la manière dont l’élément est affiché dans SketchUp et définissent des propriétés telles que l’ombre, le matériau de composition et si l’élément est masqué ou visible. Ce sont les mêmes propriétés définies par la boîte de dialogue Informations sur l’entité SketchUp, illustrées dans la figure suivante :
La classe Drawingelement fournit une méthode utile appelée bounds qui renvoie l’objet BoundingBox. Cela représente le plus petit volume rectangulaire (parallélépipède rectangle) qu’il peut contenir en gardant les côtés alignés avec les axes x, y et z.
La commande suivante crée un BoundingBox pour une ligne tracée de [0, 0, 0] à [2, 2, 5]
new_line = Sketchup.active_model.entities.add_line [0,0,0], [2,2,5]
box = new_line.bounds
Une fois que vous avez BoundingBox, ses méthodes fournissent des informations sur sa taille, sa diagonale, ses angles et ses points maximum/minimum. Les commandes suivantes affichent la position du centre d’un BoundingBox et la longueur de sa diagonale.
Vous verrez (2,54cm, 2,54cm, 6,35cm)
box.diagonal
Vous verrez apparaître 14.6.
Les objets BoundingBox sont utiles lorsqu’il est nécessaire de déterminer si l’utilisateur a cliqué sur une forme. Après avoir acquis le BoundingBox d’une forme, vous pouvez comparer ses dimensions avec la position du clic de souris de l’utilisateur.
Connaissances
Voici quelques ressources que vous pouvez lire pour en savoir plus, y compris ce guide sur webmasterpoint.org ;
Sur ce lien, vous pouvez trouver la documentation sur Sketchup et Ruby.
Dans les notes suivantes, nous essaierons de comprendre la classe Edges. Nous commencerons ensuite à jeter les bases pour comprendre comment écrire du code Ruby dans Sketchup.
Écrivez dans les commentaires, faites-nous savoir si vous suivez cette série de notes. Signalez même si j’ai fait quelques erreurs.
Les écarts sur charges fixes permettent d'analyser les différences entre les charges fixes budgétées et…
L’écart-type est une mesure de la dispersion des données autour de la moyenne. Excel propose…
Exercice 1 : Calcul des Écarts sur Volume et Prix Contexte :Une entreprise a prévu…
1. Généralités sur le Contrôle Budgétaire Question 1 : Quel est l’objectif principal du contrôle…
Voici un QCM Contrôle de Gestion - Pilotage de la Performance bien conçu sur le…
Une fiche d’action est un outil essentiel pour planifier, suivre et gérer les tâches dans…
This website uses cookies.