Bonsoir à vous,
La plaisanterie a assez durée
C'est à la consultation du nouveau site de Didier BUR, que j'ai decidé d'intervenir, c'est la goutte qui fait.....
la présentation maline mais tendancieuse de Pilou sur SCF laisse croire qu'il est l'auteur d'Eclate_Deplace. Hors ce plugin est de moi à 95 %.
J'ai au départ contacter Pilou par correction et courtoisie, j'estime être floué en retour
Le seul a être intervenu pour me conseiller d'un point de vue "Ruby", c'est Fredo que je remercie au passage...
Pilou est à l'origine de quelques lignes rudimentaires et sans interface. le mérite de pilou c'est effectivement d'avoir eu l'idée initiale, d'avoir testé Eclate_deplace et d'avoir traduit quelques mots en anglais Un point c'est tout. **Je ne suis pas sûr que cela suffise pour s'accaparer du travail des autres.**De succroit il se garde bien de rectifier le tir quand les gens s'adressent à lui comme à l'auteur de ce plugin.
Si toutefois certains sont un peu comme Saint Thomas j'ai conservé toute ma correspondance avec Pilou (J'ai un peu d'expérience en la matière ).
Je vous laisse juger par vous même
Le plugin initial de Pilou (sur lequel sont déjà intervus TIG et Thomthom
model = Sketchup.active_model
entities = model.entities
selection = model.selection
xp=100 # Pivot Point (as you want)
yp=100
zp=100
q=50 # Measure of translation (as you want)
selection.each do |e| # update!
# Skip all entities that aren't groups or components (replace follow "ComponentInstance" by "Group" if you have groups
next unless e.is_a? Sketchup;;ComponentInstance # Now we process the component or group
center = e.bounds.center #Center Point of the grouped object
xc= center.x
yc= center.y
zc= center.z
xe=xc #End Point of the grouped object
ye=yc
ze=zc
if xc<xp
xe =xc - q
end
if xc>xp
xe =xc + q
end
if yc<yp
ye =yc - q
end
if yc>yp
ye =yc + q
end
if zc<zp
ze =zc - q
end
if zc>zp
ze =zc + q
end
point = Geom;;Point3d.new xe,ye,ze
t = Geom;;Transformation.new point
# Apply the transformation
e.transform!(t)
end
Eclate_Deplace redigé par mes soins
# Designed December 2009 by C.plassais + Pilou
# Permission to use this software for any purpose and without fee is hereby granted
# Distribution of this software for commercial purpose is forbidden;
# 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 ; Eclate_Deplace
# Original Date ; 03 Juil 2009 version 0.0 (thx to TIG, Thomthom)
# Type ; Plugin
# Description ; Exploding movements of groups or/and components
# Usage ; Right Click - Context Menu
# Version 0.3.2
#---------------------------------------------------------------------------------------
# petit plug d'explosion deplacement" de groupes ou de composants
require 'sketchup.rb'
def pilou_explose
myModel = Sketchup.active_model
myEntities = myModel.entities
selection = myModel.selection
if selection.empty?
UI.messagebox "Veuillez Selectionner des\nComposants ou des Groupes"
end
myModel.start_operation "Deplacement Eclate",true
group = myModel.active_entities.add_group(selection)
centre_selec = group.bounds.center
point_ligne = UI.messagebox "Voulez-matérialiser les déplacement \npar des points et des lignes de construction", MB_YESNO
(point_ligne == 6) ? (myEntities.add_cpoint (centre_selec)) ;()
resultat1 = UI.messagebox "Voulez vous faire une copie de l'original", MB_YESNO
if resultat1 == 6
group2 = group.copy
group2.explode
end
selection = group.explode
cent_selec_x = centre_selec[0].to_i # determination
cent_selec_y = centre_selec[1].to_i # du centre de
cent_selec_z = centre_selec[2].to_i # la selection
prompts = ["Ecarter ou centrer/par rapport au pivot", "Deplacement pivot x", "Deplacement pivot y", "Deplacement pivot z", "Coef translation x de 0 a...", "Coef translation y de 0 a...", "Coef translation z de 0 a...", "Groupe Composant les 2"]
val_defaut = ["Centrer", cent_selec_x, cent_selec_y, cent_selec_z, 1.00, 1.00, 1.00, "Les 2"]
liste_val = ["Centrer|Ecarter", "", "", "", "", "", "" , "Groupe|Composant|Les 2"]
results = UI.inputbox prompts, val_defaut, liste_val, "Parametres"
return if not results
decent_pivot, deplac_pivot_x, deplac_pivot_y, deplac_pivot_z, coef_trans_x, coef_trans_y, coef_trans_z, group_ou_comp = results
# Translation des axes suivant unites
convertit = []
convertit[0]= 1.inch
convertit[1]= 1.feet
convertit[2]= 1.mm
convertit[3]= 1.cm
convertit[4]= 1.m/100
uniteCourante = myModel.options["UnitsOptions"]["LengthUnit"]
coef_trans_x = coef_trans_x.to_f * convertit[uniteCourante]
coef_trans_y = coef_trans_y.to_f * convertit[uniteCourante]
coef_trans_z = coef_trans_z.to_f * convertit[uniteCourante]
# Calcul de la distance entre le centre d'origine de la selection et le nouveau
nouv_pivot_x = cent_selec_x-deplac_pivot_x
nouv_pivot_y = cent_selec_y-deplac_pivot_y
nouv_pivot_z = cent_selec_z-deplac_pivot_z
case decent_pivot
when "Ecarter"
(point_ligne == 6) ? (
myEntities.add_cpoint [(cent_selec_x + nouv_pivot_x), (cent_selec_y + nouv_pivot_y), (cent_selec_z + nouv_pivot_z)]
myEntities.add_cline [cent_selec_x, cent_selec_y, cent_selec_z],[(cent_selec_x + nouv_pivot_x), (cent_selec_y + nouv_pivot_y), (cent_selec_z + nouv_pivot_z)]) ; ()
when "Centrer"
nouv_pivot_x = - nouv_pivot_x
nouv_pivot_y = - nouv_pivot_y
nouv_pivot_z = - nouv_pivot_z
(point_ligne == 6) ? (
myEntities.add_cpoint [deplac_pivot_x,deplac_pivot_y,deplac_pivot_z]
myEntities.add_cline [cent_selec_x, cent_selec_y, cent_selec_z],[deplac_pivot_x, deplac_pivot_y, deplac_pivot_z]) ; ()
end
case group_ou_comp
when "Groupe"
group_ou_comp = comp_ou_group = Sketchup;;Group
when "Composant"
group_ou_comp = comp_ou_group = Sketchup;;ComponentInstance
else
group_ou_comp = Sketchup;;Group
comp_ou_group = Sketchup;;ComponentInstance
end
selection.each do |e| # debut de la transformation
next unless (e.is_a? group_ou_comp) or next unless(e.is_a? comp_ou_group)
centre_objet = e.bounds.center
centre_objet_x = centre_objet[0].to_i # Determination
centre_objet_y = centre_objet[1].to_i # du centre
centre_objet_z = centre_objet[2].to_i # de l'objet
(centre_objet_x == cent_selec_x) ? (nouv_centobj_x = nouv_pivot_x) ; (nouv_centobj_x = ((centre_objet_x-cent_selec_x) * coef_trans_x) + nouv_pivot_x)
(centre_objet_y == cent_selec_y) ? (nouv_centobj_y = nouv_pivot_y) ; (nouv_centobj_y = ((centre_objet_y-cent_selec_y) * coef_trans_y) + nouv_pivot_y)
(centre_objet_z == cent_selec_z) ? (nouv_centobj_z = nouv_pivot_z) ; (nouv_centobj_z = ((centre_objet_z-cent_selec_z) * coef_trans_z) + nouv_pivot_z)
point_trans = Geom;;Point3d.new nouv_centobj_x,nouv_centobj_y,nouv_centobj_z
t = Geom;;Transformation.new point_trans
e.transform!(t)
(point_ligne == 6) ? (
nouv_centobj = e.bounds.center
myEntities.add_cpoint (nouv_centobj)
myEntities.add_cpoint (centre_objet)
constline = myEntities.add_cline [centre_objet_x, centre_objet_y, centre_objet_z],nouv_centobj
constline.stipple = ".") ; ()
myModel.selection.add e
end
myModel.commit_operation
end # pilou_explose
if( not file_loaded?("Eclate_Deplace.rb") )
UI.add_context_menu_handler do |context_menu|
context_menu.add_separator
context_menu.add_item("Eclate_Deplace") { pilou_explose }
end
file_loaded("Eclate_Deplace.rb")
end
Ci-joint les scripts pour ceux qu'ils veulent faire une analyse comparative :
pilou_base.rb
Eclate_Deplace.3.0.2.rb
Nb: Pour utiliser le plugin de Pilou copier les lignes dans la Web_console et changer les valeurs dans les lignes 5,6,7 et 9
Post d'origine vite abandonné http://forums.sketchucation.com/viewtopic.php?f=51&t=23027&start=15#p208042
Lien vers le forum sur lequel je suis actif http://www.biblio3d.com/plug-in-sketchup-f19/plugin-eclate_deplace-deplacement-et-realisation-d-eclate-pilou-cplassais-t610.htm
Désolé de faire le rabat joie
Christophe