Grasshopper divide trimmed surface

But instead of the trimmed hexagon surface (green in screen shot), “isotrim” applies to a 4-egde surface (red in screen shot) which is bigger. Aug 9, 2015 · The curve is just an arbitrary nurbs curve on the surface of your geometry. Mar 3, 2021 · Trimmed Panels Help_re. Perform a "solid difference" action to separate the outer ring from the original circle. Jun 14, 2015 · Permalink Reply by peter fotiadis on June 15, 2015 at 12:04am. This is using simple slider logic to show what I want to achieve but done manually. 9 KB) 2 Likes. The new surfaces must all have the same UV directions; namely, the U-Direction for all surfaces is either "clockwise" or "counterclockwise" (either is fine, as long as they all match) AROUND the blade profile and the V-Direction is oriented lengthwise along the blade (either outward or inward, as long as they all match). And that´s why it is always a good idea to provide a file from the very beginning. Surface: U Degree: uDeg: Degree in the U direction: Integer: V Degree: vDeg: Degree in the V direction: Integer: U Number: U: Number of points in the U direction. You’ll need to turn your trimmed surface into “Untrimmed Surface”. Screen Shot 2020-05-23 at 10. Feb 4, 2011 · The triangle surface you are supplying is effectively a trimmed surface defined by three points and cannot be divided up in this way by GH. It is displayed as “trimmed”. Oct 30, 2016 · surfaceanalysis, grasshopper. 3 KB) Mahdiyar August 21, 2021, 12:03pm 5. Surface. At some point the definition needs to be freed up from any UV relationship, especially if there are trims on the surface or a Apr 27, 2010 · Yes, don't use Surface Booleans to trim the panels to the face edges. It ex Aug 11, 2018 · Michael_Pryor (ekim) August 11, 2018, 4:36am 13. HEEN August 11, 2021, 2:51am 3. Delete the resulting curve segments we don’t want. Trimmed surfaces are almost always evaluated by their untrimmed underlying Nurbs(4 point) surface, it is how Nurbs works. Oct 7, 2022 · To make an algorithm you can try to solve it by hand and by little step. 3 hours for 3072 holes, resulting in 3073 surfaces. You can download lunchbox from the following link: Jun 20, 2020 · A loft (in Rhino or in Grasshopper) isn’t ideal because the unequal curves produce irregular UV curves that don’t follow a grid. Disable the "Preview" of the original circle, thus showing only the outer ring; which is the Trimming curves implies that we split the curves and dump one of their remaining segments. Rhino has a solution for that, the “ShrinkTrimmedSrf” command, maybe Oct 19, 2012 · I am trying to make a panelling system across a trimmed surface. This isnt a Grasshopper knowledge issue, it is a Rhino knowledge issue. Oct 3, 2009 · The other method which I've used (but was kind of a pain) was RhUtil. Thanks Jun 25, 2023 · To trim a curve in Grasshopper, we’ll need to follow the same three steps: Determine the intersection point. I used Shrink Trimmed Surface from Pufferfish to turn them into untrimmed. The offsetting must be done in such a way that the intersections must be trimmed off. Offset the original surface by 2 m using the "Offset" tool. I'll post the simplest possible here soon. I have several C# that do a variety of "similar" jobs. In your file, your loft is producing a BRep - that is, a polysurface - instead of a surface. the surface component. then if you want to cut the surface up into whatever pieces you can use the domains like percentages so 0 to . They will still be grids but they can have whatever spacing you choose. PanelingTools is a plugin that allows the grid to be different the Iso UV direction or spacing. Hi I have a trimmed surface i bring into Grasshopper via. Cattura1270×462 89. I have designed a triangulated skin structure and I want to cut a section through the skin. Aug 8, 2011 · The new version's outputs are of "columns" of points instead of all the points for a surface. Optional offset distance to offset both sides, use the inverse number of the distance to offset in the opposite direction (so if distance is a positive number then use a negative number and vice versa) Number. "Contour" component has no fault. On a surface the array of points is distributed. 1333×750 8. Cut the wholes atferwards into the grid. 6 KB. Jan 1, 2022 · When I tried to divide surface with Isotrim on the curvy surfaces, it ends up like the first image instead of the second image. Jun 16, 2009 · I’m trying to trim a surface with my straight line from the middle like section. Permalink Reply by weltraum on February 4, 2011 at 5:58am. If this surface has kinks you can turn it Surface: Srf: A surface to rebuild. Remap a surfaces {uv} domain² range to an input domain² range with the option of matching the {uv} domain² range of a guide surface, also works with trimmed surfaces. Secondly, sorting through the output is a little The aim is to divide the conical surface into a grid of surfaces (which have the same overall geometry) yet can be controlled independently. The object has an intersection with In this tutorial, we look at a few ways of spitting and trimming curves and solids in Grasshopper 3d. The goal isnt to add voronoi to a trimmed surface. 94 KB. You can find the component in the ‘Intersect’ component tab, within the ‘Physical’ group. Hi everybody, I trimmed a surface with some curves with the vb script suplied by vicente soler in a previous thread, now what i've trying to do is to divide the resulting trimmed surfaces in to more surfaces using the subsurface and int2, however, the trimmed parts of the surface reappear. 7 KB) Nov 17, 2020 · Problem With LunchBox. How does one divide on a trimmed surface? Help, would be much appreciated. Here is how I would use the IsoTrim and SDivide components in GH for basic use. Sep 21, 2017 · I let the laptop run overnight on 'SrfSplit' 7. You’ll find many discussions on how to subdivide a shape. I made a geometry in rhino and the applied a 3D voronoi, manipulated it, scaled them down and then baked the results. Aug 24, 2011 · In short the answer to your question is yes you can divide a surface into unequal segments. So although trimmed nicely in rhino. google. I’ll attach the file, maybe somebody could point out my mistake? I’ve marked the surface and corresponding polyline with coloured blobs and would like to get rid of the inner (smaller) surface. Grasshopper_SOM Tower2048×1536 143 KB. Thanks A surface in Grasshopper can be trimmed. surface divide also works on the trimmed surface. I have a trimmed surface which i want to divide as shown on the attached image. The aim is to divide the conical surface into a grid of surfaces (which have the same overall geometry) yet can be controlled independently. The issue is that the surface has been trimmed using a cut plane in rhino, and the isotrim function divides the original untrimmed surface instead. The first one in the list (green group) is the largest, confirmed by the sum ('MA') of its edge lengths: Dividing the base surface using 'SubSrf (Isotrim)' before perforation with 'SrfSplit' reduces the number of holes per surface, which Many components will read trimmed surfaces for their non trimmed counterparts (mostly components relying on UV and domains) because the domain of a trimmed surface is part of the non trimmed surface it is from. Dec 6, 2023 · 1117×483 29 KB. food4rhino. The process of trimming a surface in Grasshopper involves three steps: Generating the intersection curve (s) on the surface. Aug 21, 2020 · In this tutorial, I cover the extrude and offset surface components in Grasshopper 3d. But this is a rather rare case anyway. It controls the perforations of the hex cells which can be adjusted bu turning on its control points. Vector. Jun 22, 2018 · Create grid on untrimmed surface. What is the issue with this? Could anyone explain? Attached is the grasshopper definition with the surface internalised. Oct 19, 2012 · I am trying to make a panelling system across a trimmed surface. Extract an isoparametric subset of a surface. So I would also need points on edges 3 & 4. That’s amazing!!! That’s what I really need and you saved me!!! I should spend more time learning grasshopper! When dealing with surfaces, there is also a pitfall: trimmed surfaces. Hangzhou-Wangchao-Center-by-SOM-21580×1201 226 KB. I am having difficulty distributing a UV Domain across a trimmed rhino surface. Your shape is probably not possible to divide with equal triangles (without the edge shape changing to at least some amount, or the curvature). Aug 22, 2020 · In this tutorial, we look at how to create a 2d pattern on a 3d surface in Grasshopper 3d. Aug 11, 2021 · It looks like Isotrim doesn’t like working with trimmed surfaces. Apr 28, 2019 · Tina. Nurbs surfaces have 3-4 Sep 3, 2021 · It looks like you might have to rebuild the surfaces to remove any reference to the original surface. I have been trying to fix this definition for several days and haven´t found the solution. I would like to divide a surface into different widths and extrude them at different heights. Generate a grid of {uv} points on a surface. Hi, Interesting - before I internalized the data and uploaded the script, the panels were straight - when I opened the file though after looking at this, the panels werve curved and I wasn’t having the same problem with the untrimmed underlying surface. B. I have been looking at the Brep Typopolgy component S. 1763×566 97. Grasshopper. Much like its Rhino counterpart, this component will generate a surface that will try to fit through all input points provided. 6 KB) Volc (Volc) September 3, 2021, 7:58am 6. Let’s go through the process of trimming a curve step-by-step, using an example to illustrate how it works. 3dm (1. In fact in the rare occasion where trims are short paths (in a way the case with planar stuff and convex 3-4 edge holes) you can approximate the underlying surface as an untrimmed one using short paths, division pts etc etc. ign24680 (Ign24680) August 21, 2021, 6:44pm 6. Mar 13, 2018 · Parametric curiosity Ar. It involve smth problems with divide survace, isotrim, etc. So I decided to test those definitions in a simple round surface, but still didn’t work May 26, 2019 · Ok, so what I want to do is subsurface a set of surfaces of a Brep so all edges/panels match, but the numbers can be different on each surface depending on the length or something similar. Saved geometry surface before ‘split’. you could explode the curve and make an "edge surface" but that seems like a silly workaround Video Tutorials. 3 would be 20% to 30% and so on. The overlying problem though is that each property is a different shape. Nov 23, 2012 · In your screenshot the trimmed surface now consist of five border edges, hence it cannot be converted/rebuilt into a "clean" singular NURBS patch. It is to panalize voronoi faces by lunchbox panels or divide surface. 9 KB) brendan. I am not sure whether the easiest way to achieve this is to find the corner points for each grid 'section' and create a new surface from those points, aligned to the original surface or to use a surface Grasshopper picks up that this is an trimmed surface in Rhino so that Lunchbox component will process the full untrimmed surface. webb (Brendan Webb) March 3, 2021, 7:32pm 5. 48 AM1312×1246 246 KB. Click on Surface Split and then anywhere on the Grasshopper canvas to add it to your script. I am not sure whether the easiest way to achieve this is to find the corner points for each grid 'section' and create a new surface from those points, aligned to the original surface or to use a surface Jun 16, 2015 · 2. Subset of base surface. Hello, I am trying to create space truss on trimmed surface, I have tried with lunchbox space truss scripts, also with divide domain Oct 6, 2009 · Hi everybody, I trimmed a surface with some curves with the vb script suplied by vicente soler in a previous thread, now what i've trying to do is to divide the resulting trimmed surfaces in to more surfaces using the subsurface and int2, however, the trimmed parts of the surface reappear. RhinoCutUpSurface as it will work with curves. Please Mar 29, 2018 · Divide patch surface. Internally, Rhino and Grasshopper use the underlying, untrimmed shape and display what is inside the outer border; additional closed curves can be used to cut holes into the remaining surface. 2 to . Also it will evaluate the untrimmed version of your trimmed breps as you probably noticed already as well. I searched the forum but didn't find solution to my problem. Every trimmed surface retains information about its underlying surface geometry. thanks I even have installed pufferfish and I missed that command. I now want to panel the surfaces of those shapes (either with lunchbox or by using domains and divide surfaces) but each way I do it, grasshopper wants to reference the original much larger surface. com/file/d/1y2GhBkk Feb 7, 2013 · The top surface (the planar one) is actually a trimmed surface such that the bounding box of the curve is found and then the surface gets trimmed to fit the closed curve. gh (9. When i try to make a structure for this surface the panel sistem go out… for all kind of lunch box. Hi there, as an inexperienced user, I’m having some troubles here. Isocurve issue. Oct 1, 2010 · Hi I have a trimmed surface i bring into Grasshopper via. if it’s all planar, you can do this. Split the curve at the intersection point. 4 KB. Jan 24, 2021 · #Grasshopper3Dtutorial #isotrim #computationaldesign #rhino3dThis is a Rhino Grasshopper Tutorial that demonstrates a configuration that might be useful for Feb 10, 2017 · Hi. There can be any number of trimming loops, but only one outer Sep 17, 2011 · I have a trimmed surface which i want to divide as shown on the attached image. Nov 6, 2010 · So if you divide an untrimmed surface, you'll get X columns of Y points each: If you want to access the highlighted point (i. the lofted surface i want to be populated is trimmed. . A. With the IsoTrim component use the Divide Domain2 component to get an evenly spaced grid. isotrim-shrink. To do this start and finish on the same point. Every time I connect the divide surface component the points appear all over the original surface instead of the new subsurfaces. I have also attached the rhino file. But those definitions cannot help me to introduce the section line or trim line. If you want to divide by spacing then you can do by count. Nurbs exist always as untrimmed 4 point surfaces. C. The reason is that the subdivide etc is working on a "surface" (either on a per se basis or using the underlying data) whilst you have a brep ("surface" + trimming info) actually on hand. isosurface I obtain a divided surface that goes beyond the boundaries of the. The 4 point surface has its UV domain based on the 4 points so it divides perfectly. Basically I have a trimmed surface where i would need the division points to travel from edge 1 to edge 2 while edge 3 & 4 would need to act as attractor curves. right click the "S" input to the subsrf component in your uploaded definition and choose "graft. Apr 23, 2020 · Hi guys, To keep it simple: I made a geometry in rhino and the applied a 3D voronoi, manipulated it, scaled them down and then baked the results. Make sure to pick the one with the ‘²’ sign. ar (Zifo Ar) November 17, 2020, 4:25pm 1. 46. And unfortunately, Some Rhino commands work only with untrimmed surfaces (Single Surface) such as “Isotrim” “Divide Domain2+SurfaceBox” like you did in GH. 2. A trimmed surface is a combination of an arbitrary shape and closed curves. Nov 18, 2020 · 💾 Apps/Files to do this grasshopper tutorial: →Pufferfish V2. Just think about how many divisions gets you the space you want. Parameters. com/app/pufferfish→Geometry: https://drive. 49. If I am not mistaken, all scraps are contain control points of the original surface. Pretty much what I want to do is decompose the hexagon in. Curvature is measured in each point. Hi, I am trying to gain greater control of the surface morph output, the top image is the input brep and the two results below, however, the result is very skewed and thin, is there a way of forcing smaller, more dense Oct 27, 2023 · Before we dive in, let’s make sure we cover the core procedure necessary for creating a perforated surface in Grasshopper: trimming a surface. Let’s add it to our script. If True, create a solid offset. 2 would be from the start to 20% and . Aug 30, 2020 · Grasshopper. Michael_Pryor (ekim) April 28, 2019, 3:12am 2. When using the isotrim battery, it shows the original untrimmed surface and divides the UV across the original untrimmed surface. Nov 5, 2020 · I’ve been doing a facade study with a pseudo-checkerboard pattern, but I’m using untrimmed srufaces, yet, Grasshopper convert those as trimmed surfaces…or am I wrong? How can I approach to have the hole in the surface not being affected by the pattern? See pictures and files below! Screen Shot 2020-11-05 at 14. Normal vectors at division points. As you can see the actual tower façade is straight up and trimmed. Splitting the surface with the intersection curves (s) Oct 31, 2018 · Hi there, I’m trying to split a planar surface with the help of a polyline in Grasshopper, which, for reasons unbeknown to me, doesn’t work. The less value of a threshold - the the lofted surface i want to be populated is trimmed. This part is typically called a 'face'. May 22, 2020 · Grasshopper. Jan 14, 2023 · The component is called: Divide Domain². gh (22. I am not sure whether the easiest way to achieve this is to find the corner points for each grid 'section' and create a new surface from those points, aligned to the original surface or to use a surface Jan 8, 2012 · To answer your question above, All I want is to divide the surface into points like the surface divide component performs in grasshopper. brittanymark. Oct 5, 2019 · This tutorial goes over how to:-set up a surface using mirror, divide curve, and biArc components-subdivide, identify, and extract data points and lines to c Jun 29, 2020 · scottd (Scott Davidson) June 29, 2020, 1:54pm 2. 6 KB) Thanks in advance! You cant. Create Solid. I now want to panel the surfaces of those shapes Oct 13, 2011 · equal lengths so that one point from each division can follow an attractor. So I decided to test those definitions in a simple round surface, but still didn’t work Nov 10, 2014 · Many components will read trimmed surfaces for their non trimmed counterparts (mostly components relying on UV and domains) because the domain of a trimmed surface is part of the non trimmed surface it is from. , third column, fourth point) you can use the data path + index combo of {0;2}(3). It would be great if this issue could be solved for the next Grasshopper version. pass each untrimmed surface to your truss making algo. To add the component to the Grasshopper canvas, double-click on an empty part of the canvas. Add it to the canvas by double-clicking onto an empty spot on the Grasshopper canvas, typing its name and selecting it from the results. Depending on the specific situation and surface topology, you could use patch modelling or maybe consider using meshes (which may describe any surface) instead. I am only interested in the trimmed surface, but when i use for example the dimensions component, it registers the untrimmed surface, and ie. Integer: V Number: V: Number of points in the V direction. Or Just rebuild your surface and use "Divide Domain" and "IsoTrim". I have manage to divide the surface in these dimensions, but after splitting the surface I can not divide the subsurfaces. To get around this, I used the surface edge to make a new untrimmed surface. Your best bet is to rebuild the surface after trimming. uv. i. Change your loft options to include "rebuild" to ensure that a single surface results. Type ‘ Divide Surface ‘ into the search field and click on it. Trimming data consists of curves (usually called 'trims') that are joined together in closed loops. Thanks Aug 20, 2021 · Please see the attached file: Dividing a surface. If I remodel the surface ahead of time in Rhino by extruding the box and trimming against a curve, the Divide Surface works exactly as I want, even without the Pufferfish Unsplit Loft. I guess the problem is that the surface is consider like a “trimmed surface” but is the only way to get a shape like that. https://wiki Apr 6, 2012 · 1. 77 (Brittany Mark) May 22, 2020, 11:14pm 1. This way will limit you to having only one input surface for your definition. Resulting untrimmed single unsplit lofted surface When you bake this surface into Rhino it will become a usual polysurface (Brep) which is split at its kinks if it has kinks, unless you first run the command CreaseSplitting in Rhino's command line and turn it off by switching it to No. Point. Unsplit. hexagon, contained within a rectangle. Here is one option: trimed surface problem_v3. Another idea can be of a single line plan, then converted to offsetted walls with those single lines being the central spine of the offset walls. If I give the command ‘divide surface’, the number of points does not match the parameters. edit: you’ll probably want to manually draw the missing lines when you’re satisfied with the overall design. 4 KB) Aug 21, 2019 · I created a simple circle in Rhino, in grasshopper made a surface out of it. the DIVIDE DOMAIN SQUARE comp seems to be interpolating the surface and to Jun 8, 2012 · Agonizing question about trimmed surfaces. Mar 3, 2015 · The aim is to divide the conical surface into a grid of surfaces (which have the same overall geometry) yet can be controlled independently. U. Sep 7, 2009 · The Divide Surface component operates on u,v values which you can imagine as dimensions of the rubber sheet in relaxed state. Like said by Joseph, make the levels, then the stairs elevator, then the corridor, then subdivide the remaining surface. First, it will only take an OnSurface, so essentially you'd need to be working off of a single face, untrimmed Brep in the first place. Number. Here is a recent thread about it: Equal Grid Across Surfaces Grasshopper. Fitting rectangles into larger area Grasshopper. e. already got most of it done, but my problem is that using domain divide and. 4 MB) 1 Like. 041131×884 115 KB. Thus, we have to define the cutter and also, which side of the boundary contains the objects that will be disposed. Double-click onto the empty Grasshopper canvas and type ‘Patch’ to add the component. I have read some threads, but did not find desired information. Sep 26, 2017 · By the way, 'Top' view is the correct orientation for the 'MD Slider', navigating the three surfaces: it will evaluate them as 3 as you noticed. If average value of curvature more than the set threshold, a surface subdivided on 4 parts and all repeats. Unless you are expecting a remainder. gh (144. 0 and 3 are the same. When average value of curvature becomes less threshold the iterations is stop. Both Sides. gh (12. Michael_Pryor (ekim) April 16, 2020, 6:43am 5. Hello! I have a surface that I am trying to subdivide into panels, but when the Jan 10, 2023 · Add it to your script by double-clicking onto the empty Grasshopper canvas and typing ‘ Patch ‘. the DIVIDE DOMAIN SQUARE comp seems to be interpolating the surface and to Apr 15, 2020 · Mr. " You'll notice that the divide domain^2 outputs results in two data tree branches (0;0;0;0 and 0;0;0;1), whereas currently the surfaces coming in to the Jan 14, 2015 · I made the hollow circle by doing the following steps: create a circular surface (the original circle). should take a few minutes. Add the Divide Domain² component by double-clicking on the canvas and typing ‘Divide Domain²’. The same problem if I start to work with a surface after “split”. DividingSrf. Try to divide one of edges of your surface by equal distance and find the "Closest Point"of the surface and get "U&V" coordinates of division points, and lastly, use "Iso Curve". For example: The green rectangle represents the untrimmed surface and the grey shape the trimmed part. Permalink Reply by Gabriela Alban Hidalgo on August 11, 2015 at 12:13pm. There are a few stipulations with using this. Thanks in advance, A 181031_CutOut. Gaurav Goel - This video shows the process of generating a uniform pattern on a trimmed surface in Rhino using grasshopper 3d. I’m starting with two surfaces. 1-A,B,A,C,B 2-B,A,A,A,C,B and so on (please see attached images - manually modeled in Rhino). Oct 26, 2023 · The core component for trimming a surface is the Surface Split (SrfSplit) command. If you don’t care about remainder You can do by isosurface like @HS_Kim or you can split. Type. Furthermore, you can use a point or any other geometry in its place. The object can relate to the cutter in three ways: The object is completely inside the trimming area. 9: https://www. Jan 14, 2023 · Will_Wang January 18, 2023, 3:58pm 2. gh (63. If the surface is trimmed, it could be that some of the division points are no longer on the surface interior. So the result you got was indeed an equaly divided surface, only in the so called "parameter space" of the surface, which doesn't always correspond to the xyz space. After the operation 'Split surface' obtained parts is not always are suitable for further work. 1568×628 102 KB. In this tutorial, I cover two ways of dividing a surface in Grasshopper 3d. Pufferfish Tutorial. Jan 14, 2023 · Using the Divide Surface component to create a grid on a surface. Integer The logic of definition is simple. It’s not possible. If you create a triangle surface out of 4 pts then it will work. May 13, 2019 · Grasshopper. My final goal it to be able to control the pattern for eg. zifo. A surface in Grasshopper can be trimmed. gh (23. The component we’ll need to generate a grid of points on an input surface is called ‘ Divide Surface ‘. Canvas at 23;11;411269×808 313 KB. What exactly is the goal. Dear David, In the current grasshopper version, there is no solution to the trimmed surfaces, especially when one needs to evaluate, divide surface, etc…. Change the loft options to "rebuild" and you will get a single surface. Permalink Reply by shinboy on February 10, 2017 at 1:26am. I’m trying to offset a network of curves in order to create planar merged offset. My goal is to get the isocurves of the two surfaces, the isocurves of the surfaces which would be in-between the two existing surfaces, and the isocurves of the surfaces which are in-between the U’s and V’s of the existing two. Parameter coordinates at division points. (This helps when trying to figure out points on trimmed surfaces) The easy fix is to use a the Flatten function on the Split List input or alternatively the Flatten Component. Surface Triangulation. Best you can do is use the iso’s, then trim the entire result with the trimmed surfaces boundary. Any ideas? ps. Please help me on this. Can someone please tell me how to trim the surface again (or maybe in another way to divide the hexagon surface)? Thanks!!! Mengqi M_Huang_project 2. Hi. Mar 29, 2013 · Hi, I am a newbie and trying to learn GH. You can trim them but any evaluation (like an iso) will always be of the untrimmed underlying surface. An alternative way of adding the component Mar 1, 2018 · Hi guys, I want to divide a curved hexagon surface into 5 by 5 pieces. Mar 19, 2020 · In this video, I cover the surface panel types that are offered with the Lunchbox plug-in for Grasshopper. Offset distance. I just realised it's probably better to perform Trim Inclusion on all 4 panel corners, then decide on a plan of attack based on the results: 1) All 4 corners are on the interior of the trimmed surface, keep the panel. The division points should lie inside the surface based on the surface size but could be outside the trimmed surface. There can be any number of trimming loops, but only one outer Feb 25, 2021 · See these threads. otherwise you’ll need to come up with an inclusivity test that works for the kinda geometry you’re working with after you split the diamonds with the boundary curve of the parent surface. What you are dealing with is are trimmed surfaces. I want to use a lunchbox using the surface shown in the picture. gh (17. A way to see this in Rhino is use the points on function. bi js vr qx lq vs bl ib fj io