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


modifier le contenu d'une barre SCF - Page 2 Empty
Ton bloc notes
Derniers sujets
» [ SKETCHUP plugins ] Les bon plans Black Friday 2024
par simjoubert Aujourd'hui à 16:19

» [ TWINMOTION ] Unreal Engine déménage sur Fab - DataSmith & Archicad
par simjoubert Aujourd'hui à 16:04

» [ SKETCHUP généralité ] Tête de pilastre
par jerryvento Aujourd'hui à 8:52

» [ CHALLENGE 2024 ] résultats du challenge
par Allansens Aujourd'hui à 8:42

» [ ARCHICAD ] Paramétrage des coupes sur Archicad
par AK40Cess Hier à 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 ?

modifier le contenu d'une barre SCF - Page 2 Poll_c1015%modifier le contenu d'une barre SCF - Page 2 Poll_c10 15% [ 2 ]
modifier le contenu d'une barre SCF - Page 2 Poll_c1031%modifier le contenu d'une barre SCF - Page 2 Poll_c10 31% [ 4 ]
modifier le contenu d'une barre SCF - Page 2 Poll_c1046%modifier le contenu d'une barre SCF - Page 2 Poll_c10 46% [ 6 ]
modifier le contenu d'une barre SCF - Page 2 Poll_c108%modifier le contenu d'une barre SCF - Page 2 Poll_c10 8% [ 1 ]
modifier le contenu d'une barre SCF - Page 2 Poll_c100%modifier le contenu d'une barre SCF - Page 2 Poll_c10 0% [ 0 ]
modifier le contenu d'une barre SCF - Page 2 Poll_c100%modifier le contenu d'une barre SCF - Page 2 Poll_c10 0% [ 0 ]

Total des votes : 13

chaine sketchup.tv
Serveur Discord
-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

modifier le contenu d'une barre SCF

Page 2 sur 3 Précédent  1, 2, 3  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 Mer 29 Sep 2010 - 12:24

Cela fonctionne, mais ce n'est pas très pratique pour l'utilsateur la même chose avec une interface utlisateur => un menu
Code:

def essai1
UI.messagebox "Lancement de la méthode 1"
end

def essai2
UI.messagebox "Lancement de la méthode 2"
end

if !file_loaded? ("Essai_methode")

   add_separator_to_menu("Plugins")
        testmenu = UI.menu("Plugins").add_submenu("Essai_methodes")
        cmd = []
        cmd[0] = UI::Command.new("Methode 1") { essai1 }
        cmd[1] = UI::Command.new("Methode 2") { essai2 }
       
        cmd.each do |e| testmenu.add_item(e); end 
        file_loaded("Essai_methode")                             
end

Même manip que d'habitude, maintenant dans le menu "plugins" tu dois trouver deux commandes pour lancer tes deux méthodes...

Voila la conception d'un plugin simple avec son interface utilisateur, il suffira pour chaque plugin du même type, d'identifier le plugin proprement dit et de supprimer l'interface utilsateur, pour l'intégrer à ta barre d'outils

.../...

ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Mer 29 Sep 2010 - 12:43

wahoooo, et en plus, ça marche... je suis trop fort ! rigole bien

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 29 Sep 2010 - 13:35

Exemple maintenant d'un autre type de plugin, tu peux voir que l'appel de la commande ou de l'outil est différent et passe notamment par la création d'un objet :

Une classe composée de deux méthodes Arrow

Code:

class Essai_classe
   def essai3(x)
      x = "Lancement de la classe 3"
      return x
   end
   def essai4
      UI.messagebox "Lancement de la classe 4"
   end   
end

A sauvegarder sous "essai_classe.rb"

Commande à saisir dans la "Webconsole" =>

UI.messagebox Essai_classe.new.essai3(1)
ou
Essai_classe.new.essai4

../..
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Mer 29 Sep 2010 - 16:49

Ok, je viens de faire un lancement de classe
pas de pb pour la première formule
pour la seconde, je viens de voir que majuscule et minuscule ont leur importance.
essai_classe.new.essai4 => me donne droit à une erreur
Essai_classe.new.essai4 => impec

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 29 Sep 2010 - 17:04

ploum a écrit:Ok, je viens de faire un lancement de classe
pas de pb pour la première formule
pour la seconde, je viens de voir que majuscule et minuscule ont leur importance.
essai_classe.new.essai4 => me donne droit à une erreur
Essai_classe.new.essai4 => impec

Bien vu, effectivement le nom d'une méthode commence toujours par une minuscule, un nom de classe ou d'un module commence toujours par une majuscule

Pour en finir avec la partie Classe, voila un autre type de menu

modifier "essai_classe.rb" de la maniere suivante Arrow


Code:

class Essai_classe
   def essai3(x)
      x = "Lancement de la classe 3"
      return x
   end
   def essai4
      UI.messagebox "Lancement de la classe 4"
   end   
end

if not file_loaded?("Essai_classe")
   UI.add_context_menu_handler do |context_menu|
      context_menu.add_separator
      sous_menu = context_menu.add_submenu("Essai_classe")
      sous_menu.add_item("Essai 3") { UI.messagebox Essai_classe.new.essai3(1) }
      sous_menu.add_item("Essai 4") { Essai_classe.new.essai4 }
      end
   file_loaded("Essai_classe")
end

Tu dois trouver, maintenant en faisant un clic droit sur un objet quelconque, dans le menu contextuel deux sous-menu essai3 et essai4

../..
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Mer 29 Sep 2010 - 17:26

Ok, ça fonctionne.
par contre j'ai du relancer SU, la Ruby Toolbar ne me rechargeait pas ces dernières modif.

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 29 Sep 2010 - 17:38

Nickel bien

En version rapide la même chose maintenant pour un module Arrow et après on attaque la construction de la barre d'outils

Enregistrer sous "essai_module.rb"

Code:

module Essai_module
   class Essai5
           def essai5
      UI.messagebox "Lancement de module 5"      
      end
      
   end
   
   def self.essai6
      UI.messagebox "Lancement de module 6"
   end
end

Enregistrer et relancer SU

Commandes à exécuter Arrow
pour essai5 => Essai_module::Essai5.new.essai5
pour essai6 => Essai_module.essai6

Si cela fonctionne, tu modifies a nouveau le fichier "essai_module.rb" Arrow

Code:

module Essai_module
   class Essai5
           def essai5
      UI.messagebox "Lancement de module 5"      
      end
      
   end
   
   def self.essai6
      UI.messagebox "Lancement de module 6"
   end
end

if !file_loaded? ("Essai_module")

   add_separator_to_menu("Edit")
        testmenu = UI.menu("Edit").add_item(UI::Command.new("Essai-module 5") { Essai_module::Essai5.new.essai5 })
        testmenu = UI.menu("Edit").add_item(UI::Command.new("Essai-module 6") { Essai_module.essai6 })               
        file_loaded("Essai_module")                             
end

Enregistrer et relancer SU

Tu devrais avoir un nouveau sous menu maintenant dans le menu "Edition"

../..
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Mer 29 Sep 2010 - 18:37

Ok, j'ai essai-module 5 et essai-module 6 dans le menu édition, + les messagebox qui vont avec.

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 29 Sep 2010 - 19:16

Globalement tu dois avoir donc 3 trois plugins Arrow

essai_methode.rb
essai_classe.rb
essai_module.rb

Pour chacun des plugins on va isoler la partie gestion menu, voire les supprimer. je te le deconseille c'est dans cette partie que l'on repere les commandes.
Sinon il y a deux posssibilités ajouter des "#" a chaque debut de ligne ou encadrer le bloc par la commande "=begin"....... et "=end"

du style =>
Code:
module Essai_module
   class Essai5
           def essai5
      UI.messagebox "Lancement de module 5"      
      end
      
   end
   
   def self.essai6
      UI.messagebox "Lancement de module 6"
   end
end

=begin
if !file_loaded? ("Essai_module")

   add_separator_to_menu("Edit")
        testmenu = UI.menu("Edit").add_item(UI::Command.new("Essai-module 5") { Essai_module::Essai5.new.essai5 })
        testmenu = UI.menu("Edit").add_item(UI::Command.new("Essai-module 6") { Essai_module.essai6 })               
        file_loaded("Essai_module")                             
end
=end

ou
Code:
def essai1
UI.messagebox "Lancement de la méthode 1"
end

def essai2
UI.messagebox "Lancement de la méthode 2"
end

#if !file_loaded? ("Essai_methode")

#   add_separator_to_menu("Plugins")
#      testmenu = UI.menu("Plugins").add_submenu("Essai_methodes")
#        cmd = []
#        cmd[0] = UI::Command.new("Methode 1") { essai1 }
#        cmd[1] = UI::Command.new("Methode 2") { essai2 }
#       
#        cmd.each do |e| testmenu.add_item(e); end 
#        file_loaded("Essai_methode")                             
#end
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Mer 29 Sep 2010 - 19:25

Ok, donc de cette façon, on neutralise le plugin tout en le conservant, et en ayant une trace des changements effectués, pas à l'arrache comme j'avais essayé, même si j'avais noté au début.....ça c'était fini en chair à plugin.

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 29 Sep 2010 - 19:49

Exactement en apparence le plugin n'est pas actif, si tu entres les commandes dans la console il s'execute.
Il est en quelque sorte en latence.

On va pouvoir passer à la construction de la barre d'outils

Premiere chose, il faut construire les icones ou en recuperer.

Elements à respecter il te faut deux tailles d'icones par commande pour s'adapter au choix de l'utilisateur "grands boutons" ou "petits boutons"

1 icone en 16X16 et 1 icone en 24X24 au format .png pour chaque commande

si tu récupères des icones au format .ico il suffit de les renommer en .png

Pour eviter que les 12 icones se balladent dans le répertoire Plugins, on va créer un répertoire Ploum dans le répertoire Plugins et coller les icones dedans

J'en ai préparé quelques unes pour aller plus vite en besogne.....

http://www.box.net/shared/2suuyxzhzl

A decompresser dans le répertoire Plugins

../..
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Jeu 30 Sep 2010 - 12:37

J'ai mis mon super dossier ploum dans les plugin...

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 Jeu 30 Sep 2010 - 13:11

On passe à la suite alors bien

maintenant on va construire le plugin qui va "piloter" la barre d'outils"

A enregistrer sous "ma_barre.rb"
Code:

unless file_loaded?("Ma_Barre")
toolbar = UI::Toolbar.new("Ma_Barre")
 
cmd0 = UI::Command.new("Ma_Barre")  { essai1 }
cmd0.small_icon = File.join(File.dirname(__FILE__), "Ploum", "1_sm.png")
cmd0.large_icon = File.join(File.dirname(__FILE__), "Ploum", "1_lg.png")
cmd0.tooltip = "Tooltip Essai1"
cmd0.menu_text = "Barre texte Essai1"
toolbar.add_item(cmd0)

file_loaded "Ma_Barre"
end

enregistrer et relancer, si la barre ne s'affiche pas, l'activer dans le menu "Affichage" => "Barres d'outils"

ligne 1 charge la barre d'outil seulement si elle n'est pas chargée
ligne 11 renseigne le chargement de la barre
ligne 2 création de l'objet barre d'outil "Ma_barre"
ligne 4 affectation de la commande
ligne 5 affectation du chemin et du nom de l'icone de petite taille
ligne 6 affectation du chemin et du nom de l'icone de grande taille
ligne 7 creation d'un message lorsque tu as le focus sur le bouton (non obligatoire)
ligne 8 affichage d'un message dans la zone texte en bas de l'écran à gauche lorsque tu as le focus sur le bouton (non obligatoire)
ligne 9 on ajoute l'item cmd0 à l'objet "Ma_barre"

