🏢 PlaceMaker | 25% off for February including new Google Earth data imports! Learn more
  • Save selected plugin?

    7
    0 Votes
    7 Posts
    3k Views
    TIGT
    If I [or you for that matter!!] could have been arsed to do a simple search on this forum you'd have got this 'export by selection' = http://forums.sketchucation.com/viewtopic.php?p=183756#p183756 OR this one that does it by 'export by layer' = http://forums.sketchucation.com/viewtopic.php?p=183609#p183609
  • Alternative for webdialogs

    7
    0 Votes
    7 Posts
    393 Views
    J
    @l.frisken said: would fxruby or qtruby be other options? There would be little difference between these and wxsu. Maybe we should ask the OP about their goals and expectation?
  • Toolbar restore bug

    2
    0 Votes
    2 Posts
    332 Views
    Dan RathbunD
    I talked about this in another toolbar topic. I wonder if it would help if the 0.1 sec delay was just "cooked into" the restore() method itself ?? Then you would not need to modify a bunch of plugins and re-release them. <span class="syntaxdefault"><br />class UI</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Toolbar<br />  alias_method</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">orig_restore</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">restore </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  def restore</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault">    UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">start_timer</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0.1</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> false</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">      orig_restore<br />    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  end </span><span class="syntaxcomment">#def<br /></span><span class="syntaxdefault">end </span><span class="syntaxcomment">#class<br /></span><span class="syntaxdefault"> </span>
  • Problem with copy multiple and entity observer

    2
    0 Votes
    2 Posts
    201 Views
    thomthomT
    Is it not something you are doing within the observer events that interfere? I was trying all kinds of things with observer when I was working on the DoubleCut plugin - but I don't think I remember this one. But I do remember that handling the multiple copy events was a challenge.
  • Weird bug with WebDialog and Flash

    10
    0 Votes
    10 Posts
    766 Views
    V
    I've just noticed, that the problem still remains with the 'Enter' key. Though it works in IE, but it doesn't if it's opened via Sketchup web dialog. Any ideas?
  • Looping through components in a script?

    5
    0 Votes
    5 Posts
    439 Views
    M
    Okay, it looks like I'm getting close to what I want with the Export CI ID plugin : http://www.scriptspot.com/sketchup/scripts/export-ci-id Now to figure out a quick way of hiding everything not selected as I loop through. Thanks again for the help here - I am appreciative. Regards, Matt
  • Application Observer

    7
    0 Votes
    7 Posts
    342 Views
    Dan RathbunD
    @thomthom said: @dan rathbun said: seems like an API feature request for a onStartup() callback is in order (for the Sketchup::AppObserver class.) Why? Just ensure a method is called when the plugin loads. Because I'm thinking that the calback would get called AFTER all other plugins and extensions are loaded. Just an idea.
  • Programing menu icons

    3
    0 Votes
    3 Posts
    229 Views
    honoluludesktopH
    Didier, Thanks, This will speed up access to one of my tools. Addenda: Wow, that was too easy to do.
  • Working around &quot;location=&quot;, for debugging

    16
    0 Votes
    16 Posts
    735 Views
    RichMorinR
    @dan rathbun said: I was under the impression that the code block of show() and show_modal() did not work on the Mac. Has this been fixed on SU 8.x ?? Dunno, in general, but a quick experiment worked for me. Then again, I was only setting a single variable. -r
  • Open layers from Custom Toolbar

    2
    0 Votes
    2 Posts
    325 Views
    thomthomT
    UI.show_inspector('Layers') http://code.google.com/apis/sketchup/docs/ourdoc/ui.html#show_inspector
  • FaceMe - Ruby\SU bug?

    2
    0 Votes
    2 Posts
    179 Views
    K
    Something similar happens when you create a new group inside an existing group that consists of existing components. See this thread: http://forums.sketchucation.com/viewtopic.php?f=180&t=31443&p=276973&hilit=kwalkerman#p276860
  • Transformations

    29
    0 Votes
    29 Posts
    2k Views
    C
    @zitoun said: I have no clue what these are yet, but I guess I somehow can retrieve my rotation matrix from such component... Note that a transformation has the .to_a method as well which gives you exactly the information you're looking for. The array it returns is 16 floats for the four by four matrix which defines the transformation from the components defining coordinate system to the current coordinate system. Since you mentioned quaternions I'll assume you're familiar with with the essentials of matrices and linear transformations. First, we can interpret the scaling and rotation of a component as the action of a matrix on the basis vectors of the component definition. Say for example you define your component relative to the standard basis of x=[1,0,0], y=[0,1,0], z=[0,0,1]. Rather than keeping these vectors separately, you can just encode them as the 3x3 identity matrix, and then define all the entities in the component relative to this matrix. From here, any sort of rotation/scaling can be interpreted as a change of basis. The trouble of course is that any linear transformation preserves the zero vector, so you can't model a translation in this way. This means to fully describe the relative coordinates you require a an equation of the form Ax + b where A is an invertible 3x3 change of basis matrix and b is the translation vector with x being the "defining" vector of some entity internal to the component. This is where the clever bit comes in. You can model an affine transformation of the form Ax + b as a single matrix transformation by embedding it into a space with one higher dimension. This is why the transformation.to_a method returns a 16 entry array, it's a 4x4 matrix with the first four entries being the first column, the second four entries being the second column and so on. It's easy enough to extract the original 3x3 matrix and the translation vector as well, the "upper-left" 3x3 block matrix is exactly the change of basis matrix A, and the final column vector is of the form [b, 1] where b is the translation vector. From here extracting the rotation matrix is a simple matter of matrix algebra since any change of basis matrix A can be decomposed as A = QS where Q is a rotation matrix and S is a diagonal matrix representing the scaling of each axis. It's worth getting to know the 4x4 representation if you haven't before since it's also the way the OpenGL standard models the objects. The ability to model vector addition as matrix multiplication is only one of the reason they do it, the other being that when you're rendering perspective views rather than simply orthographic views the value of the bottom right entry plays an important role in correcting the scale of the transformation after applying the perspective matrix.
  • Customized 3D Warehouse link

    5
    0 Votes
    5 Posts
    872 Views
    Al HartA
    I presume part of the cookie must specify the SketchUp version - so users don't try to download components they cannot load. I will be interested if there ideas can turn into a way to select and download components. What I would like to do it have a dialog which starts at a specific collection in the 3D Warehouse - such as this one - so users can download trees: http://sketchup.google.com/3dwarehouse/cldetails?mid=dfd59a8e2e744892e05349688101e4b4 or else starts with a search, such as http://sketchup.google.com/3dwarehouse/search?q=IRender+nXt&styp=c [image: 6bu2_IRendernXtPlants2.jpg]
  • Selecting All Visible Faces

    17
    0 Votes
    17 Posts
    6k Views
    thomthomT
    @gude said: I couldnt understand the way they did it here http://forums.cgsociety.org/archive/index.php/t-197347.html That is the method I mentioned earlier - it selects the faces which normal is pointing towards the camera - but it doesn't take into account other faces blocking the view.
  • Duplicate &quot;edit component&quot; with api methods.

    11
    0 Votes
    11 Posts
    419 Views
    honoluludesktopH
    Thanks, fellows. Sometimes it's not as simple as I think, then after I'm done, its simpler then I think:-) Tig, That's neat, didn't know I could do that. The reverse face application requires the faces to be in Sketchup.active_model.entities. The faces are picked in terms of it's pixel location on the monitor. Maybe I first have to group the loose entities, then process all the groups, and components one at a time. Sometimes I write this stuff, just to see if I can. It doesn't take that much more work to open each component manually, and run the plugin Reverse_Backfaces each time.
  • Intercept UI::Command.new ?

    7
    0 Votes
    7 Posts
    302 Views
    PixeroP
    Very interesting. Awaiting your TT_toolbarTool...
  • ComponentInstance.explode

    5
    0 Votes
    5 Posts
    240 Views
    honoluludesktopH
    Thanks, gotit. Hope I don't forget!-)
  • Best way to get all Face's in model?

    25
    0 Votes
    25 Posts
    2k Views
    S
    @thomthom said: ............ 2. Exploding is very slow in SU. ( and if your script should fail at some point and halt - you're left with a broken model. ) ok! I changed my way and it seems work alot faster! (for my plugin converter 2 POV-Ray script). note: At this time I get only the color of the parent object(s) and not texture... def pov_find_faces(entities,tform,layername) entities.each do |entity| if entity.is_a?(Sketchup;;Face) pov_write_face(entity, tform) elsif entity.is_a?(Sketchup;;Group) if entity.material if entity.material.color $levelcolor[$level]=entity.material.color else $levelcolor[$level]=$levelcolor[$level-1] end if entity.material.alpha $levelalpha[$level]=entity.material.alpha.to_s else $levelalpha[$level]=$levelalpha[$level-1] end else $levelcolor[$level]=$levelcolor[$level-1] $levelalpha[$level]=$levelalpha[$level-1] end $level+=1 pov_find_faces(entity.entities,tform * entity.transformation,entity.name) elsif entity.is_a?(Sketchup;;ComponentInstance) if entity.material if entity.material.color $levelcolor[$level]=entity.material.color else $levelcolor[$level]=$levelcolor[$level-1] end if entity.material.alpha $levelalpha[$level]=entity.material.alpha.to_s else $levelalpha[$level]=$levelalpha[$level-1] end else $levelcolor[$level]=$levelcolor[$level-1] $levelalpha[$level]=$levelalpha[$level-1] end $level+=1 pov_find_faces(entity.definition.entities,tform * entity.transformation,entity.name) end end $level=$level-1 #UI.messagebox($level.to_s) end
  • Recursive print_group_tree() help

    12
    0 Votes
    12 Posts
    483 Views
    honoluludesktopH
    tt, This recursive stuff really works! Below drills down into component instances. Now, on to add groups. def get_ci(ci_array) entities = Sketchup.active_model.entities entities.each do |ent| if ent.is_a? Sketchup;;ComponentInstance ci_array.push ent end end return ci_array end def explode_ci_array(ci_array) ci_sub_array=[] ci_array.each do |ci| if ci.is_a? Sketchup;;ComponentInstance ci_sub_array=ci.explode end end return ci_sub_array end ci_array=[] found = false while found == false ci_array=get_ci(ci_array) ci_array=explode_ci_array(ci_array) if ci_array[0] == nil found = true end end
  • File access speed

    9
    0 Votes
    9 Posts
    358 Views
    honoluludesktopH
    All this time I labored under the belief that only old programs up to Win98 ran in the command window, and didn't ever try.

Advertisement