Forum Sketchup Artlantis Archicad
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Galerie


Suite du Plugin de Ga, Import d'un composant avec mise à l'échelle suivant un gabarit Empty
Ton bloc notes
Derniers sujets
» [ ENSCAPE ] Manette XBox
par simjoubert Aujourd'hui à 21:50

» [ PRESENTATION ] Fanou Peb
par FanouPeb Ven 22 Oct 2021 - 18:19

» [ ENSCAPE ] Accès calques BIM dans le fichier exécutable ou cloud ?
par tenrev Ven 22 Oct 2021 - 16:51

» [ ARCHICAD ] Cotation ouvertures dans mur courbe!?
par freroil Ven 22 Oct 2021 - 15:02

» [ TECHNOLOGIE DU BATIMENT ] Passion architecture
par VertiKal Ven 22 Oct 2021 - 14:59

» [ SKETCHUP plugins ] sj_AddDCFunctions
par tenrev Ven 22 Oct 2021 - 13:20

» [ ARCHICAD-OBJETS GDL ] Bibliothèque de migration archicad 9
par freroil Ven 22 Oct 2021 - 9:11

» [ SKETCHUP composants dynamiques ] OnClick Copie composant
par simjoubert Jeu 21 Oct 2021 - 21:00

» [ ARCHICAD ] Configurer la projection des surfaces sur un maillage ?
par Coulou Jeu 21 Oct 2021 - 17:04

» [AUTRES LOGICIELS] Vectary
par Pilou Mer 20 Oct 2021 - 21:54

» [ SKETCHUP plugins ] Skatter 2 - un exemple d'utilisation
par tenrev Mer 20 Oct 2021 - 11:05

» [ AUTRES LOGICIELS ] Aperçu de Houdini version 19 - sortie prochaine
par Yanosh HRDY Mer 20 Oct 2021 - 9:25

» [ AUTRES LOGICIELS ] davinci resolve
par tenrev Mar 19 Oct 2021 - 12:01

» [ ARCHICAD ] TUTO - Créer un fichier modèle ArchiCad
par Coulou Mar 19 Oct 2021 - 9:25

» [ AUTRES LOGICIELS ] SOUNDLY Une Mine d'Or d'Effets Sonores pour vos animations
par tenrev Lun 18 Oct 2021 - 14:18

» [ BLENDER ] Animation d'une boule de feu
par tenrev Sam 16 Oct 2021 - 15:43

» [ SKETCHUP généralité ] Profils et Contre-Profil Menuiserie
par Pilou Sam 16 Oct 2021 - 11:09

» [ TWINMOTION ] Les 5 jours d'inspiration 2021!
par Pilou Ven 15 Oct 2021 - 19:50

» [ UNREAL ENGINE ] de twinmotion vers unreal engine - vidéo webinar en anglais
par tenrev Ven 15 Oct 2021 - 17:14

» [ SKETCHUP généralité ] SketchUp pour iPad
par REGIS Jeu 14 Oct 2021 - 22:21

» [ AUTRES LOGICIELS ] Nomad Sculpt
par Pilou Mer 13 Oct 2021 - 23:51

» [ SKETCHUP composants dynamiques ] composant dynamique avec proxy 2d pour choix des coloris
par Rascal Mer 13 Oct 2021 - 21:47

» [ AUTRES LOGICIELS ] Verve sous le sapin de Noël!
par Pilou Mer 13 Oct 2021 - 17:04

» [ SKETCHUP généralité ] 3D WAREHOUSE Importer, Télécharger, Exporter avec 2017
par tenrev Mer 13 Oct 2021 - 15:23

» [ SKETCHUP ruby ] Peux-ton réaliser des enregistrement de macro dans SketchUp ?
par JDD Mer 13 Oct 2021 - 14:25

» [ SKETCHUP plugins ] Skatter 2 disponible
par Rascal Mar 12 Oct 2021 - 18:44

» [ OBJETS ET BILLBOARDS ] Création de personnage
par tenrev Mar 12 Oct 2021 - 16:41

» [ SKETCHUP généralité ] Profil Builder
par Rascal Lun 11 Oct 2021 - 19:16

» [ TWINMOTION ] Retour d'expérience sur le challenge n°7
par AK40Cess Lun 11 Oct 2021 - 9:38

» [ ARCHICAD ] Réalisation de chevronnière
par lena29 Ven 8 Oct 2021 - 23:51

» [ SKETCHUP généralité ] Calque et arborescence de groupe
par grayos Ven 8 Oct 2021 - 11:12

» [ PRESENTATION ]
par Fab Jeu 7 Oct 2021 - 17:59

» [ SKETCHUP ruby ] Modification de l'Interface Graphique Utilisateur de SketchUp (GUI)
par tenrev Jeu 7 Oct 2021 - 15:04

» [ UNREAL ENGINE ] pack d'assets free pour Unreal engine 4 , qui comprend 23 paysages et 7 panoramas du ciel
par tenrev Jeu 7 Oct 2021 - 11:00

» [AUTRES LOGICIELS] Moi3D beta 4.0 - 64 bits Mac / PC 27 Octobre 2020
par Pilou Mar 5 Oct 2021 - 22:36

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 : 59
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 : 59
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 : 44
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 : 59
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 : 44
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 : 59
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 : 44
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 : 59
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 : 44
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 : 59
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 : 44
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 : 59
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 : 44
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 : 59
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 : 44
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 : 44
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 : 59
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 : 44
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 : 59
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 : 59
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 : 44
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 : 59
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 : 44
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 : 44
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 : 59
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

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