Tu devrais logiquement avoir une barre avec l'icone "1" qui lance la méthode "Essai 1"

../..
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Jeu 30 Sep 2010 - 14:36

Ok, j'y suis.
J'avoue que j'ai fini par faire un copier/coller de ton texte, pas trouvé à quel endroit je merdouillais.
bref ! mdr1

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 Jeu 30 Sep 2010 - 15:01

Probablement une petite erreur de syntaxe
maintenant il suffit de reperer les lignes de 4 à 9 autant de fois qu'il y a de commandes à gerer en incrementant la variable cmd0 à chaque fois =>
cmd1,cmd2........

modifier le fichier "ma_barre.rb"
Code:

unless file_loaded?("Ma_Barre")

  toolbar = UI::Toolbar.new("Ma_Barre")
 
  cmd0 = UI::Command.new("Ma_Barre")  { essai1 }
  cmd0.small_icon = File.join(File.dirname(__FILE__), "Ploum", "1_sm.png")
  cmd0.large_icon = File.join(File.dirname(__FILE__), "Ploum", "1_lg.png")
  cmd0.tooltip = "Tooltip Essai1"
  cmd0.menu_text = "Barre texte Essai1"
  toolbar.add_item(cmd0)
 
  cmd1 = UI::Command.new("Ma_Barre")  { essai2 }
  cmd1.small_icon = File.join(File.dirname(__FILE__), "Ploum", "2_sm.png")
  cmd1.large_icon = File.join(File.dirname(__FILE__), "Ploum", "2_lg.png")
  cmd1.tooltip = "Tooltip Essai2"
  cmd1.menu_text = "Barre texte Essai2"
  toolbar.add_item(cmd1)
 
  cmd2 = UI::Command.new("Ma_Barre")  { UI.messagebox Essai_classe.new.essai3(1) }
  cmd2.small_icon = File.join(File.dirname(__FILE__), "Ploum", "3_sm.png")
  cmd2.large_icon = File.join(File.dirname(__FILE__), "Ploum", "3_lg.png")
  cmd2.tooltip = "Tooltip Essai3"
  cmd2.menu_text = "Barre texte Essai3"
  toolbar .add_item(cmd2)
 
  cmd3 = UI::Command.new("Ma_Barre")  { Essai_classe.new.essai4 }
  cmd3.small_icon = File.join(File.dirname(__FILE__), "Ploum", "4_sm.png")
  cmd3.large_icon = File.join(File.dirname(__FILE__), "Ploum", "4_lg.png")
  cmd3.tooltip = "Tooltip Essai4"
  cmd3.menu_text = "Barre texte Essai4"
  toolbar .add_item(cmd3)
 
  cmd4 = UI::Command.new("Ma_Barre")  { Essai_module::Essai5.new.essai5 }
  cmd4.small_icon = File.join(File.dirname(__FILE__), "Ploum", "5_sm.png")
  cmd4.large_icon = File.join(File.dirname(__FILE__), "Ploum", "5_lg.png")
  cmd4.tooltip = "Tooltip Essai5"
  cmd4.menu_text = "Barre texte Essai5"
  toolbar .add_item(cmd4)
 
  cmd5 = UI::Command.new("Ma_Barre")  { Essai_module.essai6 }
  cmd5.small_icon = File.join(File.dirname(__FILE__), "Ploum", "6_sm.png")
  cmd5.large_icon = File.join(File.dirname(__FILE__), "Ploum", "6_lg.png")
  cmd5.tooltip = "Tooltip Essai6"
  cmd5.menu_text = "Barre texte Essai6"
  toolbar .add_item(cmd5)

  file_loaded "Ma_Barre"
end

Maintenant tu devrais avoir ça Arrow

modifier le contenu d'une barre SCF - Page 2 2010-010

../..

ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Jeu 30 Sep 2010 - 15:28

Impec, j'ai une jolie barre d'outils.
une question pour mon erreur de syntaxe, dans Notepad++, il y a-t-il un outil à activer qui pourrait vérifier mes erreurs, ou du moins en partie ?

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 Jeu 30 Sep 2010 - 15:42

Non tu peux ameliorer la visualisation de ton script en activant la coloration syntaxique, qui te permet de bien reperer les mots clefs et donc d'identifier un certain nombre d'erreur de syntaxe.
Par contre quand tu teste un plugin, active la console ruby qui logiquement identifie les erreurs....

Il ne faudra pas oublier d'effacer les plugins de tests, qui vont surcharger SU pour rien...

Sinon on peut faire un ou deux essai avec des plugins précis saispas

@+
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Jeu 30 Sep 2010 - 17:57

Ok, donc là, par exemple, j'ai 3d Shapes Tools d'installé.
je vais conserver les 3 composants par défaut, cône, sphère et pyramide.
De la barre SCF Drawtools, j'aimerais prendre le torus, le dome, et la goutte ( tear drop) pour les rajouter à 3d Shapes.
Il faudrait peut-être que je dépose les deux plugins sur le net pour être sur de travailler sur les mêmes ?

Si je n'ai pas fais de blague, les deux plugin se trouvent
ici

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 Jeu 30 Sep 2010 - 18:37

Tu peux m'envoyer les icones de 3Dshapes; si tu veux les reutiliser rigole
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Jeu 30 Sep 2010 - 18:48

voilà qui est fait sourire

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 Jeu 30 Sep 2010 - 18:58

Tu as du oublier le lien moqueur

sinon en attendant

