@roland joseph said:
Shut down the external ruby pipeline ...
do you suggest that some plugins (as mine ...) running slower would be the consequence of an intentional reduction of capacity for ruby programs to interact with sketchup?
@roland joseph said:
Shut down the external ruby pipeline ...
do you suggest that some plugins (as mine ...) running slower would be the consequence of an intentional reduction of capacity for ruby programs to interact with sketchup?
@aerilius said:
What does the code do?
Apart from pure mathematical calculations, programming languages can also have side effects and interact with the environment (and such side effects make things hard to reproduce and bugs hard to discover).
Although the ruby version is maybe still the same, the SketchUp environment is changed and performance is affected by entity creation (which then can even call observers of other plugins) or interaction with the user interface.
from SU profiler result, the program mainly spends time in this type of operation
"Sketchup::Entities#each"
would you say that this includes these lines of code?
for e in entities
if e.is_a? Sketchup;;ComponentInstance
status = selection.add e
end
end #for
@adamb said:
glro: you seem very quick to judge things you perhaps do not understand.
The purpose of having 2 locations, is that one is a global, shared repository, another is a per-user repository.
OK, now i understand the interest of a global repository: it doesn't need the session name
C:\ProgramData\SketchUp\SketchUp 2015\SketchUp\Plugins
so it might be easier to find when installing a plugin
maybe ...
but still, if a plugin needs special components to be installed, it still has to be done in the program files folder; so it still needs administrator rights
the component folder should be outside the program files folder also
OK
I agree, it depends upon what you are paying attention to
plugins using ruby lines of code moving components, or screening of special types of components among all objects in the model, seem to be much slower on sketchup 15 compared to sketchup 8
but i noticed that all that is related to showing the model on screen is much faster on sketchup 15 compared to sketchup 8
so i guess some choices have been made to allow more memory to this and less to that
@jbacus said:
Hi guys,
In our labs, SU8 renders significantly faster than SU7 and about the same as SU7.1. YMMV, depending what you're paying attention to in performance terms. Perceived performance turns out to be surprisingly subjective and often has as much to do with the last model you opened in SketchUp (and your performance experience with it at that time) as it does with the actual raw performance of the system.
Also, SketchUp performance appears inversely proportional to the amount of time left before an important deadline
john
.
@driven said:
well, they have always said not to rely on them...
but this works on my mac, but isn't in the list...
Sketchup.send_action "select3dTextTool;"
john
it works also in windows 7
it was not documented
thank you
did you notice that it doesn't work on sketchup 15?
any alternative?
@chri said:
Hi Giro
I have made a test with parts imported from STEP files ( using Moment Of Inspiration ).
I noticed that when parts contains a lots of entities , it's common to have small differences after import
Perhaps , you have this kind of problem with your file .
... so , the plugin cound not recognize almost similar components .Chri
interesting
It might be an explanation, but not in any case
i make a cube, grouping the faces
i duplicate it
i launch the plugin: they are both turned into instances of the same component
now, i explode them
turn again each one of them into a group
and finally i launch the plugin: they are turned into instances of 2 different components
@chri said:
Hi Giro
I agree with you , when you tell "... must have been made into a group and then duplicated, before the plugin is used "
... but, i don't understand the meaning of "square boxes" and "other types of groups"for me, there are only 2 possibilty; a group and non-grouped entities!
Sincerely
Chri
you are right
i mixed the 2 condition, but only one is true: ""... must have been made into a group and then duplicated, before the plugin is used "
this is very limitating, though
I was planning to use this plugin on a sketchup model imported from solidworks using SIMLAB converter
SIMLAB converts components into groups, and i was planning to use "components.rb" to convert them back to components
it doesn't work; i shall try to tweak the plugin to make it work, using the position of the bounding box corners
@chri said:
Hi
in english
You will find here , my system and my plugin file if it can help you .en français
Bonjour
Trouves ci-joint des images de ma configuration et le fichier ruby correspondant a notre sujet .Salutations
Chri
Thank you !
i don't know why, but with the file you put in line, i don't get the error message
it worked also on my computer: the plugin makes components out of groups if they are square boxes
From the test i made, the square boxes must have been made into a group and then duplicated, before the plugin is used; otherwise the plugin doesn't recognize them as identical and makes 2 different components
it could be possible maybe to make it work for other types of groups; by checking the distance between the corners of the bounding box, for example
i shall try
@chri said:
hi Sahi
you have done a great job
seems to work with SKECHUP 8 and 2013
Doesn't work with SKETCHUP 6 2014 2015Thanks again
Chri
i wish i could get the same result on my computer
i only get an error message
@john2 said:
I"m making a huge model with lots of levels. The problem I"m getting is with step levels of 300mm driving me crazy in 3d. The model is getting hard to manage. Is there a plugin which does dimensioning of the various levels [i.e. the lowest levels] of huge sized groups in a model?
and we can define the size of the groups/components. Color by Z by Chris sir is for raw geometry only.
i am also sometimes in this frustating situation, waiting for the computer, when the model is too big
what i do is open a second sketchup session, and cut/paste the area i want to work on, in this new session
when it is done, i come back to the first session, and paste the aera in place
there is a plugin that helps to do that
i recently discovered the animation plugin in examples folder
http://www.sketchup.com/intl/en/developer/docs/examples
when i zoom full screen before launching animation, i have a global view, but if i want, during the animation, to look closer at the model, i have stop it, zoom in, and resume the rotation
is there a way to keep the zoom commands active during the rotation?
so it is much more complex than what i thought i understood..
programming ruby for sketchup is a never ending game
thank you all for the details
Thank you both of you
my skills in ruby are very limited; using this code , i get in the ruby console:
"56" for a model made with SU8
"49" for a model made with SU13
it's exactly what i was looking for
i shall make a test and filter the skps to process according to the number i get
thanks again
@driven said:
@giro
here's a slightly different version I use, with a bit of explanation...
# 'IO.read' reads the open model file's first '50' bytes
> # which we 'unpack' from binary using 'm' however many times '*' until we get to the end
> # we 'pack' these with 'm' to give a human readable string
> # then we use ruby 'sub' to substitute using a Regular expression '/\D+/' any non Digits with a nothing ''
> # of the remaining string, it's the first 2 digit we want to check '[0..1]'
> ver = IO.read(Sketchup.active_model.path, 50).unpack('m*').pack('m').sub(/\D+/,'')[0..1]
> # to check, we ask if the first '[0]' is a '1', if it is we use both, if not we only use it
> ver[0].to_i == 1 ? ver ; ver = ver[0]
> puts ver
john
I have to improve a lot to be able to understand such code...
i'll try
thank you for your quick answer
@tig said:
You need to read the start of the SKP to get its version, before you try to open it or try to load it...
This with get the SKP file's version - referenced as 'v' [string]
vv=File.open(skp_path, 'rb'){|f| f.read }.unpack('m*').pack('m').gsub(/SketchUpModel/,'').to_i.to_s;if v=~/^1/;v=vv[0..1];else;v=vv[0];end
It could be greatly improved, but it works - tested in v2014/v2015 !
i found the code to retrieve the version of sketchup running on the computer, but i don't find anything to retrieve the version in which the model has been saved?
is there anything?
this would be useful to avoid processing a file that has not been saved in the current version of sketchup
interesting research
For organic modeling, it is promising
but if someone looks for accuracy, there is no solution:
to be more accurate, you need more points
the more points ruby has to process, the slower it gets
i noticed sketchup ruby gets very slow when the amount of data to process increases
[anchor= goto=:2xytkhdb]http://sketchucation.com/forums/viewtopic.php?f=323&t=59921#p548175[/anchor:2xytkhdb]
and my experience is that it is getting worse with sketchup updates; SU8 is much faster than SU14
my guess is that the memory is managed more to make fast render, than answering to ruby questions as "if..., for e in ..."
@jbacus said:
Hi guys,
In our labs, SU8 renders significantly faster than SU7 and about the same as SU7.1. YMMV, depending what you're paying attention to in performance terms. Perceived performance turns out to be surprisingly subjective and often has as much to do with the last model you opened in SketchUp (and your performance experience with it at that time) as it does with the actual raw performance of the system.
Also, SketchUp performance appears inversely proportional to the amount of time left before an important deadline
john
.
a joke might not be sufficient to explain the situation i am experiencing
on my computer, SU15 64 bits is even slower than all previous versions
and no plugin can be accused, since there are hardly any in the SU15 plugin folder
@pgarmyn said:
model=Sketchup.active_model
> ss=model.selection
> ents=model.active_entities
> ss.clear
> gps=ents.grep(Sketchup;;Group)
> ins=ents.grep(Sketchup;;ComponentInstance)
> ens=gps+ins
> ens.uniq!
> ens.compact!
> for i in (0..ens.length-2) ############changed from length-1 to length-2
> for j in ((i+1)..ens.length-1)
> if TIG.intersect?(ens[i], ens[j])
> ss.add(ens[i])
> ss.add(ens[j])
> end
> end
> end
> puts "Any intersecting groups/component-instances are highlighted..."
I think, in this case, the last TIG.intersect?(ens[i], ens[j]) is with i=length-2 and j=length-1
Otherwise j = i+1 will become ens.length : for 5 elements (0 to 4) in ens, j will be 5.
i tried to run this code in sketchup 15 64 bits, thinking it could run faster than is sketchup 8
All the contrary
it is much slower in sketchup 15 64 bits... (about 10 times...)
i am very disapointed
am i the only one to experience that?
@pgarmyn said:
I think, in this case, the last TIG.intersect?(ens[i], ens[j]) is with i=length-2 and j=length-1
Otherwise j = i+1 will become ens.length : for 5 elements (0 to 4) in ens, j will be 5.
yes, i agree
it works in both cases, but your version should be faster