🏒 PlaceMaker | 25% off for February including new Google Earth data imports! Learn more
  • State of Observers β€” 28 February 2010

    38
    0 Votes
    38 Posts
    16k Views
    thomthomT
    @dan rathbun said: Seems I remember that AppObserver::onNewModel does not get called when Sketchup starts up. Is this generally true.. or specific to PC or Mac ? Aye.
  • SU 8 Mac & strange content

    6
    0 Votes
    6 Posts
    795 Views
    Dan RathbunD
    Just a reminder (for anyone reading,) that we should not change entities when iterating the C++ entities collection. (Strange things can happen... items can be missed, or be processed more than once, etc.) If you need to change entities, then make an array copy to iterate: ents = Sketchup.active_model.entities**.to_a** ents.class Array Although an exporter usually should not be making changes to the model.
  • Save pages as jpg-files

    2
    0 Votes
    2 Posts
    724 Views
    TIGT
    Manually File Export 2D image select jpg etc and add a name OR get this http://www.smustard.com/script/SceneExporter [free] or this http://www.smustard.com/script/SceneExporterPro [$10] which exports all of the Scene tab views as jpg image files named after the tab...
  • Modules - are they needed if ...

    5
    0 Votes
    5 Posts
    344 Views
    chrisglasierC
    @thomthom said: Javascript namespacing: http://www.dustindiaz.com/namespace-your-javascript/ http://www.crockford.com/javascript/private.html Thanks for that TT - all good stuff which I have implemented in part - still really trying to get to grips with it though. But my current concern relates to this Diaz comment: @unknownuser said: ... avoid conflicts with external application code, playing nice with the "other JavaScript kids," ... I don't think relying on playing nice is realistic in a global environment but making sure same named objects and functions overwrite existing by loading or reloading immediately prior to use may be. I'm just not sure if there are other implications. Thanks
  • Face.classify_point - compare results?

    25
    0 Votes
    25 Posts
    1k Views
    T
    Alright so I posted my results on the api but is it possible to edit it in case there is a mistake?(not that I've found one) Oh and it's posted as anonymous.... whatever.
  • Get Current Units

    5
    0 Votes
    5 Posts
    1k Views
    thomthomT
    If you convert a string number into a Length ( .to_l ) and the string contains no unit indication it assumes the units is the current model unit. "50".to_l Returns a Length: 1.96850393700787 (assuming the model units where mm) "50m".to_l Returns a Length: 1968.50393700787 regardless of what the model units are because the unit is specified.
  • Taking content from arrays to open a .3ds file

    2
    0 Votes
    2 Posts
    217 Views
    TIGT
    Your machine = "a[0].3ds" Is simply a string - with no reference to array 'a' at all. machine = a[0].to_s+".3ds" Takes the value of the first item in the array 'a' and adds .3ds onto the end of that all as a string... If you are sure the first item in the array 'a' is a string you don't need the .to_s part a[0]+".3ds" will do...
  • [code] Load Instructor v1.0.1

    6
    0 Votes
    6 Posts
    2k Views
    B
    Just updated the code with a very quick fix. In the previous version on PC, there was an error produced in the ruby console along the lines of "Directory Not Empty". In early beta versions the temporary folder name was created from a unique string using a timestamp. In the current version, consistent temporary folder names was implemented, so any previous directories needed to be deleted.. I've expanded the delete method in the script to search the subdirectories of the temporary folder if it exists and clear them out before deletion. This stops the error. Also, when the temporary location was more than one folder deep (ie. my_script/instructor), the folder 'my_script' was not being created. V 1.0.1 searches each folder in your custom temporary path and creates the folder if it doesn't exist, removing this error. This update is essential for proper implementation of Load Instructor.
  • Virtual entities or model

    3
    0 Votes
    3 Posts
    250 Views
    T
    Sweet. Thanks a lot TIG, that should work.
  • Alternate directory for Plugins

    9
    0 Votes
    9 Posts
    2k Views
    Dan RathbunD
    For users, I think putting the option under the Windows menu, may be confusing. Sketchup should have a "Settings" or "Options" menu, but well... my 2nd choice would be under a "Options" submenu of the "Plugins" menu. Is it useful ?? Well yes... I am putting 3 folder open buttons on my Console Toolbar ("Shared", "User" and "Custom",) that can be configured to open certain folders much the same way you have done for specifying them. But the UI.inputbox just cannot do the job. See image: http://forums.sketchucation.com/download/file.php?id=65052
  • All faces with their backs facing the camera.

    9
    0 Votes
    9 Posts
    410 Views
    M
    i now my idea sounds insane but it could be a good way for those who model building as boxes with no details inside them. But really thank you for all the great help
  • Instructor content

    84
    0 Votes
    84 Posts
    8k Views
    Dan RathbunD
    Here's a version cleaned up and made into a Mixin module. Added Class Variables declarations: # CLASS VARIABLES @@relative_instructor_path = '' @@temp_instructor_folder = false @@tool_filepath = '' # must be redefined in the Tool class for rbs files Added method definitions: public def relative_instructor_path return @@relative_instructor_path end def temp_instructor_folder return @@temp_instructor_folder end private # initialize() # # Likely to be redefined in the Tool class definition. # We define it here just in case the Tool author does not. # def initialize help_setup() end # help_setup( instructor_folder=false, temp_folder=false ) # # Sets up and inits some instance variables used for # the tool's Instructor help system. # # ** Must be called by the Tool's initialize() method. ** # def help_setup(instructor_folder=false, temp_folder=false) # if @@tool_filepath.empty? if __FILE__ != '(eval)' && File.exist?(File.expand_path(__FILE__)) @@tool_filepath = __FILE__ else raise(ScriptError,"#{self.class.name}; @@tool_filepath class variable error. @@tool_filepath must be declared for rbs files!") end else unless File.exist?(File.expand_path(@@tool_filepath)) raise(ScriptError,"#{self.class.name}; @@tool_filepath class variable error. File '#{@@tool_filepath}' does not exist!") end end # if instructor_folder @instructor_folder = instructor_folder else @instructor_folder = getDefaultInstructorFolder() end if temp_folder @temp_folder = temp_folder elsif RUBY_PLATFORM =~ /darwin/i # on a Mac @temp_folder = @instructor_folder else @temp_folder = getDefaultTempFolder() end # @@relative_instructor_path = returnRelativePath() # end #def help_setup() and: # getInstructorContentDirectory() # # Callback for tool to give Sketchup the relative path # to the tool's help directory. # def getInstructorContentDirectory unless @@temp_instructor_folder # copy help files copyInstructor() @@temp_instructor_folder = returnTempInstructorFolderName() end return @@relative_instructor_path end #def I did not make any changes to the "engine" methods, except: getDefaultInstructorFolder() changed all __FILE__ to @@tool_filepath returnTempInstructorFolderName() inserted a 'short circuit' as the first line, for Macs return @temp_folder if @temp_folder == @instructor_folder File Removed - Get the latest version in Niall's [ code ] topic: [ code ] Load Instructor I also wonder if there should be an AppObserver instance that deletes the temp/instructor file at the end of the session ??
  • Rename the names of the materials

    4
    0 Votes
    4 Posts
    285 Views
    bagateloB
    TIG I'm so grateful for your help. But if I like to complete clean old names, and serialize by numbers? Thanks again. This is great to me.
  • Orient Faces

    3
    0 Votes
    3 Posts
    3k Views
    M
    Great, it does the job for me. Thanks again
  • Over right the face class

    4
    0 Votes
    4 Posts
    212 Views
    M
    Tig you are right, using AttributeDeictionary is the right way to go and does exactly what i need. Thank you
  • Zoom Selection

    36
    0 Votes
    36 Posts
    5k Views
    D
    @pixero said: @cadfather said: if i select something inside of a group it does not work - but will fit the contents to screen if nothing is selected. What do you mean with "It doesnt work" ? What do you want it to do? If you are inside a group the group itself isn't selected. My script zooms in to whats selected. Inside group or not. Thx a lot! Great plugin. Work fine, no problem with selection zoom. Can you recommend me any other useful plug?
  • Lock an object with password?

    8
    0 Votes
    8 Posts
    326 Views
    Rich O BrienR
    SimLab have a plugin that exports to PDF
  • Urgent question to the ruby API gurus

    2
    0 Votes
    2 Posts
    204 Views
    thomthomT
    Change the camera: http://code.google.com/apis/sketchup/docs/ourdoc/camera.html#set
  • Ruby created images not ok?

    3
    0 Votes
    3 Posts
    243 Views
    P
    Hey Tig, Thx for the answer. Why i am not using teh animation exporter is because it skips page observers. Since changing from one page to another invokes a function in my model i cannot use it. That's why i'm looking for an alternative to create movies. You think it's possible that adding the compression an transparent factor solves the issue? Cause i have also tried it with images generated by Export-->2D graphic and that had the same error. Thx!
  • Uploading JSON with js/php

    4
    0 Votes
    4 Posts
    276 Views
    chrisglasierC
    The answer from Stack Overflow is: <span class="syntaxhtml">d&nbsp;=&nbsp;<span class="syntaxdefault"><?php&nbsp;</span><span class="syntaxkeyword">echo&nbsp;</span><span class="syntaxdefault">json_encode</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$target_path</span><span class="syntaxkeyword">);&nbsp;</span><span class="syntaxdefault">?></span>;</span> They pointed out this is only useful if you are working with localhost.

Advertisement