⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
  • What Motivates You?

    15
    0 Szavazatok
    15 Hozzászólások
    2k Megtekintések
    medeekM
    What motivates me with programming plugins is that it allows me to be creative and create something that never existed before.
  • Please help me to get a group's layer

    7
    0 Szavazatok
    7 Hozzászólások
    1k Megtekintések
    L
    Thank you Masters. I have another problem: I wrote code to make BOM base on ComponentReport of TIG. Then I place data on a html datatable.So I have to replace all "\n" by "<br>" like this: des=c.definition.description des=des.gsub("\n","<br>") Then the datatable looks good. Then I save data in a .xlsx file. Still look good when openned in Excel. But when I inserted it to LayOut, it create "x000D" before every new line in cell. Please help me how to solve this. Thanks a lottt.
  • Get data from already opened workbook

    4
    0 Szavazatok
    4 Hozzászólások
    671 Megtekintések
    D
    Wow, I got it to work!! require 'win32ole' xl = WIN32OLE;;connect('Excel.Application') xl.visible=1 worksheet = xl.Worksheets(1)
  • Insert Picture into excel

    3
    0 Szavazatok
    3 Hozzászólások
    799 Megtekintések
    Dan RathbunD
    ~ (1) Only write to paths that the user has write permissions on. @davesexcel said: # Puts in SketchUp install directory by default This path is a binary program path and the normal user does not have write permissions there. This is not the default path for Ruby when SketchUp v13+ is running. After SketchUp loads Ruby and it's API, it sets the working directory to the User's "Documents" directory. SketchUp 2013 and higher: Dir.pwd %(green)[#=> C:/Users/Dan/Documents] SketchUp 8 and earlier just left the current working directory in SketchUp's program path (which was a bad thing.) (2) In code when you are doing a write then read, you need to wait until the file is finished being written, and the OS file system advertises that it is "ready" and available. (ie, the old file handle is closed.) The Ruby standard File class has some class methods to help you determine if paths are readable or writable by the current user, and whether the OS reports if the file is finished being written (ie, does it exist yet?) def image_from_model( write_path = 'S;/Stairs/Stair Pics/', keys = { ;filename => 'write_image.jpeg', ;width => 500, ;height => 400, ;antialias => false, ;compression => 0.5, ;transparent => false } ) return false unless File.writable?(write_path) image_path = File.join( write_path, keys[;filename] ) keys[;filename]= image_path model = Sketchup.active_model view = model.active_view view.zoom_extents Kernel.sleep(2.0) # wait for view to redraw view.write_image(keys) @tid = UI.start_timer(0.5,true) { if File.exist?(image_path) UI.stop_timer(@tid) insert_to_excel(image_path) end } end def insert_to_excel() xl = WIN32OLE.new('Excel.Application') xl.visible=1 wb = xl.Workbooks.Open('C;\TestFolder\Test2.xlsx') worksheet = wb.Worksheets('Sheet1') worksheet2 = wb.Worksheets('Sheet2') worksheet.Range('a1').Value=12 worksheet.Range('a1;b4').Value #-----Pictures Insert Code--------------- pic = worksheet2.Pictures.Insert('S;/Stairs/Stair Pics/write_image.jpeg') range = worksheet2.Range('A1;F15') pic.ShapeRange.LockAspectRatio = false pic.Top = range.Top pic.Left = range.Left pic.Width = range.Width pic.Height = range.Height # write done message to SketchUp console; put "Finished inserting image in Excel." end
  • Bugsplat in Sketchup 2017 when manipulating groups

    2
    0 Szavazatok
    2 Hozzászólások
    713 Megtekintések
    TIGT
    Unfortunately v2017 changes the way references can be got and reused. A few pointers... Use: entities = model.**active_**entities Also you can 'grep' to filter many kinds of 'collections' thus: puts face = entities.grep(Sketchup::Face)[0] return nil unless face The 'face' reference is lost in v2017 after the 'explode', instead consider this... group.explode puts face = group2.explode.grep(Sketchup::Face)[0] Now 'face' is a different, but valid, reference... I added the 'puts' to print the references in the Ruby Console. In < v2017 they should be the same, but in v2017 they will differ. This issue has meant that many authors have had to recode some of their plugins to accommodate the changes...
  • [Code] Material picker

    14
    0 Szavazatok
    14 Hozzászólások
    2k Megtekintések
    sdmitchS
    @dan rathbun said: I looked in my 2016 Plugins folder and found what I had working last June 2016. It seems to work for me on SU2016. Thanks Dan. I have come up with a different solution to what I was attempting and it works with all versions.
  • Ruby saveas .XLSM, format code

    5
    0 Szavazatok
    5 Hozzászólások
    2k Megtekintések
    Dan RathbunD
    I did a search in the MS Excel Dev forum on "+SaveAs +xlsm +UndefinedConversionError", and got 947 hits. (You can browse those yourself.) https://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=exceldev%26amp;filter=alltypes%26amp;brandIgnore=True%26amp;sort=relevancedesc%26amp;filter=alltypes%26amp;searchTerm=%2BSaveAs+%2Bxlsm+%2BUndefinedConversionError At this point I would double-check that any macros in the Workbook do not have errors, that could give the file export routine issues.
  • Get a list of File names on the input box

    9
    0 Szavazatok
    9 Hozzászólások
    828 Megtekintések
    Dan RathbunD
    OH! I see your booboo: inputbox always returns an array (except when the user cancels it returns false. So always check the result boolean-wise.) input = UI.inputbox prompts, defaults,list, "File Name" return unless input j = input[0]
  • Coping with SU2017 entity handling changes

    9
    0 Szavazatok
    9 Hozzászólások
    900 Megtekintések
    Dan RathbunD
    @sdmitch said: I have tried using .clone and .dup but neither remedy the problem. Any guidance will be greatly appreciated. These two methods are Ruby Core functions that rely upon specific Ruby housekeeping methods to do the copying. The SketchUp API has not set up these "housekeeping" methods, so doing this will not work. They have only in a few places "mimicked" a clone method (mostly in the Geom classes,) and a partial cloning in Group#copy. (It does not copy over attributes and other parameters.)
  • No Implicit Conversion fron String in Messagebox

    7
    0 Szavazatok
    7 Hozzászólások
    899 Megtekintések
    TIGT
    ALL of SketchUp's internal database lengths are stored in inches, irrespective of the units you use. In the API there are the numeric and length classes. So if you have an input value that defaults to a 'length' - e.g. 9.feet, or any other units format - then it is always 'stored' and 'processed' in inches [9*12=108"]. However, this is flexible as the user can input in any units provided they use a units suffix: however how it's displayed in the input-box depends on the current model info > units settings... Otherwise you need to default to a string value and then reverse-engineer that - e.g. h="9" [read from the input[1]] which you then reset for later use as a parallel value hft=h.to_f.feet So the input is always taken as a decimal-feet value, but then used in inches internally...
  • Fresh active_view when click on menu item

    2
    0 Szavazatok
    2 Hozzászólások
    552 Megtekintések
    TIGT
    Try adding: Sketchup.active_model.active_view.invalidate ???
  • Delete a group in ruby

    2
    0 Szavazatok
    2 Hozzászólások
    769 Megtekintések
    TIGT
    Assuming you have no more need of the group or its contents use: wandgroep.erase! See here: http://ruby.sketchup.com/Sketchup/Drawingelement.html#erase%21-instance_method BUT if you want to explode it and put its contents into the group's previous context, use: wandgroep.explode See here: http://ruby.sketchup.com/Sketchup/Group.html#explode-instance_method
  • Plugin debugger workflow

    3
    0 Szavazatok
    3 Hozzászólások
    621 Megtekintések
    W
    I tried by change name of load_plugin.rb to z_load_plugin.rb but it seems not solve my problem
  • User ending a program

    6
    0 Szavazatok
    6 Hozzászólások
    2k Megtekintések
    K
    The program I used as a model when starting used that method. However as I added more functions it became almost impossible to find how to get out to the end of the mouse click down def. Keith
  • Count excel rows

    3
    0 Szavazatok
    3 Hozzászólások
    834 Megtekintések
    Dan RathbunD
    More Specifically: Would the Range.Find method help? Range.Find method
  • Trouble finding faces

    2
    0 Szavazatok
    2 Hozzászólások
    542 Megtekintések
    sdmitchS
    @davesexcel said: I am using an If else statement, I got it to work earlier in the code, but now I am having an issue grouping a new entity and finding it's face, it has to do with adding an arc and not adding an arc. It seems to me that you define 'edg' twice if l=="Yes" but don't define it at all if l=='No'. #ROUND Nose Yes/No<<<<<< if l=="Yes" puts "top hanger round nose" #add arc<<<<<< edg = ent5.add_line [0,b+3,b-c], [0,b+3-0.5,b-c] ;vrt1=edg.end ent5.add_arc [0,b+3-0.5,b-(c/2)],[0,0,b+3-1],[-1,0,0],-c/2.0,0,180.degrees,12 edg = ent5.add_line [0,b+3+h,b], [0,b+2.5,b];vrt2=edg.start #end Add Arc<<<<< else puts "top hanger square nose" edg=ent5.add_line [0,b+3,b-c], [0,b+3-1,b-c]#<<<< edg ent5.add_line [0,b+3-1,b-c], [0,b+3-1,b] ent5.add_line [0,b+3-1,b] , [0,b+3+h,b] end #add the face to the entities in the model edg.find_faces; face=edg.faces[0] face.pushpull wdth [image: 9RTt_Stairs.gif]
  • Geometric Calculation with ruby

    6
    0 Szavazatok
    6 Hozzászólások
    771 Megtekintések
    thomthomT
    Using the Geom methods, and the methods on Geom::Point3d, Geom::Vector3d as much as possible is beneficial for performance. The SketchUp API methods are implemented in C++ and will be faster than pure Ruby code.
  • Save and recall parameters of an object created with ruby

    3
    0 Szavazatok
    3 Hozzászólások
    637 Megtekintések
    Dan RathbunD
    You should have a look at the SketchUp Team's Shapes and Window Maker example extensions. They (and a few others) use a library class called Parametric that handles creating a inputbox of parameters and saves them into an attribute dictionary attached to the (group or component) object. Why reinvent the wheel?
  • Edge observer

    2
    0 Szavazatok
    2 Hozzászólások
    596 Megtekintések
    inteloideI
    Well, a start of explaination and solution, here : http://forums.sketchup.com/t/edge-change-observer/8184 : Put an observer on edge.start and edge.end Thanks TT !
  • Generating PDF and MS Excel Documents within SketchUp API

    2
    0 Szavazatok
    2 Hozzászólások
    1k Megtekintések
    thomthomT
    Not sure what is available in pure Ruby, but if you create Ruby C Extensions it open up a whole lot more - as you can make use of C/C++ libraries. It's often a lot more libraries available for C/C++ when you want to go beyond the standard Ruby API.

Advertisement