FredoBend | Powerful new bending tool for SketchUp Download

Alkategóriák

  • No decscription available

    20 Témakörök
    462 Hozzászólások
    HornOxxH
    @pilou said: More appetizing in chocolate! Eggs are good as well - but only very fragile when falling down in SketchyPhysics
  • WebDialog.set_html fails under Safari 5.0.6

    111
    0 Szavazatok
    111 Hozzászólások
    22k Megtekintések
    P
    driven, thx!! I have reported the error an already received a debugged version (bug at their side)
  • [Proof of concept] UVunwrap

    11
    0 Szavazatok
    11 Hozzászólások
    2k Megtekintések
    McGyverM
    I keep peeking in here hoping I'll see something that will help me understand this better... But now I suppose I will actually download it and try and to figure it out... this is something akin to a Gerbil sitting in the cockpit of an F-22 and saying " I can do this!!"... But either way I've got to try it. I wanted to say thanks for this script and for trying to find another easier way to help those of us that are UV mapping impaired! I'm really hoping to figure out how to use this to texture cylinders... Too bad there is no simple native method to paint a seamless texture on a cylinder in SU... I'd think that would seem to be a basic necessity to the SU programers? Thanks again!! Edited to add- THANK YOU!! It worked!! Not right at first, it seemed to not want to activate, but after a few tries it did and I got it to work! That is so COOL! I'm going to experiment some more... Thank you x 1000! Oh yeah, I don't know if anyone else has this problem too, but when I am viewing the video clip you made, the bottom part of the screen is cut off... so when you click on your plugin the drop down menu is below the field of view and I can not see what option you are choosing. I just thought you might want to know. [image: Iedq_Menu.jpg]
  • Reverse Face if side clicked on is the back.

    5
    0 Szavazatok
    5 Hozzászólások
    330 Megtekintések
    TIGT
    @unknownuser said: @tig said: See this http://forums.sketchucation.com/viewtopic.php?p=357136#p357136 or FrontFace. Sorry Tomasz - I had overlooked your similar tool - there are indeed lots to choose from
  • Alternative to angle_between?

    26
    0 Szavazatok
    26 Hozzászólások
    4k Megtekintések
    M
    Not ruby programmer so leave that up to you, but for 3d vectors and using the general approach the angle is the shortest great circle path between the two. The angle is atan2( Norm( cross(a,b)), dot( a,b)). This means the angle is 0 to pi() FYI http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/index.htm and http://www.mathworks.com/matlabcentral/newsreader/view_thread/151925
  • Hook Procedure (win32 api)

    6
    0 Szavazatok
    6 Hozzászólások
    3k Megtekintések
    A
    , thanks Dan... Have you tried downloading the "HookProc.zip", which is on my first post of this topic? If you're willing to, can you please download it to plugins and test it if it works or not? Here is the reference: Items KeyboardProc - The stated script should write an active keyboard message to logLine or text and remove the message from being sent to current thread. Ex: Lets assume virtual keyboard message "p" is shortcut to pushpull. If you click key "p" while the KeyboardProc is not active, the shortcut should call the pushpull tool. If you click key "p" while the KeyboardProc is active then the pudspull tool won't be called. Keyboard messages will not be removed from other windows. It will just remove them from the stated window, which in this case would be the sketchup window. MouseProc - Should moniter/display mouse messages sent to the thread. Default script will not remove the messages. Ex: message 512 - mouse move, 522, mouse wheel rotate, 513 / 514 - mouse button clicks. LowLevelKeyboardProc - Should moniter/display and remove keyboard messages from the module handle. Ex: Lets say I have two windows: Sketchup and notepad++. In Sketchup window I activate LowLevelMouseProc, move to notepad++, and begin to type. Trying to type I don't get anything. It's because LowLevelKeyboard Hook Procedure prevents most the keyboard messages from to be sent to the module handle. Well, the once that it can't remove are some keyboard combination shortcuts, like "ctrl-alt-delete", "alt-lshift-PtrScn" and more. LowLevelMouseProc - Same as lowLevelKeyboardProc, but this time should display mouse messages sent to the module handle. Well you can state it to remove messages by changing "0" return value to "3", but by doing that your comp will act like the mouse is disconnected from the computer. If you'd want to remove only some mouse messages from module handle, then just write a block like "If wParam==512 then 0 else 3 end". All of the hooks above can be toggle by being set or unhooked. RemoveAll - Unhooks all hooks above. ClearTextQueue - Not really important in that role. Just clears the text queue that is displayed. LogLine remove's lines from text queue automatically, though just added for fun. Think this is all Thanks...
  • Erase a single unused Definition

    4
    0 Szavazatok
    4 Hozzászólások
    548 Megtekintések
    TIGT
    The definition.entities.clear! should work much as my suggestion, inside the operation block? You could always suffix its new name with "[Untrimmed]" so it's easy to spot? You could also add a closing dialog 'Remove the now Unused Untrimmed Definition from the Browser ?', Yes|No Then the user decides... I have just written something very similar myself, within a broader 'commercial' tool, BUT that auto-removes the old untrimmed definition. That one gets complicated as it is say a panel component that is trimmed on one edge using special shaped instances [it's remade as a component rather than a group], a 'hidden' proxy of the original untrimmed panel is retained after the trimming is done, it is also given attributes defining what was done on that trim; then you can trim the 2nd, 3rd, 4th edges etc, each time the attributes are expanded for each edge trimmed; now the rub - the edge trimming is editable per edge, so if I want to redo the trimming to the 2nd edge I have to start with an untrimmed version again [derived from the proxy] then read the attributes that it has and repeat the 1st then the new 2nd trim and then repeat the 3rd, 4th etc. This is because trimming one edge affects the abutting other two edges... I have taken a while to get my head around it! Now you can trim parts out of all sides of the panel using various shaped 'notches' and edit them too... Now to finish the next part - these trimmed edges marry into panels meeting at right-angles and their 'notched' edges have to be the reverse of the other panels... A tangle of attribute crosschecks and a trimming frenzy ensues...
  • Is this plugin possible?

    3
    0 Szavazatok
    3 Hozzászólások
    274 Megtekintések
    T
    @byrnebm: Did the plugin TIG suggested work for you? If not I might be able to write something up for you to brush up on my ruby skills. Let me know.
  • Webdialog example

    6
    0 Szavazatok
    6 Hozzászólások
    314 Megtekintések
    jolranJ
    Great info. I probably should get that windowiser4 plugin then. It does seam very handy as a plugin, as well Thanks
  • Sketchup API (Ruby) - offline copy

    14
    0 Szavazatok
    14 Hozzászólások
    2k Megtekintések
    T
    You can use WinHTTrack to make a copy of the API on a hard-drive.
  • Temporarility Changing Materials

    7
    0 Szavazatok
    7 Hozzászólások
    431 Megtekintések
    Dan RathbunD
    @joshb said: Thanks again Dan! Storing the material name works great. Your welky! However writing attributes into the model DOM.. is going to slow things down (and add extra items onto the undo stack.) Since this is temporary... why not just keep the references in memory? A Hash object will do fine: # a new Hash to hold the material refs for each entity prev_matls = {} # keep the entity refs held in an Array, like; ents = model.entities.to_a # use Ruby's built-in Array iterator to save material refs ents.each {|e| prev_matls[e]= e.material } # now the hash has unique keys because each entity ref is unique # # your view wizard.. whatever # # restore them; ents.each {|e| (e.material= prev_matls[e]) if prev_matls[e].valid? }
  • UI openpanel - path issue?

    3
    0 Szavazatok
    3 Hozzászólások
    623 Megtekintések
    Dan RathbunD
    If you are asking, "Can UI.openpanel return a path?" yes... by hotwiring it... baseDir = Sketchup.find_support_file('Plugins') relDir = "examples" title = "Choose a Dir..." openpath = File.join(baseDir,relDir) my_path = UI.openpanel( title, openpath, "*." ) if my_path.nil? # the user cancelled the dialog else my_path = File.expand_path( File.dirname(my_path) ) end (Edited for clarity, added openpath local.) The filetype filter does not work on PC. (Windows itself is overriding the parameters, using MRU settings in the Registry for the File Open dialog.) Now if you are wondering if you can first set the working dir, and will the UI.openpanel go there? Not really,.. you must make the call with the wd: Dir.chdir('C;/') my_path = UI.openpanel( "Choose Dir...", Dir.getwd, "*." ) if my_path.nil? # the user cancelled the dialog else my_path = File.expand_path( File.dirname(my_path) ) end
  • Erasing entites problem?

    8
    0 Szavazatok
    8 Hozzászólások
    554 Megtekintések
    TIGT
    face = entities.add_face($pt6, $pt8, $pt7, $pt5) is logical as you are adding a face from a set of points. I fail to see the full logic behind your suggested new API method face = entities.erase_face($pt6, $pt8, $pt7, $pt5) - but you could of course mimic it within your own method quite simply, using other existing API methods [which is what your suggested new API method would in effect have to do if it were implemented] - like this... def erase_face(entities, points_array, all_edges=false) face=entities.add_face(points_array) return false if not face or not face.valid? edges=face.edges face.erase! edges.each{|e| if e.faces.length==2 && e.faces[0].normal.dot(e.faces[1].normal) > 0.99999999 && e.faces[0].material==e.faces[1].material && e.faces[0].back_material==e.faces[1].back_material e.erase! elsif not e.faces e.erase! end } if all_edges return true end which you'd use like this... erase_face(entities, [$pt6, $pt8, $pt7, $pt5]) to erase the face if it can exist from the given points. OR like this... erase_face(entities, [$pt6, $pt8, $pt7, $pt5], true) to erase the face if it can exist from the given points, AND the 'true' argument to erase all of its edges too - but of course because other faces might also rely on some of these edges and unexpectedly vanish with them too there is a trap test not to remove those unless they are 'coplanar'... It returns 'false' if no face and 'true' if it is erased. PS: Please avoid using global variables like $pt6, when @pt6 would work within a module/class instance methods and @@pt6 across class use. You will rarely need to create $vars in your own code...
  • Trace what prevents an object from being GC'd?

    22
    0 Szavazatok
    22 Hozzászólások
    2k Megtekintések
    Dan RathbunD
    @unknownuser said: (http://forums.sketchucation.com/viewtopic.php?f) of this topic":25oe0j3o] Did you dispose of all Locals, Constants, instance vars, and perhaps maybe even Procs that are within your subclass? That said... you should be able to have proc refs, if they are instance @refs because they are likely to have refs inside them that ref instance objects. If the class is a singleton (most WebDialogs are,) just limit the number of instances to 1, in the wrapping namespace, the same way you would for a tool instance.
  • Web page loaded while ruby processes?

    9
    0 Szavazatok
    9 Hozzászólások
    399 Megtekintések
    fredo6F
    @thomthom said: Fredo uses timers to slice up the work, but it makes the total processing time a lot slower. Actually the overhead is reasonably small. The goal of this mechanism is just to give back control to the UI, in case the user has clicked or typed a key. This is not to perform heavy stuff while the script is itself busy with computation. Fredo
  • Find any methods that are never called?

    3
    0 Szavazatok
    3 Hozzászólások
    194 Megtekintések
    thomthomT
    @tig said: add =begin...=end around the method and retest the script: Make sure to restart SU before retesting. Because a load will not remove the old method. Easy trap to fall into, as you won't notice something failed until you start the next time.
  • View.guess_target algorithem?

    7
    0 Szavazatok
    7 Hozzászólások
    387 Megtekintések
    Chris FullmerC
    Oh yes, that zoom tool. I forgot about that one. I never use it, I'm a scroll wheel only person. And the scroll wheel does zoom to where the mouse cursor is. The actual zoom tool though yes, that also uses the mouse pointer to some degree. If you hold it over something close, you zoom quickly. hold it over something far and you zoom slower. Even if your mouse goes from being on top of something close to not on top of something int he same dragging event, the speed of zoom will vary. I'd never noticed that before. The orbit tool (again, my scroll wheel) doesn't do what I was thinking it does. It does seem to just orbit around the center of the screen, and the distance of the z axis seems to be based on some sort of target. I'm wondering if it has to do with the near and far culling planes? Perhaps evenly spaced between them? Chris
  • [Code] Creating attr like methods

    8
    0 Szavazatok
    8 Hozzászólások
    1k Megtekintések
    thomthomT
    Doubledone!
  • Attribute accessor - get all as an array?

    13
    0 Szavazatok
    13 Hozzászólások
    5k Megtekintések
    Dan RathbunD
    @chris fullmer said: That is great to know, because that is precisely what I will be doing with these ... Spooky! .. now I'm answering your questions before you ask them. (.. does anyone hear the "Jeopardy" theme?)
  • Entities relationship - Sketchup Ruby SDK

    14
    0 Szavazatok
    14 Hozzászólások
    2k Megtekintések
    N
    Thanks for all the suggestions, pointers and tips. I am making progress exporting both raw entities and entities within components instances (including the transformation) It's not complete yet (some instance are place wrongly) but I should be able to figure the rest out (might be group handling etc) Thank you once again.
  • Importer in the same wind order

    3
    0 Szavazatok
    3 Hozzászólások
    271 Megtekintések
    G
    thanks TIG. Now i must find a method for import all faces in correct wing order: 1)i see that there is a m_pMesh->GetPolygonPointIndex(m_nCurrPoly+1, m_nCurrPoint+1, &m_idx); is sufficent have the correct indexes of the vertexes for import all in the correct windorder ? 2) or i must separate the importation of vertexes like the sketchup example SkpToXml of the sdk? The sample project do that: extract the loops hr = pFace->get_Loops(&pLoops); long nLoops; hr = pLoops->get_Count(&nLoops); //If this is a simple face (no loops) if (nLoops==1){/////////////////////////////////////////////////////////////////is a simple face //import vertex in counterclockwise order CComPtr<ISkpLoop> pLoop; hr = pFace->get_OuterLoop(&pLoop); CComPtr<ISkpVertices> pVerts; hr = pLoop->get_Vertices(&pVerts); } else ///////////////////////////////////////////////////////////////////is a complex face tessellate it with: pFace->CreateMeshWithUVHelper(3, pUVHelper, &pMesh); and imports vertex in clockwise order????? //there i must place the m_pMesh->GetPolygonPointIndex??? and import in specific order???? ecc.... is sufficent???? Thanks a lot.

Advertisement