Par soucis de clarté :
Tu peux renommer le repertoire "Ploum" en "Icones" et changer tous les "Ploum" en "Icones" du script "ma_barre.rb"
tu pourras ainsi coller toutes tes icones ici et ainsi le chemin sera a chaque fois identique...
Ensuite sur 3dshape.rb tu peux isoler la partie menu et identifier les trois commandes
Code:
########################################################
#
#    3d Shapes Tool - Designed  May 2008 by Macs
#
########################################################

# Copyright 2004-2005, @Last Software, Inc.
# Permission to use, copy, modify, and distribute this software for
# any purpose and without fee is hereby granted, provided that the above
# copyright notice appear in all copies.

# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#-----------------------------------------------------------------------------
# Name        :  3d shapes tool 1.0
# Description :  A tool to create varius 3d shapes with the mouse.
# Menu Item  :  Draw->3D Shapes->...
# Context Menu:  NONE
# Date        :  8/05/2008
# Type        :  Tool
#Based on  : Rotated Rectangle Tool 1.0
#-----------------------------------------------------------------------------

require 'sketchup.rb'

#=============================================================================

class PyramidTool

@@ltcursor = 0

def initialize
    @ip = Sketchup::InputPoint.new
    @ip1 = Sketchup::InputPoint.new
   @planex = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(1,0,0)]
   @planey   = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,1,0)]
   @planez = [Geom::Point3d.new(0,0,0), Geom::Vector3d.new(0,0,1)]
    if @@ltcursor == 0
      plugins = Sketchup.find_support_file("Plugins")   
      imgdir = File.join(plugins, "3DShapesToolbar")
      c = File.join(imgdir, "3dshapes_cursor.png")
      @@ltcursor = UI::create_cursor(c, 1, 30)
    end
    reset
end

def reset
    @moved = false
    @pts = []
   @pir_pts
    @state = 0
    @ip1.clear
    @drawn = false
    Sketchup::set_status_text "", SB_VCB_LABEL
    Sketchup::set_status_text "", SB_VCB_VALUE
    Sketchup::set_status_text "Click for start point"
    @shift_down_time = Time.now
end

def activate
    self.reset
end

def deactivate(view)
    view.invalidate if @drawn
end

#def resume(view)
#   view.invalidate
#end

def onSetCursor
   UI::set_cursor(@@ltcursor)
end


def set_current_point(x, y, view)
    if( !@ip.pick(view, x, y, @ip1) )
        return false
    end
    need_draw = true
   
    # Set the tooltip that will be displayed
    view.tooltip = @ip.tooltip
       
    # Compute points
    case @state
    when 0
        @pts[0] = @ip.position
        @pts[4] = @pts[0]
        need_draw = @ip.display? || @drawn
    when 1
        @pts[1] = @ip.position
        @width = @pts[0].distance @pts[1]
        Sketchup::set_status_text @width.to_s, SB_VCB_VALUE
    when 2      
        pt1 = @ip.position
        pt2 = pt1.project_to_line @pts
        vec = pt1 - pt2
        @deep = vec.length
        if( @deep > 0 )
            # test for a square
            square_point = pt2.offset(vec, @width)
            if( view.pick_helper.test_point(square_point, x, y) )
                @deep = @width
                @pts[2] = @pts[1].offset(vec, @deep)
                @pts[3] = @pts[0].offset(vec, @deep)
                view.tooltip = "Square"
            else
                @pts[2] = @pts[1].offset(vec)
                @pts[3] = @pts[0].offset(vec)
            end
         self.temp_apex(@pts, view)
        else
            @pts[2] = @pts[1]
            @pts[3] = @pts[0]
        end
        Sketchup::set_status_text @deep.to_s, SB_VCB_VALUE
   when 3
      @pir_pts = self.get_apex(view,@ip,@vect_perp,@center)
      @height = @pir_pts.distance @center
      Sketchup::set_status_text @height.to_s, SB_VCB_VALUE
    end

    view.invalidate if need_draw
end


def onMouseMove(flags, x, y, view)
    @moved = true
    self.set_current_point(x, y, view)
end

def temp_apex( pts, view )
   @center = calculate_center(@pts)
   @height = view.pixels_to_model 50.cm, @ip.position
   vec1 = @pts[0] - @center
   vec2 = @center- @pts[1]
   @vect_perp = vec1.cross vec2      
   @pir_pts = @center.offset(@vect_perp, @height)
end

def calculate_center( pts )
   middlepoint = Geom::Point3d.linear_combination 0.5, pts[0], 0.5, pts[1]
   vec = pts[2] - pts[1]
   vec.length = vec.length / 2
   return middlepoint.offset(vec)
end

#get apex point
def get_apex(view, ip, vec, origin)
   if (ip.degrees_of_freedom != 3 )
      return ip.position.project_to_line([origin, vec])
   else
      @c_orig = view.screen_coords origin
      @c_ip = view.screen_coords ip.position
      @c_on_normal = view.screen_coords origin.offset( vec )
      @c_apex = @c_ip.project_to_line [@c_orig, @c_on_normal]
      a = Geom.closest_points [origin, vec], view.pickray(@c_apex.x, @c_apex.y)
      return a[0]
   end   
end

def create_geometry
    # check for zero deep
    if( @pts[0] != @pts[3] )
      model = Sketchup.active_model
      model.start_operation $exStrings.GetString("Pyramid")
        model.active_entities.add_face @pts
      for i in 0..3
         Sketchup.active_model.active_entities.add_face @pir_pts,@pts[i], @pts[i+1]
      end
      model.commit_operation
    end
    self.reset
end

