sketchucation logo sketchucation
    • Login
    1. Home
    2. thomthom
    3. Topics
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    ⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
    Offline
    • Profile
    • Following 0
    • Followers 8
    • Topics 628
    • Posts 16,952
    • Groups 4

    Topics

    • thomthomT

      [Plugin] DropZone Plugin Installer

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      8
      0 Votes
      8 Posts
      12k Views
      thomthomT
      No. It will use Internet Explorer under Windows regardless of what browser you have installed. This is because SketchUp uses the OS's HTML render engine.
    • thomthomT

      Old People

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Components, Materials & Styles sketchup
      6
      0 Votes
      6 Posts
      1k Views
      thomthomT
    • thomthomT

      [News] Ruby 2.0.0 Released

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      14
      0 Votes
      14 Posts
      1k Views
      tt_suT
      @pomelo3d said: a question. For me, as a user of sketchup, are the advantages of ruby 2.0 That plugin can be created with ruby 2.0? It means that developers of plugins have a newer platform with better features to develop for. The inclusion of the standard library is probably bigger than the version bump - but again this is first and foremost benefits for the developer. The immediate advantage for the end user is that Ruby 2.0 finally support handling files with non-english characters - which was a big limitation. This also meant we finally could move the Plugins folder out of Program Files and avoid permission problems which haunted us and users. Oh, and Ruby 2.0 is supposedly faster - though we've not tested this our self.
    • thomthomT

      [Plugin] Scale Group Definition

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      15
      0 Votes
      15 Posts
      16k Views
      panixiaP
      @alexpacio2013 it's a 12 years old plugin and Thomas rarely reads here. You most likely can reach him using email to see if he can help with your request.
    • thomthomT

      [Plugin] AutoSmooth

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      32
      0 Votes
      32 Posts
      44k Views
      A
      Not smooth edge that create by tgi3d move tool Thanks [image: i0Ku_Capture.PNG]
    • thomthomT

      [Plugin] 3D Text Editor

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      202
      0 Votes
      202 Posts
      173k Views
      P
      @Dave-R Thanks!
    • thomthomT

      SourceTree Git Client for Window - Beta Signup

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      4
      0 Votes
      4 Posts
      348 Views
      thomthomT
      Aye.
    • thomthomT

      Advice on 3D printing please - my Mini Media Centre design

      Watching Ignoring Scheduled Pinned Locked Moved Corner Bar
      14
      0 Votes
      14 Posts
      532 Views
      RichardR
      I remember Thomthom when you first posted this, the design still inspires me!
    • thomthomT

      What defines an identity transformation?

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      17
      0 Votes
      17 Posts
      482 Views
      Dan RathbunD
      Which also leads to the conclusion that the Geom::Transformation class needs a properly overriden comparison methods <=>(), ==(), and eql?() ...
    • thomthomT

      Intersect ray and circle in 3D?

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      14
      0 Votes
      14 Posts
      3k Views
      AdamBA
      The best optimization, is to avoid doing work at all. Work on your algorithm first. (C++ is a superset of C) Here's some numbers I've simply plucked out of thin air: Invoking a C++ method from Ruby costs 500+ instructions. If the work you do in the method is less than this (calc distance = ~10 instructions), the cost of invocation swamps the cost of evaluation. Adam
    • thomthomT

      PDF Print/Export is crazy slow!

      Watching Ignoring Scheduled Pinned Locked Moved LayOut Discussions layout
      21
      0 Votes
      21 Posts
      9k Views
      RichardR
      @krisidious said: I've learned to use my PDF995 to print PDFs out of Layout. It's much faster and the file sizes are 1000 times smaller with all the detail. It's a pdf printer port emulator. Clever
    • thomthomT

      Disappearing toolbar under OSX?

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Discussions sketchup
      36
      0 Votes
      36 Posts
      1k Views
      D
      a lot when debugging things, or adding extra functionality [like Web Inspector] it so easy to do from Ruby Console using unix or SU cmds.
    • thomthomT

      [Code] Locking down the API

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      3
      0 Votes
      3 Posts
      187 Views
      thomthomT
      @dan rathbun said: You can shorten the file using ObjectSpace.each_object() iterators: I'm locking down more than the API - also the Ruby core classes. @dan rathbun said: It NEEDS to modify several classes, so you will need to add a require('dynamiccomponents.rb') at the top of the file, before freezing. Well, "needs"... ...they chose to. But yes. One adds exceptions as one pleases. This list is just a boilerplate lock-down.
    • thomthomT

      [Code] Grepping entities

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      19
      0 Votes
      19 Posts
      3k Views
      dkendigD
      actually, here's the benchmark code I ran class Magic;def initialize(&block) @block=block;end def ===(other) @block.call(other) end end def GetVrayImportantArrayFromGrepDrawingelement(entities) return entities.grep(Sketchup;;Drawingelement){|ent| false == (ent.class == Sketchup;;Edge) ? ent ; nil}.compact end def GetVrayImportantArrayOfTypesFromGrep(entities,typeHash) for curType in typeHash.keys() typeHash[curType] = entities.grep(curType ) end end def GetVrayImportantArrayFromGrepMagic(entities) return entities.grep(Magic.new {|ent| ent if(ent.class == Sketchup;;ComponentInstance or ent.class == Sketchup;;Group or ent.class == Sketchup;;Face)}) end def GetVrayImportantArrayFromLoop(entities) vrayImportant = Array.new() for ent in entities.to_a if ent.class == Sketchup;;Face or ent.class == Sketchup;;ComponentInstance or ent.class == Sketchup;;Group vrayImportant.push(ent) end end return vrayImportant end def RunBenchmarkOnEntities(entities) testHash = Hash.new() testHash[Sketchup;;Face] = [] testHash[Sketchup;;ComponentInstance] = [] testHash[Sketchup;;Group] = [] grep_drawing_ele_result = grep_magic_result = compare_loop_result = nil grep_drawing_ele_start_time = Time.now.to_f grep_drawing_ele_result = GetVrayImportantArrayFromGrepDrawingelement(entities) grep_drawing_ele_end_time = Time.now.to_f grep_types_start_time = Time.now.to_f grep_types_result = GetVrayImportantArrayOfTypesFromGrep(entities,testHash) grep_types_end_time = Time.now.to_f grep_magic_start_time = Time.now.to_f grep_magic_result = GetVrayImportantArrayFromGrepMagic(entities) grep_magic_end_time = Time.now.to_f compare_loop_start_time = Time.now.to_f compare_loop_result = GetVrayImportantArrayFromLoop(entities) compare_loop_end_time = Time.now.to_f puts "drawing_ele_test time; #{grep_drawing_ele_end_time - grep_drawing_ele_start_time}, resulted in #{grep_drawing_ele_result.size} elements found" puts "types_test time; #{grep_types_end_time - grep_types_start_time}, resulted in #{testHash.values.flatten.size} elements found" puts "magic_test time; #{grep_magic_end_time - grep_magic_start_time}, resulted in #{compare_loop_result.size} elements found" puts "loop_test time; #{compare_loop_end_time - compare_loop_start_time}, resulted in #{compare_loop_result.size} elements found" return nil end RunBenchmarkOnEntities(Sketchup.active_model.entities)
    • thomthomT

      Controlling texture quality?

      Watching Ignoring Scheduled Pinned Locked Moved V-Ray render plugins extensions
      21
      0 Votes
      21 Posts
      779 Views
      thomthomT
      But in terms of the model I posted, the texture has black and white lines - the most extreme color values you can get. You'd think that was enough contrast for the threshold to trigger higher samples?
    • thomthomT

      Z-Depth gone crazy

      Watching Ignoring Scheduled Pinned Locked Moved V-Ray render plugins extensions
      18
      0 Votes
      18 Posts
      2k Views
      andybotA
      @thomthom said: But I haven't been rendering with Alpha. It's been all without. I had a chance to look at it some more. You're right, alpha was not on - but it still rendered areas without geometry as black. I tried the "z-depth catcher" plane - and it does work in making the background white. I did a quick check- and if the plane is beyond the rear clipping distance, it still shows up as white, so I assume that anything that's clipped by vray is drawn as white, but anything transparent is shown as black. I agree that it's really not an optimal situation. It should clip the foreground to black, the background to white, and draw transparency as white (to assume that you are looking at the back distance...)
    • thomthomT

      Make OSX WebDialog alert of script errors?

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      6
      0 Votes
      6 Posts
      143 Views
      Dan RathbunD
      The MSDN page says there are no standards that apply to onerror (its IE only.) You could it on both the document and window objects just to be sure. If Safari is DOM Level 3, then you may need to use: %(#8000BF)[window.addEventListener("error",*fHandlerName*,*bCapture*)] [window.addEventListener](http://msdn.microsoft.com/en-us/library/ff975245(v) DOM Level 3: Error Example: http://msdn.microsoft.com/en-us/library/hh772306(v=vs.85).aspx Or you could %(#8000BF)[catch] the errors with JS: [url=http://msdn.microsoft.com/en-us/library/4yahc5d8(v=vs.85).aspx:3cyk4r6q]try ... catch ... finally[/url:3cyk4r6q] [url=http://msdn.microsoft.com/en-us/library/85fscz6h(v=vs.85).aspx:3cyk4r6q]throw[/url:3cyk4r6q] [url=http://msdn.microsoft.com/en-us/library/dww52sbt(v=vs.85).aspx:3cyk4r6q]Error object[/url:3cyk4r6q]
    • thomthomT

      Can you get a list of OSX fonts somehow?

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      110
      0 Votes
      110 Posts
      15k Views
      D
      This is probably my last effort on this.... circles, but, I finally figured out find in Ruby Console, escapes, escapes, escapes... THE THIRD WAY... no Font Book... no fc-list... just plain old find >> mdls... not the fastest, but not too bad. inculed is Dan's tester, these all created 3D text from console, only Font Book and usr/local/bin/fc-list do that out of the can. a=(`find /System/Library/Fonts\ /Library/Fonts\ ~/Library/Fonts\ \\( -name "*.ttf" -o -name "*.otf" \\) -type f`).split("\n").map! { |f| f.gsub(" ", "\\ ")} #need this or something to catch spaces in filenames b=(a.collect{|x| `mdls -name com_apple_ats_name_family -raw #{x}`}).map! { |f| f.split(",")[0]} #the other items in each array are unicode strings for other languages, if you want those use Font Book c=b.map { |f| f[/[("\s]+([^"\n]+)[)"\s]+/m,1] }.uniq!.sort![2..-1] #[0] is empty, [1] is a dot file, could remove them macFonts = c chunksize = 1 chunk = 1 limit = macFonts.length model = Sketchup.active_model fsize = 1.0 linespacing = 1.2 bold = false italic = false thick = 0.05 filled = true quality = 0.0 i = 0 while i < limit begin # model.start_operation("3D Fontnames (#{chunk})") # chunksize.times do |n| # break if i == limit # item = macFonts[i] grp = model.entities.add_group() grp.entities.add_3d_text( "#{item}", TextAlignCenter, "#{item}", bold, italic, fsize, quality, 0.0, filled, thick ) grp.name= item grp.move!( Geom;;Transformation.new(Geom;;Vector3d.new(0,-(i*linespacing),0)) ) # i += 1 # end # chunk # model.commit_operation() # rescue Exception => e puts("\n*** macFonts group Error! ***") puts(" i = #{i}") puts(" chunk = #{chunk}") puts(" font = #{macFonts[i]}\n") model.abort_operation() puts("Error #<#{e.class.name}; #{e.message}>") puts(e.backtrace) if $VERBOSE raise end chunk += 1 end # while
    • thomthomT

      [API] Menu.add_item( caption, index )

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      8
      0 Votes
      8 Posts
      534 Views
      J
      Just confirmed it does work in sub-menus. [image: 8NrV_2012-11-04_134125.jpg]
    • thomthomT

      [Plugin] VirtualStore Check

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      6
      0 Votes
      6 Posts
      16k Views
      A
      Marc, you need to first pick the forum you would like the topic to be in. Then click the "post a new topic" button
    • 1 / 1