Ton bloc notes
Derniers sujets
» [ SKETCHUP plugins ] Les bon plans Black Friday 2024
par simjoubert Hier à 16:19
» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par simjoubert Hier à 16:04
» [ SKETCHUP généralité ] Tête de pilastre
par jerryvento Hier à 8:52
» [ CHALLENGE 2024 ] résultats du challenge
par Allansens Hier à 8:42
» [ ARCHICAD ] Paramétrage des coupes sur Archicad
par AK40Cess Jeu 21 Nov 2024 - 14:12
» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Mer 20 Nov 2024 - 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
» [ 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
par simjoubert Hier à 16:19
» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par simjoubert Hier à 16:04
» [ SKETCHUP généralité ] Tête de pilastre
par jerryvento Hier à 8:52
» [ CHALLENGE 2024 ] résultats du challenge
par Allansens Hier à 8:42
» [ ARCHICAD ] Paramétrage des coupes sur Archicad
par AK40Cess Jeu 21 Nov 2024 - 14:12
» [ FORUM ] astuce pour insérer facilement un tableau sur le forum
par tenrev Mer 20 Nov 2024 - 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
» [ 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
formulaire/diaporama
chaine sketchup.tv
Serveur Discord
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit
Page 1 sur 2 • Partagez
Page 1 sur 2 • 1, 2
Re Ga,
Pour faire suite à notre conversation, pour mettre à l'échelle ton composant à l'importation il faut que tu rajoutes ces lignes là a ton plugin
A ajouter
Sur la premiere ligne, tu crées une transformation.scaling (mise à l'échelle) etir_comp avec ici des valeurs fixes 1.0 à l'indentique 2.0 tu doubles tu peux mettre des valeurs négatives pour inverser le sens de ton composant tu peux essayer par exemple 1.0, -2.0, 1.0. Ensuite tu pourras les remplacer par tes variables. mais testes d'abord ton scaling.
Ensuite sur la deuxième ligne tu appliques la transformation à instance (ton composant importé).
Ton plugin avec l'ajout des deux lignes
Je te cherche les éléments pour déterminer la longueur de ton gabarit et celle de ton composant et je te les communique
Ca avance sérieux
@+
Pour faire suite à notre conversation, pour mettre à l'échelle ton composant à l'importation il faut que tu rajoutes ces lignes là a ton plugin
A ajouter
- Code:
etir_comp = Geom::Transformation.scaling 1.0, 2.0, 1.0
instance.transform! (etir_comp)
Sur la premiere ligne, tu crées une transformation.scaling (mise à l'échelle) etir_comp avec ici des valeurs fixes 1.0 à l'indentique 2.0 tu doubles tu peux mettre des valeurs négatives pour inverser le sens de ton composant tu peux essayer par exemple 1.0, -2.0, 1.0. Ensuite tu pourras les remplacer par tes variables. mais testes d'abord ton scaling.
Ensuite sur la deuxième ligne tu appliques la transformation à instance (ton composant importé).
Ton plugin avec l'ajout des deux lignes
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
path = Sketchup.find_support_file "Chevrons.skp", "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
etir_comp = Geom::Transformation.scaling 1.0, 2.0, 1.0
instance.transform! (etir_comp)
point1 = Geom::Point3d.new verticies[1] # debut import composant au point 2
trans = Geom::Transformation.new point1
instance = entities.add_instance componentdefinition, trans
end
if( not file_loaded?("zzz.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposantici") { routine }
end
file_loaded("zzz.rb")
end
Je te cherche les éléments pour déterminer la longueur de ton gabarit et celle de ton composant et je te les communique
Ca avance sérieux
@+
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
J'ai modifier quelque ligne car mon composant est sur l'axe X puis j'ai supprimé l'insertion du 2 éme composant car celui-ci n'a plus raison d'être
pour la longueur je m'était intéresse a celle-ci d'API LatLong.longitude LatLong.longitude mais bon c'est surement pour ça que sa ne marché pas
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
path = Sketchup.find_support_file "Chevrons.skp", "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
etir_comp = Geom::Transformation.scaling 2, 1, 1
instance.transform! (etir_comp)
point1 = Geom::Point3d.new verticies[1] # debut import composant au point 2
end
if( not file_loaded?("zzz.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposantici") { routine }
end
file_loaded("zzz.rb")
end
pour la longueur je m'était intéresse a celle-ci d'API LatLong.longitude LatLong.longitude mais bon c'est surement pour ça que sa ne marché pas
Je viens de tester ca marche nickel
tu peux supprimer cette ligne elle ne sert plus à rien :
Arrives-tu à derterminer la longueur de ton gabarit?
Avec LatLong.longitude tu partais à l'Ouest :icon_wink:
@+
tu peux supprimer cette ligne elle ne sert plus à rien :
- Code:
point1 = Geom::Point3d.new verticies[1] # debut import composant au point 2
Arrives-tu à derterminer la longueur de ton gabarit?
Avec LatLong.longitude tu partais à l'Ouest :icon_wink:
@+
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
J'ai essayé ça sans sucés , mais j'y réfléchis
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
path = Sketchup.find_support_file "Chevrons.skp", "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
edge =selection
length = edge.length
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
etir_comp = Geom::Transformation.scaling length, 1, 1
instance.transform! (etir_comp)
end
if( not file_loaded?("zzz.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposantici") { routine }
end
file_loaded("zzz.rb")
end
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Je sais que ce n'ai pas ça , mais pourquoi l'échelle du composant n'est pas égale a la longueur de ma ligne ?
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
path = Sketchup.find_support_file "Chevrons.skp", "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
edge = selection[0]
length = edge.length
longueur = lengh0.value
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
etir_comp = Geom::Transformation.scaling longueur, 1, 1
instance.transform! (etir_comp)
end
if( not file_loaded?("zzz.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposantici") { routine }
end
file_loaded("zzz.rb")
end
Les valeurs du scalling sont des coefficients, là tu multiplies la longueur de ton composant par la longueur de ton segment, c'est pour cela qu'il aussi determiner la longueur de ton composant.
Le calcul est le suivant : coefficient = gabarit / composant et ca marche meme si le gabarit est plus grand que le composant, il va te le réduire
Le calcul est le suivant : coefficient = gabarit / composant et ca marche meme si le gabarit est plus grand que le composant, il va te le réduire
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Oui oui je suis d'accord mais j'y vais par étape j'essaie déjas d'affecter une variable a mon échelle .
A vrais dire je crois que c'était la seule chose que je savais dans ce script , les maths et la géométrie c'est comme toi avec la programmation d'un script pour sketchup "je suis au top"Le calcul est le suivant : coefficient = gabarit / composant et ça marche mémé si le gabarit est plus grand que le composant, il va te le réduire
Il y a une erreur
Il faut écrire
Tu peux rajouter la commande UI.messagebox, pour controler ta variable gabarit après tu peux la supprimer
- Code:
length = edge.length
longueur = lengh0.value
Il faut écrire
- Code:
gabarit = edge.length
UI.messagebox gabarit
Tu peux rajouter la commande UI.messagebox, pour controler ta variable gabarit après tu peux la supprimer
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Je suis vraiment tros bête ................Oh la honte
ga a écrit:Je suis vraiment tros bête ................Oh la honte
Il y a franchement pas de honte à débuter je préfère 100 fois quelqu'un qui demande quand il n'a pas capté, plutot qu'un snobeur et Dieu sait si il y en a!!!
Sinon en début de script tu as déjà defini la variable edge
edge = selection[0]
ce n'est pas nécessaire de le faire une deuxième fois
Tu as pu lire dans la messagebox la longueur de ton arête?
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Oui çà marche du tonnerre .
maintenant j'essaie d'adapter BoundingBox.height a mon composant .
J'ai beaucoup de mal à comprendre leur explication sur ce lien
maintenant j'essaie d'adapter BoundingBox.height a mon composant .
J'ai beaucoup de mal à comprendre leur explication sur ce lien
1°) il faut mettre en place cette commande après avoir importé ton composant et avant ton "transformation.scaling" logique...
2°) Ca doit te donner une ligne du style :
ta_variable = ton_composant.bounds.height
UI.messagebox ta_variable # pour contrôle à supprimer après ton test
ensuite le calcul de ton_coefficient
2°) Ca doit te donner une ligne du style :
ta_variable = ton_composant.bounds.height
UI.messagebox ta_variable # pour contrôle à supprimer après ton test
ensuite le calcul de ton_coefficient
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Bonjour à tous
Après une bonne nuit de sommeille j'y suis enfin arrivé voici le code :
Ceci est du a la ligne : etir_comp = Geom::Transformation.scaling coefficient, 1, 1
Après une bonne nuit de sommeille j'y suis enfin arrivé voici le code :
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
path = Sketchup.find_support_file "Chevrons.skp", "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
gabarit = edge.length
longueur_composant =componentdefinition .bounds.width
coefficient = gabarit / longueur_composant
etir_comp = Geom::Transformation.scaling coefficient, 1, 1
instance.transform! (etir_comp)
end
if( not file_loaded?("zzz.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposantici") { routine }
end
file_loaded("zzz.rb")
end
Ceci est du a la ligne : etir_comp = Geom::Transformation.scaling coefficient, 1, 1
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Si l'on met la valeur du coefficient à 3 le composant s'insère au "début de la ligne + (la distance entre l'axe y d'origine et le début de la ligne * le coéfficient )"
Une idée ou j'ai pu met planté ?
Une idée ou j'ai pu met planté ?
ga a écrit:Si l'on met la valeur du coefficient à 3 le composant s'insère au "début de la ligne + (la distance entre l'axe y d'origine et le début de la ligne * le coéfficient )"
Une idée ou j'ai pu met planté ?
Oui j'ai vu ça, le problème se pose si ton gabarit démarre à l'origine et que ton composant est en réalité un modèle sauvegardé
Je ne suis pas sur mais je vais contrôler
- Pour te faciliter la compréhension tu vas d'abord dans le menu fenetre\infos sur le modele\composant et tu coches afficher les axes du composant et vas tout de suite comprendre, ton composant est inséré par rapport à ce repérage.
- je suppose que le composant que tu utilises est enfin de compte un modele que tu as sauvegardé??
Si c'est le cas tu ouvres ton modèle, sélectionnes ton composant contrôle où se trouve le point d'origine des axes de ton composant (en faisant par exemple modifier composant), il faut que le point d'origine corresponde au point d'insertion souhaité. Sinon tu éclates ton groupe ou ton composant. Tu sélectionnes à nouveau les éléments de ton chevron, clic droit créer composant et la tu fais attention de bien placer tes axes
Mais il faut aussi fouiller de coté là transformation.origin
Je fais des essais et je te tiens au courant, mais ce qui est sur il faut que ton composant soit un "vrai composant"
@+
Dernière édition par c.plassais le Sam 30 Jan 2010 - 8:25, édité 1 fois
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Pourtant les axes de mon composant sont bien placés non ?
Ok, donc ton garabit est dans le sens de l'axe rouge?
il faudra par la suite penser à la situation où le gabarit n'est pas dans le sens de l'axe longitudinal du composant, il faudra determiner le gabarit comme vecteur pour l'insertion et l'étirement du composant
Il faut que le point d'intersion du composant (point de départ de la ligne) devienne temporairement le point ORIGIN
A tout
il faudra par la suite penser à la situation où le gabarit n'est pas dans le sens de l'axe longitudinal du composant, il faudra determiner le gabarit comme vecteur pour l'insertion et l'étirement du composant
Il faut que le point d'intersion du composant (point de départ de la ligne) devienne temporairement le point ORIGIN
A tout
C'est plus simple que ça et tu avais raison la réponse pour le point de départ est avec transformation.scaling ou tu peux déterminer le point de départ du scaling
Le point de départ étant le point de départ du ton gabarit
Donc pas de ligne à ajouter juste une ligne à légerement modifier
Je viens de tester ca fonctionne
Le point de départ étant le point de départ du ton gabarit
Donc pas de ligne à ajouter juste une ligne à légerement modifier
Je viens de tester ca fonctionne
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Saluuuuttttt
C'est un 4 éme argument qu'il manqué ce qui donne
Code complet :
Et aussi pouvoir changer de composant par ce qu'il n'y a pas que des chevrons dans la vie il y a des pannes , des fermes , de la volige etc ...........hi hi hi :icon_wink:
C'est un 4 éme argument qu'il manqué ce qui donne
- Code:
etir_comp = Geom::Transformation.scaling point,coefficient,1,1
Code complet :
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
path = Sketchup.find_support_file "Chevrons.skp", "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
if selection.length > 1
UI.messagebox("Selectionner une seule ligne SVP.")
return nil
end
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
gabarit = edge.length
longueur_composant =componentdefinition .bounds.width
coefficient = gabarit / longueur_composant
etir_comp = Geom::Transformation.scaling point,coefficient,1,1
instance.transform! (etir_comp)
end
if( not file_loaded?("Ligne/Composant.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposant") { routine }
end
file_loaded("Ligne/Composant.rb")
end
Et aussi pouvoir changer de composant par ce qu'il n'y a pas que des chevrons dans la vie il y a des pannes , des fermes , de la volige etc ...........hi hi hi :icon_wink:
Il marche nickel
Ca y est tu as fini de cochonné
Je vais chercher en même temps que toi, je viens de tester ton script, mon chevron est dans le sens de l'axe bleu du coup mon chevron est plus large que long il faut peut-être regarder de ce coté là transformation.rotation en determinant l'axe longitudinal du composant et calculer son l'angle par rapport au gabarit.
Pour les composants cela ne doit pas être trop compliqué, scruté le repertoire perso et proposer une liste
Il faudra aussi que tu prevois une boucle ou une copie multiple pour la conception du solivage d'un plancher par exemple
Ton contrôle fonctionne bien par contre il faudrait la même chose lorsque rien n'est sélectionnée
De selectionner plusieurs lignes cela peut te permettre aussi une insertion multiple, il suffit de faire une boucle en fonction du nombre de lignes sélectionnées
@+
Christophe
Ca y est tu as fini de cochonné
Je vais chercher en même temps que toi, je viens de tester ton script, mon chevron est dans le sens de l'axe bleu du coup mon chevron est plus large que long il faut peut-être regarder de ce coté là transformation.rotation en determinant l'axe longitudinal du composant et calculer son l'angle par rapport au gabarit.
Pour les composants cela ne doit pas être trop compliqué, scruté le repertoire perso et proposer une liste
Il faudra aussi que tu prevois une boucle ou une copie multiple pour la conception du solivage d'un plancher par exemple
Ton contrôle fonctionne bien par contre il faudrait la même chose lorsque rien n'est sélectionnée
De selectionner plusieurs lignes cela peut te permettre aussi une insertion multiple, il suffit de faire une boucle en fonction du nombre de lignes sélectionnées
@+
Christophe
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Je suis sur le problème "Quel composant voulez vous insérer ?" j'y suis presque il me faut plus que j'arrive à récupérer la sélection puis la mettre dans une variable et le tour est joué ha ha .....
- gaMoulin à parole
- Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier
Salut .........
Voici le nouveau script amélioré :
Vous avez le choix du composant à insérer , par contre je ne suis pas encore arrivé a afficher le dossier composant puis faire le choix dans ce dernier , donc vous pouvez insérer que les composants qui sont inscrit dans le script , pour moi ca me va mais pour un autre utilisateur il va falloir qu'il inscrive le nom de ces composants sur cette ligne :
voici le code non définitif (Beta):
Voici le nouveau script amélioré :
Vous avez le choix du composant à insérer , par contre je ne suis pas encore arrivé a afficher le dossier composant puis faire le choix dans ce dernier , donc vous pouvez insérer que les composants qui sont inscrit dans le script , pour moi ca me va mais pour un autre utilisateur il va falloir qu'il inscrive le nom de ces composants sur cette ligne :
- Code:
list = [ "Chevrons.skp|Ferme.skp|Demi ferme.skp" ]
- Code:
list = [ "pla pla pla.skp|truc truc.skp|sac a caca.skp" ]
voici le code non définitif (Beta):
- Code:
def routine
model = Sketchup.active_model
entities = model.active_entities
definitions = model.definitions
prompts = ["Quel composant voulez vous insérer ?"]
defaults = ["Chevrons.skp"]
list = [ "Chevrons.skp|Ferme.skp|Demi ferme.skp" ]
results = UI.inputbox prompts, defaults, list, "Choix du composant"
results = results.to_s
path = Sketchup.find_support_file (results), "Components/Perso/"
componentdefinition = definitions.load path
selection = model.selection
if selection.length > 1
UI.messagebox("Selectionner une seule ligne SVP.")
return nil
end
edge = selection[0] # Récupère la sélection dans la variable edge il faudra faire un bouclage si tu veux l'appliquer à des sélections multiples et mettre un controle de validité
verticies = edge.vertices # Récupère les sommets de edge et les stocks dans un tableau
vertex0 = verticies[0] # affecte le sommet position [0] du tableau verticies à la variable vertex0
position = vertex0.position # determine les coordonnées de ton point n°1
vertex1 = verticies[1] # affecte le sommet position [1] du tableau verticies à la variable vertex1
position = vertex1.position # determine les coordonnées de ton point n°2
point = Geom::Point3d.new verticies[0] # ici séquence d'importation j'itère deux fois la même chose pour le point 1 et 2, on peut aussi créer un bouclage si + de points
trans = Geom::Transformation.new point
instance = entities.add_instance componentdefinition, trans
gabarit = edge.length
longueur_composant =componentdefinition .bounds.width
coefficient = gabarit / longueur_composant
etir_comp = Geom::Transformation.scaling point,coefficient,1,1
instance.transform! (etir_comp)
end
if( not file_loaded?("Ligne/Composant.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Insérer uncomposant") { routine }
end
file_loaded("Ligne/Composant.rb")
end
Ca prend tournure
Je galère toujours avec la rotation du composant, quelques pistes qui ne sont pas forcément les bonnes
Pour déterminer le vecteur entre deux points vector_to
Pour déterminer l'angle entre deux vecteurs angle_between
Pour la rotation Transformation.rotation
Bon courage
Je galère toujours avec la rotation du composant, quelques pistes qui ne sont pas forcément les bonnes
Pour déterminer le vecteur entre deux points vector_to
Pour déterminer l'angle entre deux vecteurs angle_between
Pour la rotation Transformation.rotation
Bon courage
- Contenu sponsorisé
Page 1 sur 2 • 1, 2
Sujets similaires
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum