forum d'entraide Sketchup Artlantis Archicad et bien d'autres
Bonjour sunny

Bonjour et bienvenue sur biblio3d, forum destiné à l'entraide concernant plus particulièrement les logiciels

SKETCHUP - ARTLANTIS - ARCHICAD - PIRANESI
Basketball

Attention : concernant les nouveaux venus, l'inscription est obligatoire pour accéder à la totalité du forum. Après inscription, veuillez vous présenter dans la section adéquate. Nous serons ravis de vous souhaiter la bienvenue dans la communauté ! sourire
Galerie


modifier le contenu d'une barre SCF - Page 2 Empty
addthis
Derniers sujets
» [ SKETCHUP généralité ] retrouver une face masquée
par rascal Aujourd'hui à 22:51

» [ SKETCHUP généralité ] Un truc étonnant pour le Follow-me!
par pb3d Aujourd'hui à 12:37

» [ SKETCHUP généralité ] Import de nouvelles matières
par rascal Aujourd'hui à 7:56

» [ SKETCHUP plugins ] Random Entity Generator
par Samuel Tallet-Sabathé Hier à 22:30

» [ PRESENTATION ] Présentation Gigi
par Samuel Tallet-Sabathé Hier à 20:59

» [ AUTRES LOGICIELS ] FlowScape : paysages pour le plaisir des yeux!
par Pilou Hier à 15:19

» [ ARCHICAD-OBJETS GDL ] Import fichier .e57 (.asc)
par tenrev Ven 13 Déc 2019 - 22:29

» [ AUTRES LOGICIELS ] Test avec Fotosketcher "Faisan"
par Pilou Ven 13 Déc 2019 - 20:09

» [ SKETCHUP généralité ] recupérer un groupe effacé par CTRL Z
par Pilou Ven 13 Déc 2019 - 20:07

» [ PRESENTATION ] Bonjour à tous
par Coulou Ven 13 Déc 2019 - 13:31

» [ UNREAL ENGINE ] La version 4.24 est disponible
par Orange_o Ven 13 Déc 2019 - 12:59

» [ PRESENTATION ] un nouveau de plus
par freroil Ven 13 Déc 2019 - 11:45

» [ ARCHICAD ] [TUTO] Créer une rampe avec l'outil escalier
par Coulou Jeu 12 Déc 2019 - 16:06

» [ SKETCHUP généralité ] Problème suite contrôle de validité
par Domix Jeu 12 Déc 2019 - 16:04

» [ ARCHICAD ] HELP : Interruption d'ArchiCad sous Mac OS Catalina
par Coulou Jeu 12 Déc 2019 - 14:40

» [ ARCHICAD ] Outil RoofMaker
par Coulou Jeu 12 Déc 2019 - 8:58

» [ ARTLANTIS ] rendu crayonné
par alexs643 Mer 11 Déc 2019 - 17:07

» [ SKETCHUP généralité ] Passage de la 3D en vue plan
par Rob Luben Mer 11 Déc 2019 - 9:16

» [ ARCHICAD ] Ouvrants sur demi-niveau
par nono.lerat Mar 10 Déc 2019 - 11:49

» [ ARCHICAD ] [ TUTO ] platelage bois et garde corps
par cestquoiladresse Lun 9 Déc 2019 - 22:34

» [ WIP_ANIMATIONS ] piscine intérieure - sketchup - Enscape
par tenrev Lun 9 Déc 2019 - 18:42

» [ WIP_ANIMATIONS ]Animation d'un intérieur réalisé avec Enscape
par tenrev Lun 9 Déc 2019 - 10:56

» [AUTRES LOGICIELS] Moi3D beta 4.0 - 64 bits Mac / PC 10 Octobre 2019
par Pilou Lun 9 Déc 2019 - 2:38

» [ SKETCHUP plugins ] skatter Zone d'herbe
par rascal Dim 8 Déc 2019 - 20:16

» [ SKETCHUP plugins ] Fredo Corner et Round corner
par rascal Dim 8 Déc 2019 - 9:34

biblio3d
biblio3d sur facebook
biblio3d sur Linkedin
pinterest
upload



Uploader ici vos fichiers
à partager sur le forum

livre doh Sketchup

modifier le contenu d'une barre SCF

Page 2 sur 3 Précédent  1, 2, 3  Suivant

Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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

.../...

c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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

../..
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le Mer 29 Sep 2010 - 17:04

[Vous devez être inscrit et connecté pour voir ce lien] 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

../..
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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"

../..
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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.....

[Vous devez être inscrit et connecté pour voir ce lien]

A decompresser dans le répertoire Plugins

../..
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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"

../..
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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

[Vous devez être inscrit et connecté pour voir cette image]

../..

c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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

@+
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le Jeu 30 Sep 2010 - 18:37

Tu peux m'envoyer les icones de 3Dshapes; si tu veux les reutiliser rigole
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le Jeu 30 Sep 2010 - 18:48

voilà qui est fait sourire

-------------------------------------------------------------------------------------------------------------------------
" heureux les fêlés car ils laissent passer la lumière "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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


../..
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par ploum le 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
[Vous devez être inscrit et connecté pour voir cette image] [Vous devez être inscrit et connecté pour voir cette image][Vous devez être inscrit et connecté pour voir cette image]
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 "
[Vous devez être inscrit et connecté pour voir cette image]
ploum
ploum
V.I.P.
V.I.P.

Masculin Gémeaux
Humeur : une autre question ?
Date d'inscription : 25/10/2009
Nombre de messages : 1142
Points : 1288
Age : 58
Localisation : Saint André de Cruzières, Ardèche
Emploi : menuisier, bijoux, gratte, etc.

http://g.fevre.free.fr

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le 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 Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

modifier le contenu d'une barre SCF - Page 2 Empty Re: modifier le contenu d'une barre SCF

Message par c.plassais le Ven 1 Oct 2010 - 11:54

A decompresser dans Plugins Arrow

[Vous devez être inscrit et connecté pour voir ce lien]

Résultat

[Vous devez être inscrit et connecté pour voir cette image]

@+

Christophe
c.plassais
c.plassais
modérateur
modérateur

Masculin Gémeaux
Date d'inscription : 19/07/2009
Nombre de messages : 2058
Points : 2479
Age : 57
Localisation : Chambéry
Emploi : Responsable Gestion Atelier

http://bande.village.free.fr/

Revenir en haut Aller en bas

Page 2 sur 3 Précédent  1, 2, 3  Suivant

Revenir en haut


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