def increment_state
   @moved = false
   @state += 1            
    case @state
    when 1
      @ip1.copy! @ip
      Sketchup::set_status_text "Click for second point"
      Sketchup::set_status_text "Length", SB_VCB_LABEL
      Sketchup::set_status_text "Move mouse", SB_VCB_VALUE
      @pts[1] = @pts[0]
    when 2
        @ip1.clear
        Sketchup::set_status_text "Click for third point"
        Sketchup::set_status_text "Width", SB_VCB_LABEL
        Sketchup::set_status_text "Move mouse", SB_VCB_VALUE
      @pts[2] = @pts[0]
      @pts[3] = @pts[0]
   when 3
        Sketchup::set_status_text "Click for fourth point"
        Sketchup::set_status_text "Height", SB_VCB_LABEL
        Sketchup::set_status_text "Move mouse", SB_VCB_VALUE   
    when 4
        self.create_geometry
    end

end

def onLButtonDown(flags, x, y, view)
    if @moved
       self.set_current_point(x, y, view)
       self.increment_state
       view.lock_inference
   end
end

def onCancel(flag, view)
    view.invalidate if @drawn
    self.reset
end

# This is called when the user types a value into the VCB
def onUserText(text, view)
    # The user may type in something that we can't parse as a length
    # so we set up some exception handling to trap that
    begin
        value = text.to_l
    rescue
        # Error parsing the text
        UI.beep
        value = nil
        Sketchup::set_status_text "", SB_VCB_VALUE
    end
    return if !value
   
    case @state
    when 1
        # update the width
        vec = @pts[1] - @pts[0]
        if( vec.length > 0.0 )
            vec.length = value
            @pts[1] = @pts[0].offset(vec)
            view.invalidate
            self.increment_state
        end
    when 2
        # update the deep
        vec = @pts[3] - @pts[0]
        if( vec.length > 0.0 )
            vec.length = value
            @pts[2] = @pts[1].offset(vec)
            @pts[3] = @pts[0].offset(vec)
         temp_apex(@pts, view)
            self.increment_state
        end
   when 3
      @pir_pts = @center.offset(@vect_perp, value)
      self.increment_state
    end
end

def getExtents
    bb = Sketchup.active_model.bounds
    case @state
    when 0
        # We are getting the first point
        if( @ip.valid? )
            bb.add @ip.position
        end
    when 1
        bb.add @pts[0]
        bb.add @pts[1]
    when 2
        bb.add @pts
      bb.add @pir_pts
   when 3
      bb.add @pir_pts   
    end
    bb
end

def draw(view)
    @drawn = false
   
    # Show the current input point
    if( @ip.valid? && @ip.display? )
        @ip.draw(view)
        @drawn = true
    end

    # show the rectangle
    if( @state == 1 )
        # just draw a line from the start to the end point
        view.set_color_from_line(@ip1, @ip)
        inference_locked = view.inference_locked?
        view.line_width = 3 if inference_locked
        view.draw(GL_LINE_STRIP, @pts[0], @pts[1])
        view.line_width = 1 if inference_locked
        @drawn = true
    elsif( @state > 1 )
        # draw the curve
        view.drawing_color = "black"
        view.draw(GL_LINE_STRIP, @pts)
      view.draw_lines @pir_pts, @pts[0], @pir_pts, @pts[1], @pir_pts, @pts[2], @pir_pts, @pts[3]
      view.drawing_color = "gray"      
      view.line_stipple="_"
      view.draw_lines(@pir_pts, @ip.position)      
        @drawn = true
    end
end

def onKeyDown(key, rpt, flags, view)
    if( key == CONSTRAIN_MODIFIER_KEY && rpt == 1 )
        @shift_down_time = Time.now
       
        # if we already have an inference lock, then unlock it
        if( view.inference_locked? )
            view.lock_inference
        elsif( @state == 0 )
            view.lock_inference @ip
        elsif( @state == 1 )
            view.lock_inference @ip, @ip1
        end
      
    end
end

def onKeyUp(key, rpt, flags, view)
    if( key == CONSTRAIN_MODIFIER_KEY &&
        view.inference_locked? &&
        (Time.now - @shift_down_time) > 0.5 )
        view.lock_inference
    end
end



end # of class PyramidTool

class ConeTool < PyramidTool

def reset
    @moved = false
    @pts = []
   @pir_pts
    @state = 0
    @ip1.clear
    @drawn = false
   @sides = 24
    Sketchup::set_status_text "Sides > 2", SB_VCB_LABEL
    Sketchup::set_status_text @sides, SB_VCB_VALUE
    Sketchup::set_status_text "Click for center of cone"
    @shift_down_time = Time.now
end

def set_current_point(x, y, view)
    if( !@ip.pick(view, x, y, @ip1) )
        return false
    end
    need_draw = true
   
    # Set the tooltip that will be displayed
    view.tooltip = @ip.tooltip
       
    # Compute points
    case @state
    when 0
        @pts[0] = @ip.position
        need_draw = @ip.valid? || @drawn
    when 1
        @pts[1] = @ip.position
        @radius = @pts[0].distance @pts[1]
        Sketchup::set_status_text @radius.to_s, SB_VCB_VALUE
    when 2
      @pts[2] = self.get_apex(view, @ip, @normal, @pts[0])
      @height = @pts[0].distance @pts[2]
        Sketchup::set_status_text @height.to_s, SB_VCB_VALUE
    end

    view.invalidate if need_draw
end

