Ton bloc notes
Derniers sujets
» [ SKETCHUP généralité ] Tête de pilastre
par jerryvento Aujourd'hui à 9:01
» [ CHALLENGE 2024 ] résultats du challenge
par AK40Cess Hier à 13:27
» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Hier à 9:12
» [ SKETCHUP plugins ] une barre d’outils perso
par tenrev Lun 18 Nov 2024 - 15:05
» [ SKETCHUP généralité ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:46
» [ SKETCHUP tutos ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:45
» [ SKETCHUP tutos ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:44
» [ SKETCHUP tutos ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:43
» ColorMaker par Didier Bur[ SKETCHUP plugins ]
par JDD Dim 17 Nov 2024 - 20:56
» [ ARCHICAD ] Plus de format *atl dans Archicad
par Coulou Jeu 14 Nov 2024 - 8:26
» [ SKETCHUP tutos ] Créer des Bibliothèques et des livres aléatoires Facilement (2 Méthodes!)
par tenrev Mar 12 Nov 2024 - 11:31
» [ CHALLENGE 2024 ] les images finales du challenge
par tenrev Lun 11 Nov 2024 - 15:35
» [ SKETCHUP composants dynamiques ] Formule IF
par Samuel MATHIEU Jeu 7 Nov 2024 - 21:12
» [ Challenge 2024] cHallenge archjtexture exterieur ou paysagiste-vick-sketchup-enscape
par vick Jeu 7 Nov 2024 - 10:23
» [ SKETCHUP vray ]
par tenrev Mar 5 Nov 2024 - 21:19
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste- Gaspard Hauser - Sketchup - D5 render
par tenrev Mar 5 Nov 2024 - 10:22
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - JDD - SketchUp - Enscape
par tenrev Mar 5 Nov 2024 - 10:10
» [ ARCHICAD ] Murs paramétriques
par Coulou Lun 28 Oct 2024 - 10:28
» [ SKETCHUP généralité ] Aide pour SKP 2017
par PEGASE Sam 26 Oct 2024 - 18:36
» [ ARCHICAD ] Ajouter du lambris sur un mur
par Coulou Jeu 24 Oct 2024 - 10:43
» [ SKETCHUP généralité ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:13
» [ SKETCHUP tutos ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:11
» [ D5_RENDER] Petit exemple "hors sujet" ... D5
par Gaspard Hauser Mar 22 Oct 2024 - 19:59
» [ MATOS INFORM. ] [WINDOWS] Miniatures de prévisualisation pour les fichiers de modèle 3D au format .OBJ, .FBX, .STL, .3DS et +
par Gaspard Hauser Mar 22 Oct 2024 - 19:49
» [ SKETCHUP Layout ] Symboles Électriques sur Layout
par JDD Jeu 17 Oct 2024 - 9:44
» [ ARCHICAD ] gardes corps et profils complexe ?
par Christophe Fortineau Lun 14 Oct 2024 - 12:10
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - allansens - cinema 4D
par Allansens Sam 12 Oct 2024 - 13:53
» [ ARTLANTIS ] Ca donne envie !
par Gaspard Hauser Jeu 10 Oct 2024 - 10:00
» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par Coulou Jeu 10 Oct 2024 - 9:03
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - AK40Cess - Archicad-Twinmotion
par Coulou Mar 8 Oct 2024 - 11:53
» [ TWINMOTION ] Unreal Engine déménage sur Fab - Assets de Megascan
par JDD Lun 7 Oct 2024 - 21:52
» [ CHALLENGE ARCHITECTURE EXTERIEURE OU PAYSAGISTE ] Démarrage du challenge 2024 - les régles
par tenrev Jeu 3 Oct 2024 - 14:58
» [ ARCHICAD ] Cotation d'ouverture sans hauteur
par Titou Jeu 3 Oct 2024 - 11:21
par jerryvento Aujourd'hui à 9:01
» [ CHALLENGE 2024 ] résultats du challenge
par AK40Cess Hier à 13:27
» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Hier à 9:12
» [ SKETCHUP plugins ] une barre d’outils perso
par tenrev Lun 18 Nov 2024 - 15:05
» [ SKETCHUP généralité ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:47
» [ SKETCHUP généralité ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:46
» [ SKETCHUP tutos ] Orienter 1 Face, 1 Profil Normal (Perpendiculaire) à 1 Arête, 1 Trajectoire
par jerryvento Lun 18 Nov 2024 - 14:45
» [ SKETCHUP tutos ] Modéliser facilement 1 spirale en moins de 40 secondes
par jerryvento Lun 18 Nov 2024 - 14:44
» [ SKETCHUP tutos ] Modélise 1 Forme Hélicoïdale, en forme de spirale : main courante, rampe d'accès voitures...
par jerryvento Lun 18 Nov 2024 - 14:43
» ColorMaker par Didier Bur[ SKETCHUP plugins ]
par JDD Dim 17 Nov 2024 - 20:56
» [ ARCHICAD ] Plus de format *atl dans Archicad
par Coulou Jeu 14 Nov 2024 - 8:26
» [ SKETCHUP tutos ] Créer des Bibliothèques et des livres aléatoires Facilement (2 Méthodes!)
par tenrev Mar 12 Nov 2024 - 11:31
» [ CHALLENGE 2024 ] les images finales du challenge
par tenrev Lun 11 Nov 2024 - 15:35
» [ SKETCHUP composants dynamiques ] Formule IF
par Samuel MATHIEU Jeu 7 Nov 2024 - 21:12
» [ Challenge 2024] cHallenge archjtexture exterieur ou paysagiste-vick-sketchup-enscape
par vick Jeu 7 Nov 2024 - 10:23
» [ SKETCHUP vray ]
par tenrev Mar 5 Nov 2024 - 21:19
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste- Gaspard Hauser - Sketchup - D5 render
par tenrev Mar 5 Nov 2024 - 10:22
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - JDD - SketchUp - Enscape
par tenrev Mar 5 Nov 2024 - 10:10
» [ ARCHICAD ] Murs paramétriques
par Coulou Lun 28 Oct 2024 - 10:28
» [ SKETCHUP généralité ] Aide pour SKP 2017
par PEGASE Sam 26 Oct 2024 - 18:36
» [ ARCHICAD ] Ajouter du lambris sur un mur
par Coulou Jeu 24 Oct 2024 - 10:43
» [ SKETCHUP généralité ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:13
» [ SKETCHUP tutos ] 1 Citrouille à imprimer pour Halloween
par jerryvento Jeu 24 Oct 2024 - 8:11
» [ D5_RENDER] Petit exemple "hors sujet" ... D5
par Gaspard Hauser Mar 22 Oct 2024 - 19:59
» [ MATOS INFORM. ] [WINDOWS] Miniatures de prévisualisation pour les fichiers de modèle 3D au format .OBJ, .FBX, .STL, .3DS et +
par Gaspard Hauser Mar 22 Oct 2024 - 19:49
» [ SKETCHUP Layout ] Symboles Électriques sur Layout
par JDD Jeu 17 Oct 2024 - 9:44
» [ ARCHICAD ] gardes corps et profils complexe ?
par Christophe Fortineau Lun 14 Oct 2024 - 12:10
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - allansens - cinema 4D
par Allansens Sam 12 Oct 2024 - 13:53
» [ ARTLANTIS ] Ca donne envie !
par Gaspard Hauser Jeu 10 Oct 2024 - 10:00
» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par Coulou Jeu 10 Oct 2024 - 9:03
» [ CHALLENGE 2024 ] Challenge architecture extérieure ou paysagiste - AK40Cess - Archicad-Twinmotion
par Coulou Mar 8 Oct 2024 - 11:53
» [ TWINMOTION ] Unreal Engine déménage sur Fab - Assets de Megascan
par JDD Lun 7 Oct 2024 - 21:52
» [ CHALLENGE ARCHITECTURE EXTERIEURE OU PAYSAGISTE ] Démarrage du challenge 2024 - les régles
par tenrev Jeu 3 Oct 2024 - 14:58
» [ ARCHICAD ] Cotation d'ouverture sans hauteur
par Titou Jeu 3 Oct 2024 - 11:21
formulaire/diaporama
chaine sketchup.tv
Serveur Discord
[ Ruby ] Automatisation sketchup grace à excel
Page 2 sur 2 • Partagez
Page 2 sur 2 • 1, 2
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Ça marche, je regarde tout ça demain et je reviens vers toi
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Salut Samuel, j'ai regardé ton code et tout est ok, la lecture du fichier excel fonctionne et la fonction déplacer et cloner aussi.
Désolé j'ai mis un peu de temps à répondre mais je voulais bien tout regardée et être sur d'avoir bien tout compris.
Tu as rendu le code super clair avec tes annotations, je t'en remercie.
Je poste un lien ici qu m'a également bien aidé à comprendre : https://ruby-doc.org/docs/beginner-fr/xhtml/ch04.html
Voilà il me reste juste à modifier un peu le code pour cloner et déplacer plusieurs composant. D'ailleurs, lorsque la définition d'une fonction comporte une variable "component" est-ce que je peux utiliser entities[0] ou entities[1] lorsque j'appelle cette fonction pour effectuer ces opérations seulement sur le 1er composant ou sur le 2éme ?
Par exemple
Désolé j'ai mis un peu de temps à répondre mais je voulais bien tout regardée et être sur d'avoir bien tout compris.
Tu as rendu le code super clair avec tes annotations, je t'en remercie.
Je poste un lien ici qu m'a également bien aidé à comprendre : https://ruby-doc.org/docs/beginner-fr/xhtml/ch04.html
Voilà il me reste juste à modifier un peu le code pour cloner et déplacer plusieurs composant. D'ailleurs, lorsque la définition d'une fonction comporte une variable "component" est-ce que je peux utiliser entities[0] ou entities[1] lorsque j'appelle cette fonction pour effectuer ces opérations seulement sur le 1er composant ou sur le 2éme ?
Par exemple
- Code:
move_and_clone(entities[0],3)
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
mgsvinc a écrit:[...] j'ai regardé ton code et tout est ok, la lecture du fichier excel fonctionne et la fonction déplacer et cloner aussi.
C'est une bonne nouvelle !
mgsvinc a écrit:
Tu as rendu le code super clair avec tes annotations, je t'en remercie.
Ravi de t'avoir aidé !
mgsvinc a écrit:
[...] lorsque la définition d'une fonction comporte une variable "component" est-ce que je peux utiliser entities[0] ou entities[1] lorsque j'appelle cette fonction pour effectuer ces opérations seulement sur le 1er composant ou sur le 2éme ?
Oui, à partir du moment où tu passes en paramètre un objet de type Sketchup::ComponentInstance.
mgsvinc a écrit:
Par exemple
- Code:
move_and_clone(entities[0],3)
Ajoute un paramètre `component` dans la définition de la fonction et supprime la boucle `each`...
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Ok je vais faire ça.
Bonne soirée Samuel, encore merci
Bonne soirée Samuel, encore merci
[quote="mgsvinc"]
Je poste un lien ici qu m'a également bien aidé à comprendre : https://ruby-doc.org/docs/beginner-fr/xhtml/ch04.html[/code]
oky , il fait déja partie des liens postés depuis pas mal de temps sur cette page
https://www.biblio3d.com/t11077-sketchup-liens-utiles-pour-debuter-en-ruby
Je poste un lien ici qu m'a également bien aidé à comprendre : https://ruby-doc.org/docs/beginner-fr/xhtml/ch04.html[/code]
oky , il fait déja partie des liens postés depuis pas mal de temps sur cette page
https://www.biblio3d.com/t11077-sketchup-liens-utiles-pour-debuter-en-ruby
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
- DomixV.I.P.
- Date d'inscription : 13/02/2014
Nombre de messages : 894
Points : 1789
Localisation : Proche Dijon
Emploi : Dessinateur
Oula, ça donne mal à la tête votre truc.
Je reste admiratif des personnes qui aiment coder, on dirai que vous vous êtes bien trouvé.
Je reste admiratif des personnes qui aiment coder, on dirai que vous vous êtes bien trouvé.
-------------------------------------------------------------------------------------------------------------------------
Mes objets --> https://3dwarehouse.sketchup.com/user.html?id=u79250929-4d52-4b4a-8c4a-2109f9976ca8
Domix a écrit:Je reste admiratif des personnes qui aiment coder
+1 je suis admiratif également
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
tenrev a écrit:mgsvinc a écrit:
Je poste un lien ici qu m'a également bien aidé à comprendre : https://ruby-doc.org/docs/beginner-fr/xhtml/ch04.html[/code]
oky , il fait déja partie des liens postés depuis pas mal de temps sur cette page
https://www.biblio3d.com/t11077-sketchup-liens-utiles-pour-debuter-en-ruby
Ah ok, c'est peut-être là que je l'avais trouvé alors j'ai un dossier avec pas mal de marques pages, donc pour me souvenir d'où ils viennent...
mgsvinc a écrit:Ah ok, c'est peut-être là que je l'avais trouvé alors
certainement , c'est juste pour rendre à césar , ce qui a été posté par césar
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Bonsoir Samuel, je reviens une nouvelle fois vers toi car je n'arrive toujours pas à faire marcher le code sur des composants individuels.
J'ai testé pas mal de trucs, mais impossible de sélectionner le composant auquel je désire appliquer les fonction.
Voilà comment j'ai modifier le code :
et ensuite je tente d'appeler cette fonction ainsi :
Saurais tu où se situe mon erreur ?
J'ai testé pas mal de trucs, mais impossible de sélectionner le composant auquel je désire appliquer les fonction.
Voilà comment j'ai modifier le code :
- Code:
def move_and_clone(component, how_many)
model = Sketchup.active_model
entities = model.entities
definitions1 = model.definitions[0] #définition du 1er composant
definitions2 = model.definitions[1] #définition du 2éme composant
Sketchup.active_model.start_operation('Déplacer et cloner', true)
@component = component
how_many.times do
move_component(clone_component(component), @length)
end
Sketchup.active_model.commit_operation
# Note : Cette opération est annulable.
end
et ensuite je tente d'appeler cette fonction ainsi :
- Code:
ExcelComponents.new('test').move_and_clone(entities[0],3)
Saurais tu où se situe mon erreur ?
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
Erreur : Tu utilises une variable (`entities`) qui est définie dans un autre scope (celui de ta méthode `move_and_clone`). De plus, tu n'as pas besoin de `@component` : il y a déjà `component`.
Ce code de "lancement" devrait fonctionner. Tiens-moi au courant !
- Code:
class ExcelComponents
# ...
# Déplace et clone un composant SketchUp.
# en tenant compte de la longueur lue dans le fichier Excel.
#
# @param [Sketchup::ComponentInstance] component Composant.
# @param [Numeric] how_many Combien de fois ? Par défaut : 1.
#
# @return [Boolean] `true` en cas de succès, sinon `false`.
def move_and_clone(component, how_many)
Sketchup.active_model.start_operation('Déplacer et cloner', true)
how_many.times do
move_component(clone_component(component), @length)
end
Sketchup.active_model.commit_operation
# Note : Cette opération est annulable.
end
end
Ce code de "lancement" devrait fonctionner. Tiens-moi au courant !
- Code:
ExcelComponents.new('test').move_and_clone(Sketchup.active_model.entities[0], 3)
tu nous feras un petite présentation et un making of de ton plugin j'espère ?
bon courage a+
bon courage a+
-------------------------------------------------------------------------------------------------------------------------
je ne sais pas grand chose , mais le peu que je sache , je le partage/Salut Invité merci de consulter mon profil/PC fixe Rizen 9 3950 cg RTX3080-64 go de ram DDssd 1To/1 PC portable Lenovo 16'' w11 i7 32go-CG RTX3070 8go/1casque meta Quest 3/1 casque VR Occulus Rift /1 PC portable Dell sous Linux Ubuntu-1 pc portable HP sous chromebook/Raspberry Pi - Arduino / Modélisation :Sketchup-Rhino-Pconplanner-Rendu:Enscape-Keyshot-Unreal Engine-Twinmotion-Autres:Photoshop-Indesign-After Effect-Première pro-Intelligence artificielle -Chatgpt+-Midjourney-Suno-Elevenlabs-Canva
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
tenrev a écrit:tu nous feras un petite présentation et un making of de ton plugin j'espère ?
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
C'est bon la première modification que j'avais testé m'avais donné la même définition de fonction que toi, c'est lors de l'appel de la fonction que je pêchais.
J'entrai :
au lieu de :
En revanche, désormais toutes les copies du composant sont déplacé au même endroit et se superpose (auparavant lorsque j'appelai tous les composants, les copies s’espaçaient correctement entre-elles).
Tu pense que je doit testé un autre itérateur ? ou le problème vient d'autre part ?
J'entrai :
- Code:
ExcelComponents.new('test').move_and_clone(entities[0], 3)
au lieu de :
- Code:
ExcelComponents.new('test').move_and_clone(Sketchup.active_model.entities[0], 3)
En revanche, désormais toutes les copies du composant sont déplacé au même endroit et se superpose (auparavant lorsque j'appelai tous les composants, les copies s’espaçaient correctement entre-elles).
Tu pense que je doit testé un autre itérateur ? ou le problème vient d'autre part ?
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
Cela a changé la logique du code. Je te conseille de revenir à une version précédente et de réadapter.
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Bonjour , je reviens avec des nouvelles de mon code, le voici :
afin d'appeler ces fonction j'appelle une fonction situé dans un autre fichier ruby, le voici :
Les problèmes que je n'ai pas encore réussi à résoudre sont les suivants :
_ J'ai du créer plusieurs fonctions length_from_excel_file ce qui alourdi considérablement le code car le fichier excel est ouvert à chaque fois qu'une valeur doit être obtenu dans celui ci. J'avais écrit une fonction length_from_excel_file qui récupérait toutes les données, mais lorsque je les exploitées dans la fonction move_and_clone toutes les copies étaient déplacé au même endroit et ne comprend pas pourquoi.
_Dans la fonction move_and_clone, il y a une valeur @length4, cette valeur correspond au nombre de copies du composant et sers donc de limite à l'itérateur i. Le problème est que ça ne marche pas (j'ai un message d'erreur à cette ligne). J'avais également essayer cette fonction sous cette forme :
mais ici j'ai besoin que le how_many soit pris dans le fichier excel, j'appelais donc cette fonction avec ceci :
Hélas ça n'a pas marché non-plus, car cette valeur @length4 ne peut pas être appelé dans une fonction (ici visu) qui ne se trouve pas dans la classe class ExcelComponents. Je souhaite utilisé cette fonction visu, ainsi lorsque je veux utiliser la totalité du code, j'ai juste à taper visu dans la console ruby de sketchup.
Voilà si quelqu'un a des idées pour me faire avancer je suis preneur. Samuel si tu passes par-là
- Code:
# Import des dépendances.
require 'win32ole'
# TODO: Décrire les tenants et aboutissants de ce script.
class ExcelComponents
# Construit un objet de type `ExcelComponents`.
#
# @param [String] excel_file_path Chemin vers un fichier Excel.
#
# @example
#
# excel_components = ExcelComponents.new(
# 'C:\\Users\\vince\\Desktop\\fichiersrb\\dbvisuclient'
# )
#
# excel_components.move_and_clone(2)
def initialize(excel_file_path)
raise ArgumentError, '`excel_file_path` doit être une chaîne de caractères'\
unless excel_file_path.is_a?(String)
@excel_file_path = excel_file_path
begin
@length1 = length1_from_excel_file #Permet d'indiquer que la valeur va etre trouvé dans la fonction length1_from_excel_file
@length2 = length2_from_excel_file
@length3 = length3_from_excel_file
@length4 = length4_from_excel_file
rescue StandardError => _error
UI.messagebox("Impossible d'obtenir la longueur depuis le fichier Excel.")
# Attention : En cas d'erreur, une longueur par défaut est assignée (1 m).
@length1 = 1.m
@length2 = 1.m
@length3 = 1.m
@length4 = 1
end
end
# Obtient une longueur en centimètres depuis le fichier Excel.
#
# @return [Length] Une longueur convertie de cm vers inch.
def length1_from_excel_file
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Open(@excel_file_path)
worksheet = workbook.Worksheets(1)
length1 = worksheet.Range('A2').value
#length2 = worksheet.Range('B2').value
#length3 = worksheet.Range('C2').value
#length4 = worksheet.Range('D2').value
excel.Quit
length1.to_i.cm
#length2.to_i.cm
#length3.to_i.cm
#length4.to_i.cm
end
def length2_from_excel_file
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Open(@excel_file_path)
worksheet = workbook.Worksheets(1)
#length1 = worksheet.Range('A2').value
length2 = worksheet.Range('B2').value
#length3 = worksheet.Range('C2').value
#length4 = worksheet.Range('D2').value
excel.Quit
#length1.to_i.cm
length2.to_i.cm
#length3.to_i.cm
#length4.to_i.cm
end
def length3_from_excel_file
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Open(@excel_file_path)
worksheet = workbook.Worksheets(1)
#length1 = worksheet.Range('A2').value
#length2 = worksheet.Range('B2').value
length3 = worksheet.Range('C2').value
#length4 = worksheet.Range('D2').value
excel.Quit
#length1.to_i.cm
#length2.to_i.cm
length3.to_i.cm
#length4.to_i.cm
end
def length4_from_excel_file
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Open(@excel_file_path)
worksheet = workbook.Worksheets(1)
#length1 = worksheet.Range('A2').value
#length2 = worksheet.Range('B2').value
#length3 = worksheet.Range('C2').value
length4 = worksheet.Range('D2').value
excel.Quit
end
# Clone un composant SketchUp.
#
# @note Cette fonction est réutilisable dans d'autres scripts.
#
# @param [Sketchup::ComponentInstance] component Composant original.
#
# @return [Sketchup::ComponentInstance] Un composant-clone.
def clone_component(component)
Sketchup.active_model.entities.add_instance(component.definition, component.transformation)
# La transformation du composant-clone est relative à l'original.
end
# Déplace un composant SketchUp à une distance X.
#
# @note Cette fonction est réutilisable dans d'autres scripts.
#
# @param [Sketchup::ComponentInstance] component Composant.
# @param [Length] x_distance Distance dans l'axe X.
#
# @return [Boolean] `true` en cas de succès, `false` autrement.
def move_component(component, x_distance, y_distance, z_distance)
transformation_values = Geom::Transformation.new.to_a
transformation_values[-4] = x_distance #déplacement axe rouge
transformation_values[-3] = y_distance #déplacement axe vert
transformation_values[-2] = z_distance #déplacement axe vert
Sketchup.active_model.entities.transform_entities(
Geom::Transformation.new(transformation_values),
component)
end
# Déplace un composant SketchUp.
def move_component_1(component)
transformation_values = Geom::Transformation.new.to_a
transformation_values[-4] = @length1 #déplacement axe rouge
transformation_values[-3] = @length2 #déplacement axe vert
transformation_values[-2] = @length3 #déplacement axe vert
Sketchup.active_model.entities.transform_entities(
Geom::Transformation.new(transformation_values),
component)
end
# Déplace et clone un composant SketchUp.
# en tenant compte de la longueur lue dans le fichier Excel.
#
# @param [Sketchup::ComponentInstance] component Composant.
# @param [Numeric] how_many Combien de fois ? Par défaut : 1.
#
# @return [Boolean] `true` en cas de succès, sinon `false`.
def move_and_clone(component)
Sketchup.active_model.start_operation('Déplacer et cloner', true)
for i in 1..@length4 # permet de faire varier la distance de création des clones
move_component(clone_component(component), (i * @length1), 0, 0)
end
Sketchup.active_model.commit_operation
# Note : Cette opération est annulable.
end
end
afin d'appeler ces fonction j'appelle une fonction situé dans un autre fichier ruby, le voici :
- Code:
def visu
ExcelComponents.new('C:\Users\vince\Desktop\fichiersrb\dbvisuclient').move_component_1(Sketchup.active_model.entities[2])
ExcelComponents.new('C:\Users\vince\Desktop\fichiersrb\dbvisuclient').move_and_clone(Sketchup.active_model.entities[2])
end
Les problèmes que je n'ai pas encore réussi à résoudre sont les suivants :
_ J'ai du créer plusieurs fonctions length_from_excel_file ce qui alourdi considérablement le code car le fichier excel est ouvert à chaque fois qu'une valeur doit être obtenu dans celui ci. J'avais écrit une fonction length_from_excel_file qui récupérait toutes les données, mais lorsque je les exploitées dans la fonction move_and_clone toutes les copies étaient déplacé au même endroit et ne comprend pas pourquoi.
_Dans la fonction move_and_clone, il y a une valeur @length4, cette valeur correspond au nombre de copies du composant et sers donc de limite à l'itérateur i. Le problème est que ça ne marche pas (j'ai un message d'erreur à cette ligne). J'avais également essayer cette fonction sous cette forme :
- Code:
def move_and_clone(component, how_many)
Sketchup.active_model.start_operation('Déplacer et cloner', true)
for i in 1..how_many
move_component(clone_component(component), (i * @length1), 0, 0)
end
mais ici j'ai besoin que le how_many soit pris dans le fichier excel, j'appelais donc cette fonction avec ceci :
- Code:
def visu
ExcelComponents.new('C:\Users\vince\Desktop\fichiersrb\dbvisuclient').move_component_1(Sketchup.active_model.entities[2])
ExcelComponents.new('C:\Users\vince\Desktop\fichiersrb\dbvisuclient').move_and_clone(Sketchup.active_model.entities[2], @length4)
end
Hélas ça n'a pas marché non-plus, car cette valeur @length4 ne peut pas être appelé dans une fonction (ici visu) qui ne se trouve pas dans la classe class ExcelComponents. Je souhaite utilisé cette fonction visu, ainsi lorsque je veux utiliser la totalité du code, j'ai juste à taper visu dans la console ruby de sketchup.
Voilà si quelqu'un a des idées pour me faire avancer je suis preneur. Samuel si tu passes par-là
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
Code à placer dans le fichier excel_components.rb :
Code à exécuter dans la console :
Résultat. Les paramètres (Longueurs et Nombre de clones) sont lus depuis le fichier Excel :
- Code:
# Import des dépendances.
require 'win32ole'
# TODO: Décrire les tenants et aboutissants.
class ExcelComponents
# Construit un objet de type `ExcelComponents`.
#
# @param [String] excel_file_path Chemin vers un fichier Excel.
#
# @example
#
# ExcelComponents.new(
# 'C:\\Users\\vince\\Desktop\\fichiersrb\\dbvisuclient'
# ).move_and_clone(Sketchup.active_model.entities[0])
def initialize(excel_file_path)
raise ArgumentError, '`excel_file_path` doit être une chaîne de caractères'\
unless excel_file_path.is_a?(String)
begin
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.Workbooks.Open(excel_file_path)
worksheet = workbook.Worksheets(1)
# Extraction des données depuis le fichier Excel.
@length1 = worksheet.Range('A2').value.to_i.cm
@length2 = worksheet.Range('B2').value.to_i.cm
@length3 = worksheet.Range('C2').value.to_i.cm
@how_many = worksheet.Range('D2').value.to_i
excel.Quit
rescue StandardError => _error
UI.messagebox("Impossible d'extraire les données depuis le fichier Excel.")
# Attention : En cas de problème, des valeurs par défaut sont assignées !
@length1 = 1.m
@length2 = 1.m
@length3 = 1.m
@how_many = 3
end
end
# Clone un composant SketchUp.
#
# @param [Sketchup::ComponentInstance] component Composant original.
#
# @return [Sketchup::ComponentInstance] Un composant-clone.
def clone_component(component)
Sketchup.active_model.entities.add_instance(component.definition, component.transformation)
# La transformation du composant-clone est relative à l'original.
end
# Déplace un composant SketchUp
# en tenant compte des données lues dans le fichier Excel.
#
# @param [Sketchup::ComponentInstance] component Composant.
#
# @return [Boolean] `true` en cas de succès, `false` autrement.
def move_component(component)
transformation_values = Geom::Transformation.new.to_a
transformation_values[-4] = @length1 # Déplacement axe rouge.
transformation_values[-3] = @length2 # Déplacement axe vert.
transformation_values[-2] = @length3 # Déplacement axe bleu.
Sketchup.active_model.entities.transform_entities(
Geom::Transformation.new(transformation_values),
component
)
# On sauvegarde le dernier composant déplacé par cette fonction.
@last_moved_component = component
end
# Déplace et clone un composant SketchUp
# en tenant compte des données lues dans le fichier Excel.
#
# @param [Sketchup::ComponentInstance] component Composant.
#
# @return [Boolean] `true` en cas de succès, sinon `false`.
def move_and_clone(component)
Sketchup.active_model.start_operation('Déplacer et cloner', true)
@how_many.times do
# S'il existe : alors le dernier composant déplacé est la référence.
component = @last_moved_component unless @last_moved_component.nil?
move_component(clone_component(component))
end
Sketchup.active_model.commit_operation
# Note : Cette opération est annulable.
end
end
Code à exécuter dans la console :
- Code:
ExcelComponents.new(
'C:\\Users\\vince\\Desktop\\fichiersrb\\dbvisuclient'
).move_and_clone(Sketchup.active_model.entities[0])
Résultat. Les paramètres (Longueurs et Nombre de clones) sont lus depuis le fichier Excel :
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Ah super, merci beaucoup Samuel. C'est bien toi le boss du Ruby
Tout marche parfaitement, je vais essayer de comprendre pourquoi mon code ne marchait pas (j'avais essayer un truc très proche de ce que tu avais fait).
Je reviens vers toi si j'ai encore quelques questions qui me taraude, mais je pense que ça devrait aller
Tout marche parfaitement, je vais essayer de comprendre pourquoi mon code ne marchait pas (j'avais essayer un truc très proche de ce que tu avais fait).
Je reviens vers toi si j'ai encore quelques questions qui me taraude, mais je pense que ça devrait aller
- Samuel TalletV.I.P.
- Date d'inscription : 15/04/2018
Nombre de messages : 873
Points : 2465
Age : 38
Localisation : Marseille, France
Emploi : Développeur Web
mgsvinc a écrit:[...] je vais essayer de comprendre pourquoi mon code ne marchait pas (j'avais essayer un truc très proche de ce que tu avais fait).
Tu as confondu variables locales et variables d'instance (ces dernières commencent par un signe @)...
- mgsvincApprenti(e)
- Date d'inscription : 01/02/2018
Nombre de messages : 22
Points : 72
Ok je vais étudier ça
- Contenu sponsorisé
Page 2 sur 2 • 1, 2
Sujets similaires
» [ SKETCHUP ruby ] Traduction du livre Automatic Sketchup: Creating 3-D Models in Ruby
» [ SKETCHUP ruby ] Ruby sketchup et chatgpt
» [ SKETCHUP composants dynamiques ] Excel to Sketchup
» [ SKETCHUP ruby ] Peux-ton réaliser des enregistrement de macro dans SketchUp ?
» [ SKETCHUP ] Tuto(s) Ruby pour SketchUp depuis le début...
» [ SKETCHUP ruby ] Ruby sketchup et chatgpt
» [ SKETCHUP composants dynamiques ] Excel to Sketchup
» [ SKETCHUP ruby ] Peux-ton réaliser des enregistrement de macro dans SketchUp ?
» [ SKETCHUP ] Tuto(s) Ruby pour SketchUp depuis le début...
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 2 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum