Ton bloc notes
Derniers sujets
» [ SKETCHUP généralité ] sortie officielle de sketchup 2024
par Rascal Aujourd'hui à 10:31
» [ ARTLANTIS ] Problème origine se déplace
par loic46 Hier à 22:28
» [ SKETCHUP plugins ] Vms_up
par Rascal Hier à 14:41
» [ SKETCHUP vray ]
par furax49 Mer 17 Avr 2024 - 17:20
» [ SKETCHUP objets ] aquarium
par JDD Lun 15 Avr 2024 - 22:20
» [ ARCHICAD ] raccourci clavier
par VertiKal Ven 12 Avr 2024 - 17:47
» [ ARCHICAD ] Zone - Menu déroulant
par Christophe Fortineau Jeu 11 Avr 2024 - 19:49
» [ MATOS INFORM. ] LICENCES ARCHICAD
par yannickniort Jeu 11 Avr 2024 - 15:00
» [ SKETCHUP généralité ] Servimg Premium pour tous les membres
par tenrev Jeu 11 Avr 2024 - 14:31
» [ SKETCHUP plugins ] Move it
par TF3 Mer 10 Avr 2024 - 10:23
» [ SKETCHUP plugins ] curic 2D export
par tenrev Mar 9 Avr 2024 - 17:41
» [ SKETCHUP plugins ] profil builder 4 est disponible
par furax49 Mar 9 Avr 2024 - 17:00
» [ ARCHICAD ] Torsion sur poteaux
par Ti Pack Mar 9 Avr 2024 - 14:59
» [ PRESENTATION ]
par tenrev Lun 8 Avr 2024 - 8:22
» [ TWINMOTION ] bug d'affichage des textures avec le path tracer
par Gaspard Hauser Ven 5 Avr 2024 - 12:53
» [ TWINMOTION ] eGPU / ralentissement Twinmotion important
par TF3 Mer 3 Avr 2024 - 9:11
» [ TWINMOTION ] twinmotion installée deux fois?
par tenrev Mer 3 Avr 2024 - 8:58
» [ INTELLIGENCE ARTIFICIELLE ] Joyeuses Paques avec sketchup.... diffusion
par tenrev Dim 31 Mar 2024 - 16:32
» [ INTELLIGENCE ARTIFICIELLE ] quelques vidéo de mes tests IA
par simjoubert Ven 29 Mar 2024 - 19:16
» [ SKETCHUP généralité ] Interface réinitialisée totalement suite connexion Trimble
par Shakna Ven 29 Mar 2024 - 15:04
» [ SKETCHUP LIVE COMPONENT ] Importer une liste de points dans son graphe via un input texte
par tenrev Jeu 28 Mar 2024 - 13:30
» [ ARCHICAD-OBJETS GDL ] Sortie de toit TCP (Poujoulat)
par BoTof Lun 25 Mar 2024 - 9:12
» [ SKETCHUP LIVE COMPONENT ] besoin de tuyaux sur les textures random
par tenrev Sam 23 Mar 2024 - 10:35
» [ SKETCHUP composants dynamiques ] Copies de copies
par Manutio Ven 22 Mar 2024 - 12:21
» [ SKETCHUP plugins ] plugin pour les textes
par vick Ven 22 Mar 2024 - 10:34
» [ SKETCHUP généralité ] SÉLECTIONNER - Tuto 4/4 - 2ème TECHNIQUE INÉDITE
par jerryvento Jeu 21 Mar 2024 - 9:08
» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 4/4 - 2ème TECHNIQUE INÉDITE
par jerryvento Jeu 21 Mar 2024 - 9:07
» [ KEYSHOT ] plugin sketchup
par tenrev Mer 20 Mar 2024 - 8:26
» [ SKETCHUP LIVE COMPONENT ] rendre visible ou invisible un paramètre utilisateur selon des conditions ?
par simjoubert Mar 19 Mar 2024 - 15:38
» [ PRESENTATION ] Manutio
par Manutio Lun 18 Mar 2024 - 9:21
» [ ARTLANTIS ] Ca donne envie !
par fraid Ven 15 Mar 2024 - 7:44
» [ SKETCHUP généralité ] SÉLECTIONNER - Tuto 3/4 - 1ère TECHNIQUE INÉDITE
par JDD Mer 13 Mar 2024 - 10:39
» [ SKETCHUP plugins ] SketchUp et Menuiserie : Rencontre avec Artwood
par art wood concept Mer 13 Mar 2024 - 9:54
» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 3/4 - 1ère TECHNIQUE INÉDITE
par jerryvento Mar 12 Mar 2024 - 8:48
» [ SKETCHUP LIVE COMPONENT ] table avec chaises
par tenrev Mar 12 Mar 2024 - 8:46
par Rascal Aujourd'hui à 10:31
» [ ARTLANTIS ] Problème origine se déplace
par loic46 Hier à 22:28
» [ SKETCHUP plugins ] Vms_up
par Rascal Hier à 14:41
» [ SKETCHUP vray ]
par furax49 Mer 17 Avr 2024 - 17:20
» [ SKETCHUP objets ] aquarium
par JDD Lun 15 Avr 2024 - 22:20
» [ ARCHICAD ] raccourci clavier
par VertiKal Ven 12 Avr 2024 - 17:47
» [ ARCHICAD ] Zone - Menu déroulant
par Christophe Fortineau Jeu 11 Avr 2024 - 19:49
» [ MATOS INFORM. ] LICENCES ARCHICAD
par yannickniort Jeu 11 Avr 2024 - 15:00
» [ SKETCHUP généralité ] Servimg Premium pour tous les membres
par tenrev Jeu 11 Avr 2024 - 14:31
» [ SKETCHUP plugins ] Move it
par TF3 Mer 10 Avr 2024 - 10:23
» [ SKETCHUP plugins ] curic 2D export
par tenrev Mar 9 Avr 2024 - 17:41
» [ SKETCHUP plugins ] profil builder 4 est disponible
par furax49 Mar 9 Avr 2024 - 17:00
» [ ARCHICAD ] Torsion sur poteaux
par Ti Pack Mar 9 Avr 2024 - 14:59
» [ PRESENTATION ]
par tenrev Lun 8 Avr 2024 - 8:22
» [ TWINMOTION ] bug d'affichage des textures avec le path tracer
par Gaspard Hauser Ven 5 Avr 2024 - 12:53
» [ TWINMOTION ] eGPU / ralentissement Twinmotion important
par TF3 Mer 3 Avr 2024 - 9:11
» [ TWINMOTION ] twinmotion installée deux fois?
par tenrev Mer 3 Avr 2024 - 8:58
» [ INTELLIGENCE ARTIFICIELLE ] Joyeuses Paques avec sketchup.... diffusion
par tenrev Dim 31 Mar 2024 - 16:32
» [ INTELLIGENCE ARTIFICIELLE ] quelques vidéo de mes tests IA
par simjoubert Ven 29 Mar 2024 - 19:16
» [ SKETCHUP généralité ] Interface réinitialisée totalement suite connexion Trimble
par Shakna Ven 29 Mar 2024 - 15:04
» [ SKETCHUP LIVE COMPONENT ] Importer une liste de points dans son graphe via un input texte
par tenrev Jeu 28 Mar 2024 - 13:30
» [ ARCHICAD-OBJETS GDL ] Sortie de toit TCP (Poujoulat)
par BoTof Lun 25 Mar 2024 - 9:12
» [ SKETCHUP LIVE COMPONENT ] besoin de tuyaux sur les textures random
par tenrev Sam 23 Mar 2024 - 10:35
» [ SKETCHUP composants dynamiques ] Copies de copies
par Manutio Ven 22 Mar 2024 - 12:21
» [ SKETCHUP plugins ] plugin pour les textes
par vick Ven 22 Mar 2024 - 10:34
» [ SKETCHUP généralité ] SÉLECTIONNER - Tuto 4/4 - 2ème TECHNIQUE INÉDITE
par jerryvento Jeu 21 Mar 2024 - 9:08
» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 4/4 - 2ème TECHNIQUE INÉDITE
par jerryvento Jeu 21 Mar 2024 - 9:07
» [ KEYSHOT ] plugin sketchup
par tenrev Mer 20 Mar 2024 - 8:26
» [ SKETCHUP LIVE COMPONENT ] rendre visible ou invisible un paramètre utilisateur selon des conditions ?
par simjoubert Mar 19 Mar 2024 - 15:38
» [ PRESENTATION ] Manutio
par Manutio Lun 18 Mar 2024 - 9:21
» [ ARTLANTIS ] Ca donne envie !
par fraid Ven 15 Mar 2024 - 7:44
» [ SKETCHUP généralité ] SÉLECTIONNER - Tuto 3/4 - 1ère TECHNIQUE INÉDITE
par JDD Mer 13 Mar 2024 - 10:39
» [ SKETCHUP plugins ] SketchUp et Menuiserie : Rencontre avec Artwood
par art wood concept Mer 13 Mar 2024 - 9:54
» [ SKETCHUP tutos ] SÉLECTIONNER - Tuto 3/4 - 1ère TECHNIQUE INÉDITE
par jerryvento Mar 12 Mar 2024 - 8:48
» [ SKETCHUP LIVE COMPONENT ] table avec chaises
par tenrev Mar 12 Mar 2024 - 8:46
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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 : 47
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