def draw(view)

    @drawn = false 
    # Show the current input point
    if( @ip.valid? && @ip.display? )
        @ip.draw(view)
        @drawn = true
    end

   return  if (!@ip.valid?) #this will eliminate the first draw on selecting the tool.

   
    # show the circle
   if( @state == 0 )
       point = @ip.position
      @radius = view.pixels_to_model 50.cm, @ip.position
      @height = @radius*2    
      if point.on_plane? @planey
         @normal = Geom::Vector3d.new(0,1,0)
         view.drawing_color = "green"
      elsif point.on_plane? @planex
         @normal = Geom::Vector3d.new(1,0,0)
         view.drawing_color = "red"         
      else
         @normal = Geom::Vector3d.new(0,0,1)
         view.drawing_color = "blue"
      end
      face = @ip.face      
      if ( face )
          @normal = face.normal
      end   
      pts_circle = self.points_on_circle( @ip.position,@normal, @radius, @sides)
      apex = point.offset(@normal, @height)
      view.draw_lines(point, apex)
      for i in 0..@sides
         view.draw_lines(apex, pts_circle[i])
      end
      view.draw(GL_LINE_STRIP, pts_circle)
      @drawn = true
    elsif( @state == 1 )
        # just draw a line from the start to the end point
        view.set_color_from_line(@ip1, @ip)
        #inference_locked = view.inference_locked?
        #view.line_width = 3 if inference_locked      
      #view.lock_inference @ip1
      vector = nil
      ptr = @ip.position      
      v1 = ptr - @pts[0]
      if (@normal == nil)
         ptr2 = ptr.clone
         ptr2.x = ptr.y
         ptr2.y = ptr.x         
         v2 = ptr2 - @pts[0]
         @normal = v1.cross v2
      else
         ptr = ptr.project_to_plane [@pts[0], @normal]
         v1 = ptr - @pts[0]
      end      
      pts_circle = self.points_on_circle( @pts[0], @normal, v1.length, @sides)   
      view.draw(GL_LINE_STRIP, @pts[0], ptr)
      apex = @pts[0].offset(@normal, @height)
      view.drawing_color = "blue"
        view.draw(GL_LINE_STRIP, pts_circle)
      for i in 0..@sides
         view.draw_lines(apex, pts_circle[i])
      end
        @drawn = true
    elsif( @state > 1 )
        # draw the curve
      view.drawing_color = "blue"      
        pts_circle = self.points_on_circle( @pts[0], @normal, @radius, @sides)      
      for i in 0..@sides
         view.draw_lines(@pts[2], pts_circle[i])
      end      
      view.draw(GL_LINE_STRIP, pts_circle)
      view.drawing_color = "gray"      
      view.line_stipple="_"
      view.draw_lines(@pts[2], @ip.position)
        @drawn = true
      #view.line_stipple=""
      #view.drawing_color = "red"      
      #view.draw2d GL_LINES, @c_orig, @c_ip
      #view.drawing_color = "green"
      #view.draw2d GL_LINES, @c_ip, @c_on_normal
      #view.drawing_color = "blue"
      #view.draw2d GL_LINES, @c_on_normal, @c_apex
      #view.drawing_color = "yellow"
      #view.draw2d GL_LINES, @c_apex, @c_orig
      
    end
end

def points_on_circle(center, normal, radius, numseg)
    # Get the x and y axes
    axes = Geom::Vector3d.new(normal).axes
    #center = Geom::Point3d.new(center)
    xaxis = axes[0]
    yaxis = axes[1]
   
    xaxis.length = radius
    yaxis.length = radius

    # compute the points
    da = (Math::PI * 2) / numseg #/
    pts = []
    for i in 0..numseg do
        angle = i * da
        cosa = Math.cos(angle)
        sina = Math.sin(angle)
        vec = Geom::Vector3d.linear_combination(cosa, xaxis, sina, yaxis)
        pts.push(center + vec)
    end
   
    # close the circle
    #pts.push(pts[0].clone)

    pts
end

def increment_state
   @moved = false
   @state += 1            
    case @state
    when 1
      @ip1.copy! @ip
      Sketchup::set_status_text "Click to set the radius"
      Sketchup::set_status_text "Radius", SB_VCB_LABEL
      Sketchup::set_status_text "Move mouse", SB_VCB_VALUE
    when 2
        @ip1.clear
        Sketchup::set_status_text "Click to set the height"
        Sketchup::set_status_text "Height", SB_VCB_LABEL
        Sketchup::set_status_text "Move mouse", SB_VCB_VALUE
    when 3
        self.create_geometry
    end

end

def getExtents
    bb = Sketchup.active_model.bounds
    case @state
    when 0
        # We are getting the first point
        if( @ip.valid? )
            bb.add @ip.position
        end
    when 1
        bb.add @pts[0]
      if (@pts[1] != nil)
         bb.add @pts[1]
      end
    when 2
        bb.add @pts
    end
    bb
end

# This is called when the user types a value into the VCB
def onUserText(text, view)
    # The user may type in something that we can't parse as a length
    # so we set up some exception handling to trap that
    begin
        value = text.to_l
    rescue
        # Error parsing the text
        UI.beep
        value = nil
        Sketchup::set_status_text "", SB_VCB_VALUE
    end
    return if !value
   
   
    case @state
    when 0
      return if ( text.to_i < 3 )
      @sides = text.to_i
      view.invalidate
    when 1
       # update the radius
      @radius = value
      view.invalidate      
        self.increment_state
    when 2
        # update the height
      @height = value
      @pts[2]= @pts[0].offset(@normal, @height)
      self.increment_state
    end
end

def create_geometry

   model = Sketchup.active_model
   if @sides > 8
      model.start_operation $exStrings.GetString("Cone")
   else
      model.start_operation $exStrings.GetString("Pyramid")
   end
   

    # Create the base
   ent = model.active_entities
    circle = ent.add_circle @pts[0], @normal, @radius, @sides
   numf = circle[0].find_faces #this actually creates a face when needed
   if ( numf == 1 && @normal != [0,0,1] )
      circle[0].faces[0].reverse!
   end
    e2 = []
   for i in 0...@sides
      e2[i] = ent.add_line(circle[i].start.position, @pts[2])
      if @sides > 8
         e2[i].soft = true
         e2[i].smooth = true
      end
   end
   for i in 0...@sides-1
        ent.add_face circle[i], e2[i], e2[i+1]
   end
   ent.add_face circle[@sides-1], e2[@sides-1], e2[0]
   model.commit_operation   
    self.reset
end





end # end ConeTool

class SphereTool < ConeTool


def reset
    @moved = false
    @pts = []
    @state = 0
    @ip1.clear
    @drawn = false
   @sides = 24
    Sketchup::set_status_text "Sides > 3", SB_VCB_LABEL
    Sketchup::set_status_text @sides, SB_VCB_VALUE
    Sketchup::set_status_text "Click for sphere's center"
    @shift_down_time = Time.now
end

def increment_state
   @moved = false
   @state += 1            
    case @state
    when 1
      @ip1.copy! @ip
      Sketchup::set_status_text "Click to set the radius"
      Sketchup::set_status_text "Radius", SB_VCB_LABEL
      Sketchup::set_status_text "Move mouse", SB_VCB_VALUE
    when 2
        self.create_geometry
    end

end

def draw(view)
    @drawn = false 
    # Show the current input point
    if( @ip.valid? && @ip.display? )
        @ip.draw(view)
        @drawn = true
    end
   
   return if (!@ip.valid?)
      
    # show the circle
   if( @state == 0 )
       point = @ip.position
      @radius = view.pixels_to_model 100.cm, @ip.position
      @height = @radius*2    
      pts_circle = self.points_on_circle( point,Geom::Vector3d.new(0,0,1), @radius, @sides)
      view.draw(GL_LINE_STRIP, pts_circle)

      base = []
      top = []   
      for i in 0..@sides
         va = pts_circle[i] - point
         vdot = va.axes[0].reverse!
         pts_circle2 = self.points_on_semic( point,vdot, @radius, @sides)
         view.draw(GL_LINE_STRIP, pts_circle2)
         base.push(pts_circle2[0])
         top.push(pts_circle2.pop)

      end
      view.draw(GL_LINE_STRIP, top)
      view.draw(GL_LINE_STRIP, base)

      #pts_circle = self.points_on_circle( point,Geom::Vector3d.new(0,1,0), @radius, @sides)
      #view.draw(GL_LINE_STRIP, pts_circle)
      
      #pts_circle = self.points_on_circle( point,Geom::Vector3d.new(1,0,0), @radius, @sides)
      #view.draw(GL_LINE_STRIP, pts_circle)
      
      @drawn = true
    elsif( @state == 1 )
        # just draw a line from the start to the end point
        view.set_color_from_line(@ip1, @ip)
      ptr = @ip.position      
      return if (ptr == @pts[0])
      
      view.draw(GL_LINE_STRIP, @pts[0], ptr)
      view.drawing_color = "blue"      
      v1 = ptr - @pts[0]
      @radius = v1.length
      pts_circle = self.points_on_circle( @pts[0],Geom::Vector3d.new(0,0,1), @radius, @sides)
      view.draw(GL_LINE_STRIP, pts_circle)
      #view.drawing_color = "red"
      base = []
      top = []   
      for i in 0..@sides
         va = pts_circle[i] - @pts[0]
         vdot = va.axes[0].reverse!
         #pdot = @pts[0].offset(vdot, 200)
         #view.draw_lines(@pts[0], pdot )         
         pts_circle2 = self.points_on_semic( @pts[0],vdot, @radius, @sides)
         view.draw(GL_LINE_STRIP, pts_circle2)
         base.push(pts_circle2[0])
         top.push(pts_circle2.pop)
         #view.drawing_color = "green"         
      end
      view.draw(GL_LINE_STRIP, top)
      view.draw(GL_LINE_STRIP, base)
      @pts[1] = top[0]
      @pts[2] = base[0]
      #view.drawing_color = "red"
      #pts_circle = self.points_on_circle( @pts[0],Geom::Vector3d.new(0,1,0), @radius, @sides)
      #view.draw(GL_LINE_STRIP, pts_circle)
      
      
        @drawn = true
    end
end

def points_on_semic(center, normal, radius, numseg)
    # Get the x and y axes
    axes = Geom::Vector3d.new(normal).axes
    #center = Geom::Point3d.new(center)
    xaxis = axes[0]
    yaxis = axes[1]
   
    xaxis.length = radius
    yaxis.length = radius

   #numseg = numseg*2 if (numseg % 2 == 1)   
   
    # compute the points
    da = (Math::PI * 2) / (numseg)
    pts = []
    for i in -(numseg/4)..numseg/4 do
        angle = i * da
        cosa = Math.cos(angle)
        sina = Math.sin(angle)
        vec = Geom::Vector3d.linear_combination(cosa, xaxis, sina, yaxis)
        pts.push(center + vec)
    end
 
    pts
end

# This is called when the user types a value into the VCB
def onUserText(text, view)
    # The user may type in something that we can't parse as a length
    # so we set up some exception handling to trap that
    begin
        value = text.to_l
    rescue
        # Error parsing the text
        UI.beep
        value = nil
        Sketchup::set_status_text "", SB_VCB_VALUE
    end
    return if !value
   
   
    case @state
    when 0
      return if ( text.to_i < 4 )
      @sides = text.to_i
      view.invalidate
    when 1
       # update the radius
      @radius = value
      view.invalidate      
        self.increment_state
    end
end

def create_geometry

   model = Sketchup.active_model
   if @sides > 12
      model.start_operation $exStrings.GetString("Sphere")
   else
      model.start_operation $exStrings.GetString("Polyhedron")
   end
   
    # Create the base
   ent = model.active_entities
    pts_circle = self.points_on_circle( @pts[0],Geom::Vector3d.new(0,0,1), @radius, @sides)
   circle = ent.add_circle( @pts[0],Geom::Vector3d.new(0,0,1), @radius, @sides)

   base = []
   top = []
   pts_circle2 = []
   for i in 0..@sides
      va = pts_circle[i] - @pts[0]
      vdot = va.axes[0].reverse!
      pts_circle2[i] = self.points_on_semic( @pts[0],vdot, @radius, @sides)
      base.push(pts_circle2[i][0])
      top.push(pts_circle2[i][pts_circle2[i].size-1])
   end
   
   s = pts_circle2[i].size
   draw_top = draw_base = true
   for x in 0...(s-1)
      for i in 0...@sides      
         a = pts_circle2[i][x]
         b = pts_circle2[(i+1)%@sides][x]
         c = pts_circle2[(i+1)%@sides][(x+1)%s]
         d = pts_circle2[i][(x+1)%s]
         if ( a == b )
            face = ent.add_face a, c, d
            draw_top = false
         elsif ( c == d )
            face = ent.add_face a, b, d
            draw_base = false
         else
            face = ent.add_face a, b, c, d
         end
         if (@sides >= 12)
            ed = face.edges
            ed[0].soft=true
            ed[1].soft=true
            ed[2].soft=true
            ed[0].smooth=true
            ed[1].smooth=true
            ed[2].smooth=true
         end
      end
   end   
   ent.add_face(top)  if draw_top
   ent.add_face(base) if draw_base

   model.commit_operation   
    self.reset
end

def set_current_point(x, y, view)
    if( !@ip.pick(view, x, y, @ip1) )
        return false
    end
    need_draw = true
   
    # Set the tooltip that will be displayed
    view.tooltip = @ip.tooltip
       
    # Compute points
    case @state
    when 0
        @pts[0] = @ip.position
        need_draw = @ip.valid? || @drawn
    end

    view.invalidate if need_draw
end

def getExtents
    bb = Sketchup.active_model.bounds
    case @state
    when 0
        # We are getting the first point
        if( @ip.valid? )
            bb.add @ip.position
        end
    when 1
        bb.add @pts
        if( @ip.valid? )
            bb.add @ip.position
        end
   end
    bb
end


end # SphereTool

#=============================================================================

# Add a menu choice
=begin
if( not $shapestool_menu_loaded )
    add_separator_to_menu("Draw")
   new_menu = UI.menu("Draw").add_submenu("3D Shapes")   
   new_toolbar = UI::Toolbar.new("3D Shapes Tool")
   plugins = Sketchup.find_support_file("Plugins")   
   imgdir = File.join(plugins, "3DShapesToolbar")

   cmd = UI::Command.new("Cone or Pyramid")  {Sketchup.active_model.select_tool ConeTool.new  }
   cmd.small_icon = cmd.large_icon = File.join(imgdir, "cone_icon.png")
   cmd.tooltip = "Cone or Pyramid"
   cmd.menu_text = "Cone or Pyramid"
   
    new_menu.add_item(cmd)
    new_toolbar.add_item(cmd)

   cmd = UI::Command.new("Sphere")  {Sketchup.active_model.select_tool SphereTool.new  }
   cmd.small_icon = cmd.large_icon = File.join(imgdir, "sphere_icon.png")
   cmd.tooltip = "Sphere"
   cmd.menu_text = "sphere"
   
    new_menu.add_item(cmd)
    new_toolbar.add_item(cmd)
   
   cmd = UI::Command.new("Rotated Pyramid")  {Sketchup.active_model.select_tool PyramidTool.new }
   cmd.small_icon = cmd.large_icon = File.join(imgdir, "rot_pyramid_icon.png")
   cmd.tooltip = "Rotated Pyramid"
   cmd.menu_text = "Rotated Pyramid"
   
   new_menu.add_item(cmd)   
   new_toolbar.add_item(cmd)   

   
   new_toolbar.show

   $shapestool_menu_loaded = true
end
=end

Les trois commandes à recuperer Arrow

Sketchup.active_model.select_tool ConeTool.new
Sketchup.active_model.select_tool SphereTool.new
Sketchup.active_model.select_tool PyramidTool.new


../..
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Jeu 30 Sep 2010 - 19:17

oups ICI
je pensais les avoir déposé dans le même dossier rouge
je vais regarder ce dont tu me parles.

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
ploum
ploum
V.I.P.
V.I.P.
Masculin Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 63
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.
http://g.fevre.free.fr

Messageploum Ven 1 Oct 2010 - 8:48

Je suis dans le dossier icons de DRAW, et j'y trouve des icones que je n'avais jamais vu auparavant
modifier le contenu d'une barre SCF - Page 2 Horn_210 modifier le contenu d'une barre SCF - Page 2 Toruse10modifier le contenu d'une barre SCF - Page 2 Torus210
si quelqu'un passant par là peut m'en dire d'avantage clindoeil

Qu' est-ce qui est le plus logique en manipulation,
- ôter les éléments de SCF DRAW qui ne m'intéressent pas,
- ou bien prendre ceux qui m'intéressent pour les envoyer sur la 3DShapesTools.


-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
modifier le contenu d'une barre SCF - Page 2 Blende10
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 Ven 1 Oct 2010 - 11:11

Les icones correspondent aux programmes=>

Torus
Horn
Torus2

Le + simple, c'est de ne pas pas toucher aux scripts et de construire ta barre d'outils....
Je te prepare un exemple concret sur la base de ce l'on a vu avant


Dernière édition par c.plassais le Jeu 14 Oct 2010 - 8:17, édité 1 fois
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 Ven 1 Oct 2010 - 11:54

A decompresser dans Plugins Arrow

http://www.box.net/shared/2suuyxzhzl

Résultat

modifier le contenu d'une barre SCF - Page 2 Ma_bar10

@+

Christophe
Contenu sponsorisé

MessageContenu sponsorisé

Page 2 sur 3 Précédent  1, 2, 3  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