Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Represent a 3D frame with rounded edges
ResourceFunction["RoundedFrame3D"][{dx,dy,dz}] represents a 3D frame with dimensions {dx,dy,dz}. | |
ResourceFunction["RoundedFrame3D"][{dx,dy,dz},{tx,ty}] sets the thickness of the frame in x- and y-directions. |

| RoundingRadius | Automatic | radii of rounded edges |
| "JoinForm" | "Bevel" | form of frame joins |
| Method | "GraphicsComplex" | internal representation setting |
| rr | same radius for interior and exterior edges |
| {inrr, outrr} | separate radii for the interior and exterior edges |
| None | rounding radii set to zero |
| Automatic | rounding radii set to 0.1 |
| r | all radii set to r |
| {rx,ry} | equivalent to {rx,ry,0.1} |
| {rx,ry,rz} | set rounding radius for each direction separately |
| jf | same form for interior and exterior edges |
| {injf, outjf} | separate specification for the interior and exterior edges |
| "Bevel" | blunt joins and corners |
| "Miter" | sharp joins and corners |
| "Round" | round joins |
| Automatic | equivalent to "Bevel" |
| "GraphicsComplex" | represent the frame as a GraphicsComplex |
| "List" | represent the frame as a List of individual graphics primitives |
A unit rounded frame:
| In[1]:= |
| Out[1]= | ![]() |
Rounded frames with different sizes:
| In[2]:= | ![]() |
| Out[2]= | ![]() |
Differently styled rounded frames:
| In[3]:= | ![]() |
| Out[3]= | ![]() |
Rotated rounded frame:
| In[4]:= |
| Out[4]= | ![]() |
Simple frame:
| In[5]:= |
| Out[5]= | ![]() |
Rounded edges:
| In[6]:= | ![]() |
| Out[6]= | ![]() |
Different join forms:
| In[7]:= | ![]() |
| Out[7]= | ![]() |
A rounded frame parallel to each axis:
| In[8]:= |
| Out[8]= | ![]() |
Modify thickness in the x-direction:
| In[9]:= | ![]() |
| Out[9]= | ![]() |
Modify thickness in the y-direction:
| In[10]:= | ![]() |
| Out[10]= | ![]() |
The frame is centered at the origin:
| In[11]:= |
| Out[11]= | ![]() |
Use Translate to move the frame away from the center:
| In[12]:= | ![]() |
| Out[12]= | ![]() |
Use Rotate to rotate the frame:
| In[13]:= |
| Out[13]= | ![]() |
Color directives specify the face colors of frames:
| In[14]:= |
| Out[14]= | ![]() |
Different properties can be specified for the front and back of faces using FaceForm:
| In[15]:= | ![]() |
| Out[15]= | ![]() |
Opacity specifies the face opacity:
| In[16]:= |
| Out[16]= | ![]() |
Suppress display of the bounding box:
| In[17]:= |
| Out[17]= | ![]() |
Decompose the frame into its components and apply different styling to each:
| In[18]:= | ![]() |
| Out[19]= | ![]() |
Apply textures:
| In[20]:= | ![]() |
| Out[21]= | ![]() |
Different rounding radii:
| In[22]:= | ![]() |
| Out[22]= | ![]() |
Different radius for the interior and exterior edges:
| In[23]:= | ![]() |
| Out[23]= | ![]() |
Only interior edges rounded:
| In[24]:= | ![]() |
| Out[24]= | ![]() |
Rounded radius only in some directions:
| In[25]:= | ![]() |
| Out[25]= | ![]() |
Specify radii for each direction for both interior and exterior edges separately:
| In[26]:= | ![]() |
| Out[26]= | ![]() |
Choose the join form of the corners:
| In[27]:= | ![]() |
| Out[27]= | ![]() |
Interior and exterior edges can have different join form:
| In[28]:= | ![]() |
| Out[28]= | ![]() |
The internal structure of the frame differs for each "JoinForm":
| In[29]:= | ![]() |
| Out[30]= | ![]() |
By default, the frame is returned as a single instance of GraphicsComplex:
| In[31]:= |
| Out[32]= |
| In[33]:= |
| Out[33]= | ![]() |
To get access to individual parts of the frame, set Method to "List":
| In[34]:= |
| Out[35]= | ![]() |
This way, each part can be styled differently:
| In[36]:= |
| Out[36]= | ![]() |
Cube with a hole:
| In[37]:= |
| Out[37]= | ![]() |
Door frame:
| In[38]:= | ![]() |
| Out[38]= | ![]() |
Window bars:
| In[39]:= | ![]() |
| Out[39]= | ![]() |
Simple model of a house with a chimney:
| In[40]:= | ![]() |
| Out[41]= | ![]() |
Picture frame:
| In[42]:= | ![]() |
| Out[42]= | ![]() |
RoundedFrame3D can mimic Torus:
| In[43]:= | ![]() |
| Out[43]= | ![]() |
RoundedFrame3D can mimic RoundedAnnulus3D:
| In[44]:= | ![]() |
| Out[44]= | ![]() |
RoundedFrame3D can mimic RoundedCylinder:
| In[45]:= | ![]() |
| Out[45]= | ![]() |
RoundedFrame3D can mimic RoundedCuboid:
| In[46]:= | ![]() |
| Out[46]= | ![]() |
RoundedFrame3D can mimic Tube with a rectangular layout:
| In[47]:= | ![]() |
| Out[47]= | ![]() |
When dimensions, thicknesses and rounding radii are inconsistent, no frame is produced and an error message is printed:
| In[48]:= |
| Out[48]= | ![]() |
Here, the x-axis thickness exceeds half the x-axis dimension. Adjust the thickness:
| In[49]:= |
| Out[49]= | ![]() |
The chosen "JoinForm" value affects the constraints:
| In[50]:= | ![]() |
| Out[50]= | ![]() |
The flat-face surface has a different structure when "JoinForm" is set to {"Round","Round"}:
| In[51]:= | ![]() |
| Out[51]= | ![]() |
This allows for narrow corners:
| In[52]:= | ![]() |
| Out[52]= | ![]() |
Interlaced frames:
| In[53]:= | ![]() |
| Out[54]= | ![]() |
Interactively adjust the rounding radii:
| In[55]:= | ![]() |
| Out[55]= | ![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License