Forum Sketchup Artlantis Archicad
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Annonces
Bonjour Invité Bienvenue sur le forum biblio3d - le forum a été créé le Sam 19 Jan 2008 - 14:26- Nous avons enregistrés 14835 topics pour un total de : 175875 posts - le record de membres connectés simultanément :853
Galerie


Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Empty
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

Sondage

êtes vous intéressé et prêt à participer à un challenge ?

Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c1015%Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c10 15% [ 2 ]
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c1031%Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c10 31% [ 4 ]
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c1046%Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c10 46% [ 6 ]
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c108%Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c10 8% [ 1 ]
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c100%Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c10 0% [ 0 ]
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c100%Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Poll_c10 0% [ 0 ]

Total des votes : 13

chaine sketchup.tv
Serveur Discord
Le deal à ne pas rater :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G Double SIM à 599€
599 €
Voir le deal

Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 18:40

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 Arrow
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 Arrow
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 bien
@+
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 18:54

Pour retrouver la longeur d'un segment Arrow Edge.length

Dans ton plugin ton segment c'est ta sélection

@+
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Sam 9 Jan 2010 - 19:05

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 rigole

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 moqueur mdr2
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 19:22

Je viens de tester ca marche nickel
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:

@+
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Sam 9 Jan 2010 - 19:26

J'ai essayé ça sans sucés , mais j'y réfléchis hmm
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
hmm
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 19:34

Pour trouver la longueur de ton composant Arrow BoundingBox.height

Bon courage, si tu as besoin n'hésites pas Exclamation Exclamation

@+
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Sam 9 Jan 2010 - 19:40

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
En plus il ne marche même pas hi hi hi
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 19:51

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
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Sam 9 Jan 2010 - 20:01

Oui oui je suis d'accord mais j'y vais par étape j'essaie déjas d'affecter une variable a mon échelle .
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
A vrais dire je crois que c'était la seule chose que je savais dans ce script moqueur , les maths et la géométrie c'est comme toi avec la programmation d'un script pour sketchup "je suis au top" mdr2
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 20:08

Il y a une erreur

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
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Sam 9 Jan 2010 - 20:22

Je suis vraiment tros bête ................Oh la honte rouge rouge
rouge rouge
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 20:47

ga a écrit:Je suis vraiment tros bête ................Oh la honte rouge rouge
rouge rouge

Il y a franchement pas de honte à débuter bravo2 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?
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Sam 9 Jan 2010 - 20:53

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
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Sam 9 Jan 2010 - 21:18

1°) il faut mettre en place cette commande après avoir importé ton composant et avant ton "transformation.scaling" bien 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
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Dim 10 Jan 2010 - 10:17

Bonjour à tous

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
_Par contre il y à encore une petit erreur le composant ne s'insère pas au début de la ligne et ce phénomène est accentué par l'augmentation de la longueur de la ligne .
Ceci est du a la ligne : etir_comp = Geom::Transformation.scaling coefficient, 1, 1
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Dim 10 Jan 2010 - 10:50

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 )"
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Essais12
Une idée ou j'ai pu met planté ?
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Dim 10 Jan 2010 - 12:45

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 )"
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Essais12
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 Arrow
  1. 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.
  2. 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à Arrow 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
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Dim 10 Jan 2010 - 13:20

Pourtant les axes de mon composant sont bien placés non ?
Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Chevro10
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Dim 10 Jan 2010 - 13:49

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
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Dim 10 Jan 2010 - 15:04

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
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Lun 11 Jan 2010 - 18:14

Saluuuuttttt rigole

C'est un 4 éme argument qu'il manqué ce qui donne
Code:
etir_comp = Geom::Transformation.scaling point,coefficient,1,1
Et c'est vrais que sa marche nickel comme ca c'est magique .
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
Il faut à present que je regarde l'éventualité que le composant ne soit pas dans l'axe rouge .
Et aussi pouvoir changer de composant par ce qu'il n'y a pas que des chevrons dans la vie mdr1 il y a des pannes , des fermes , de la volige etc ...........hi hi hi :icon_wink:
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Lun 11 Jan 2010 - 18:52

bien Il marche nickel
Ca y est tu as fini de cochonné beret
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 mdr2 il faut peut-être regarder de ce coté là Arrow 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
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Lun 11 Jan 2010 - 19:52

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 .....
ga
ga
Moulin à parole
Moulin à parole
Masculin Humeur : boiseuse ......
Date d'inscription : 02/01/2010
Nombre de messages : 312
Points : 363
Age : 48
Localisation : Chez moi !........
Emploi : Charpentier

Messagega Mer 13 Jan 2010 - 11:35

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 pleure , 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" ]
par exemple ceci
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
Maintenant il faut que je regarde le problème des axes hmm encore de belles heures devant sont pc calin
c.plassais
c.plassais
modérateur
modérateur
Masculin Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 62
Localisation : Chambéry
Emploi : Responsable Gestion Atelier
http://bande.village.free.fr/

Messagec.plassais Mer 13 Jan 2010 - 15:44

Ca prend tournure bien
Je galère sos toujours avec la rotation du composant, quelques pistes qui ne sont pas forcément les bonnes moqueur

Pour déterminer le vecteur entre deux points Arrow vector_to
Pour déterminer l'angle entre deux vecteurs Arrow angle_between

Pour la rotation Arrow Transformation.rotation

Bon courage
Contenu sponsorisé

MessageContenu sponsorisé

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum