r/FreeCAD • • Sep 12 '26

📢 FreeCAD Swag - Buying the swag supports the project

Thumbnail
shop.freecad.org
149 Upvotes

r/FreeCAD • • 8d ago

FreeCAD 26.3 RC1 IS HERE! AND IT'S BIG! | I Take a Deep Look Into the Release Candidate

Thumbnail
youtube.com
190 Upvotes

r/FreeCAD • • 8h ago

FreeCAD YBTRayTRacer Makro

Thumbnail
gallery
38 Upvotes

Hi all,
I call it a macro, but in a way, it’s an application of its own. One of the main challenges I faced while designing in FreeCAD was the inability to quickly visualize my models and devices the way I wanted. Achieving this used to require external render engines and additional software. Now, there is a Python-based render engine—running purely on the CPU—that delivers great results for basic visualization tasks and will continue to evolve. Of course, I didn't build it entirely on my own; I leveraged AI as well. However, my experience with LightWave 3D since 1997 was an immense help throughout the process. Enjoy using it! Hayırlı olsun.

https://github.com/sedatkrn/FC_YBTRayTracer


r/FreeCAD • • 50m ago

FreeCAD YBTRayTracer new version 1.3.0

Thumbnail
gallery
• Upvotes

Here is the translation of the release notes and macro details into English, formatted for clarity:

FC_ybt_raytracer.FCMacro — v1.3.0

A built-in, simple numpy raytracer for FreeCAD (no external software required).

Changelog & Version History

https://github.com/sedatkrn/FC_YBTRayTracer/releases/tag/v1.3.0

v1.3.0

  • Mesh Objects (Mesh::Feature):
    • Triangles are directly loaded into the scene without requiring re-triangulation.
    • Correctly placed within App::Part / Link (including LinkTransform).
    • Materials can be assigned and are listed in the Materials window.
  • Headless API (ybt_raytracer.api):
    • Functions added: render_document, render_scene, prepare_scene.
    • Camera helpers: make_camera, fit_camera, orbit_cameras.
    • turntable() feature; settings can be passed as keyword arguments (applied only to that call).
    • tess_cache for moving part animations (shape is triangulated once, with only placement updated per frame).
    • Example macro: examples/FC_ybt_turntable.FCMacro (camera turntable / rotating part).
  • "Include in Render": Per-object checkbox in the Materials window, plus "Include / Exclude Selected" buttons (uses the object's YBTInclude property).
  • "Skip Off-Screen Objects" (CULL_OFFSCREEN): Off-screen objects are not triangulated and do not participate in scene bounds, shadows, or ground plane calculations.
  • Regression Testing: Material-less Part scenes produce pixel-for-pixel identical output compared to v1.2.2.
  • Click-to-Select in Preview:
    • Clicking a part in the render preview selects that object in the Materials window (hold Ctrl to add to selection) and highlights it in the 3D view (ybt_raytracer/pick.py; the scene now carries object IDs per triangle).
    • In "Paint Bucket" mode, clicking a part directly assigns the currently edited material to it.
  • Similar Objects:
    • Objects sharing the same shape signature (number of faces/edges, area, volume; independent of position/rotation) like copies or Links are shown as "Similar ×N" in the list.
    • Batch operations available: "Select Similar Together", "Arrange Similar Side-by-Side", and "Select Similar".
  • API Pick Function: Added api.pick_object(scene, camera, w, h, x, y).
  • SPEED IMPROVEMENTS (2.79M triangle engine scene at 960x540: reduced from >10 min in previous versions to ~41 sec; 1920x1080 ~83 sec):
    1. Primary rays use a visibility buffer (accel.raster_rows; each triangle is evaluated only for pixels within its screen bounding box, avoiding full-triangle scans per pixel; output is pixel-identical to earlier versions). Anti-aliasing samples use the same buffer.
    2. Multi-level shadow grid (fine/coarse levels based on triangle size) + "definitely lit" early exit + vector pair testing (_LightGrid).
    3. Front-to-back sorted early exit (core._closest_sorted) for lead rays along glass/reflection paths. Screen tiles are calculated only in scenes containing glass or reflections.
  • New Look & UI:
    • Dark gray color palette (theme.py + icons/; applied across both windows).
    • "Preview and Selection Screen": Framed viewport, mouse wheel zoom (anchored under the cursor), drag-to-pan, "Auto Center" and "1:1" buttons, double-click to fit. Zooming displays raw pixels without smoothing.
    • Collapsible sections for Quality, Virtual Ground, and Lighting by clicking their headers (Virtual Ground and Lighting are closed by default).
  • Materials Window:
    • Opens to the left of the render window.
    • "Always on Top" checkbox (enabled by default, setting saved) prevents the window from hiding behind the preview when clicked.
    • Console-style process log (timestamped actions).
    • Preview refreshes after a 1-second delay following slider/number changes (PREVIEW_DELAY_MS).
    • Version number is displayed in the Render window title bar.
  • Fast Opening Materials Window:
    • Window opens immediately while object scanning runs in the background; results are cached unless the document changes ("Refresh" bypasses the cache).
    • Optimized similar object signature calculation (replaced Area/Volume checks with face/edge count + local bounding box; scan time for 877 parts reduced from 25 sec to 2.5 sec).
    • Clicking the launch button while open brings the window to the front; button shows "Opening..." with a wait cursor during loading; press feedback added to buttons.
  • Bug Fix: Fixed vertex matching collisions on smooth surfaces (resolved artifacts/speckles on complex solids like wheel rims or letter shapes; replaced the old xor-summary hash with a collision-free full key).

r/FreeCAD • • 20h ago

Appreciation post: Congrats to u/DesignWeaver3d for getting code contributions merged today! Thank you for improving FreeCAD!

Post image
102 Upvotes

r/FreeCAD • • 5h ago

Assembly questions

2 Upvotes

I'm currently testing FreeCAD 26.3RC1. I recreated this stand design I did years ago in an other CAD package. I made use of the new default sketch setting "Make internals = Yes" a lot. After figuring out how to select the different sketch regions pressing the CRTL key, you may need to zoom the 3d view to pick smaller regions reliably, every thing worked fine. I then created my first FreeCAD assembly. When I reopen the project, the report view shows the following error:

10:04:51 Assembly joint 'Assembly.Fixed' has an invalid 'Reference2' or related attributes. 'NoneType' object is not subscriptable

I assume the yellow marked joint on the left side of the table is the one causing the error as the blue axis of the joint symbol does only extend to the right side. on the opposite joint symbol on the right side of the table the blue axis extend to both sides of the disc. I deleted an recreated the joint but the problem stays the same. What is causing this problem? How to fix?

As this will be 3d printed I created most parts with some small gaps between them. Is there a way to do an interference check in FreeCAD as in other CAD packages? In wireframe mode I can visually inspect all joints but is there a function to do that?

Update: As for the interference check, the way to go seem to be part workbench boolean intersection for now.


r/FreeCAD • • 9h ago

Tips/Help With Professional Use

3 Upvotes

I use proprietary CAD (Inventor) for my day job but I've used FreeCAD for years for small personal projects. I ended up doing some design work for a friend and its really taken off and started making money, all the stuff is in FreeCAD but I'm really starting to hit what I think are the limits of the software, but wondered if anyone else had some work arounds as I really do not want to have to migrate to Onshape (only option for me on Linux). I've numbered and listed my issues down below, any and all info/tips are greatly appreciated. FreeCAD feels like its an entirely new piece of software every year at this point (which is awesome), so I might just be missing newer workflows.

1. Assemblies - Specifically binders and cross component dependencies.

The thing I'm designing is a large assembly of about 25 components, and several require the positions of others in certain assembly positions to generate dependent geometries. This is very simple and easy to handle in inventor assemblies with model states and views, but I think impossible/very difficult in FreeCAD currently. The workflow I'm using is using shape binders from different assemblies, one assembly in "Position X" where I get a hole location, another in "position Y" for example. Problem is you make a revision to say the thickness of a base plate, and the assembly engine doesn't recognize any joints referenced to that plates face anymore, even if the change is as simple as moving a hole 1mm to the left. You then have to go back in each assembly, update all the fixed constraints by hand and re-compute, imagine doing this for 6 different assemblies its really annoying. This is also VERY BUGGY, I dread pressing re-compute and something that would have taken me 15 minutes in inventor has genuinely taken me a week in FreeCAD. I really hope there's a better option. I cant share my model as its for a customer, but there is no way I can work out these dependent geometries by hand and just "hard code" them in, its just too complex to work out what all the different axes of motion can do in this design without using an assembly. I make use of alot of skeleton sketches (a master freeCAD file with just a bunch of sketches with key geometries in I can shape binder into other parts) which really helps, it was a tip from MangoJelly which has saved me tonnes of time, but ultimately there are a few geometries that just need a fully built assembly to get. Dont get me started on not being able to use Part Design in the assembly view btw, I could probably save 10+ shape binders from the design if I could just see what the assembly looks like while modelling a part...

I have also tried adding local coordinate systems to my parts to use as static anchors in assemblies, its a nice work around but a pain in the ass to maintain and workout where each should be and then the correct offsets in the assembly when you apply a fixed joint on them, it must add ~10mins to each assembly joint doing it that way and it makes the design look very messy with loads of LCS's floating about all over the place. If we had "folders" like Inventor where I could throw parametric features in just to hide/clean up the model tree it wouldn't be too bad.

2. PDM/Revision Changes

As I understand it there's no simple way to track versions/milestones with parts. Same goes for drawing/part numbers (I use a spreadsheet in Libre Calc on the side to manage it all). I use git and releases to kinda replicate "milestones" but its not ideal. No company on earth will use FreeCAD commercially until it has this as you probably cannot do ISO9001 compliant CAD as it stands in FreeCAD without some serious spreadsheet magic. Hopefully Ondsel lens keeps moving forward?

3. Model States

I mentioned this earlier but I'm really missing model states from Inventor and wondered if anyone knows a way to replicate it in FreeCAD. The ability for 2 or more parts to share the same parametric "base" geometries/joints/parameters and then just a few specific changes between states is really neat. Also the ability to "suppress" certain operations in one state and not others is great. Is there a FreeCAD workflow for this besides using clone on a "Skeleton" part.

The big one causing me the most pain is #1. I love and hate FreeCAD, its amazing for what it is but when I work daily using Inventor/Solidworks it feels slow and frustrating. At home however I point blank refuse to install windows on my PC, and I really hate Onshapes browser only, not owning your own design model. FreeCAD is so close to making it BIG now, like it feels like its 90% there. I really hope someone has a neat assembly workaround, I can probably manage all the others myself.


r/FreeCAD • • 1d ago

LumberCAD: Looking for feedback from FreeCAD users

482 Upvotes

Hello r/FreeCAD

We've been working on LumberCAD since 2020-22, before then we developed a similar engine in the aluminum industry since 2010; which I know some FreeCAD users have adopted into their workflow in the T-Slot industry.

Today we opened our LumberCAD (free) Beta, and we're looking for insight from FreeCAD users to see if we'd be able to convince you to switch for structural lumber projects.

What we did to be different:

  • Limiting workflow to lumber construction massively simplifies learning curve
  • Much easier to use than any existing CAD, but obviously limited to everything lumber
  • Existing parts catalog
  • Massively automated documentation system with cut list, drawings, and a big step towards permitting

I'm not certain if links are tolerated, but if you'd like to try LumberCAD yourselves, well, it's at https://lumbercad.com/

Mods please feel free to message me if the link should be removed.

Thank you in advance.


r/FreeCAD • • 6h ago

Bug Check: Model Z-shift collapse and "subshape not found" error when adding multiple sketches to an Assembly-constrained part

0 Upvotes

Hi everyone,

​I’m running into a bizarre cascading failure and wanted to see if the community considers this a known bug or a fundamental limitation of FreeCAD's current solver logic. I’ve been analyzing this with Gemini, and we suspect it's a severe Assembly vs. PartDesign Solver Clash combined with the TNP, but I want human verification.

​My Exact Workflow (Top-Down Design):

​PartDesign: I created a basic rectangular Pad (from a base sketch).

​Assembly: I anchored the bottom face of this Pad using a Fixed joint.

​PartDesign (The first feature): I needed to add holes. I selected the top face of the Pad and clicked "New Sketch". Weird anomaly: The sketch unexpectedly appeared on the bottom face's Z-height. However, I ignored it, drew my circles, used the Hole feature (reversed direction), and it successfully cut through. No visible errors yet.

​PartDesign (The trigger): I selected the top face again to create another "New Sketch" for a different feature.

​The Phenomenon (The Collapse):

The exact moment I clicked "New Sketch" for the second time, the model visually imploded:

​The top face shifted downwards to the exact Z-height where the bottom face used to be.

​The bottom face shifted further downwards by the same distance.

​Most importantly, the original base sketch of the Pad suddenly threw an error: AttachEngine3D: subshape not found Face....

​The Theory:

Since Top-Down design is standard in CAD, my workflow makes logical sense. Our theory is that adding the Hole changed the topological ID of the top face. When I created the second sketch, it forced a recompute. The Assembly solver aggressively locked the global bottom coordinates, while the PartDesign solver panicked over the changed topology. The two solvers fought over the coordinate matrix, breaking the base sketch's reference and causing the geometry to shift downwards.

​The Proposed Workaround:

The AI suggested that I must first right-click the Fixed joint in the Assembly tree and Toggle Suppress it -> go to PartDesign to do all my Top-Down edits/holes -> then un-suppress the joint afterwards so it re-locks safely.

​My Question:

Is this specific delayed collapse and Z-shift shift a known issue when working between Assembly and PartDesign? Is my "Solver Clash" theory correct, and is the Toggle Suppress method the official best practice for Top-Down edits in FreeCAD right now?

​Thanks in advance for any insights!


r/FreeCAD • • 16h ago

How To Remove Text From a STEP File in FreeCAD?

Thumbnail
youtube.com
6 Upvotes

r/FreeCAD • • 1d ago

Hasan using FreeCAD winning 1 of the CAD vs CAD speedmodeling battles

Thumbnail
youtube.com
125 Upvotes

r/FreeCAD • • 9h ago

Help with STL to Solid 2 - holes have still some facette

1 Upvotes

FreeCAD 1.1.4 I use

I converted a STL to solid with a free clicks - perfect for all flat areas. Holes still have problems (obviously)

I do create a 3-point circle - pocket it - and sometimes it's perfect, and sometimes not. Like in the pix.

My understanding is, when set the 3 points from the facetted rim it will snap to the facette joints, which would be automatically the outer area - so I am a bit puzzled why there are artefacts.

What I do wrong? Or how can I improve? (I also do Autodesk Fusion but somehow FreeCAD feels easier here)


r/FreeCAD • • 14h ago

Constraints Issue

Thumbnail
gallery
2 Upvotes

EDIT: Decided to solve it a different way

Can somebody help with the pictured issue? I'm trying to close the half circle and extend the arc to the line on the left. The radius of the arc is the exact same as the guideline underneath, which I set from my master sketch. Even when I do not constrain this dimension and let it be placed as I wish to constrain it, it fails every time. I constrained it the exact same way as the smaller, yet fully constrained arc below it, and oddly enough it lets me extend the arc as I wish when it is unconstrained, but the moment I try to constrain it, it claims redundancy on 5 out of my 17 sketch constraints, and is impossible to close. This seems like an issue that is easily fixable, so I wanted to see if anybody had any ideas before I spend 3 hours and the rest of my temper and energy troubleshooting an intermediate line on the first of 3 components in an assembly. Thanks


r/FreeCAD • • 23h ago

New user with a lot to learn

9 Upvotes

Hello,

I've been using FreeCAD for about 3 weeks now and successfully created a couple easy projects. I see a lot of recommendations to watch MangoJelly on YouTube. I've watched a couple of his videos but I'm not sure where to start off watching his videos as they go back for years. I'm not sure which FreeCAD version applies to today's version. Any idea where to start?

Thanks!


r/FreeCAD • • 1d ago

3D model completely disappears (black background) when entering Sketcher in PartDesign. Is this a display toggle or a bug?

Thumbnail
gallery
6 Upvotes

I'm running into a frustrating display issue in PartDesign and could use some help.

This is face i chosen.

What I'm doing: I have an active Body with a basic solid (Pad). I select a face on this solid and click "Create a new sketch".

The Problem (See Image 1): The moment I enter the Sketcher, the entire 3D model vanishes. The background is completely black, showing only the sketch axes and my new 2D lines. I cannot see the existing solid at all.

The Weird Part (See Image 2): If I do the exact same operation (select a face -> new sketch) in the original part file or a different project, it works perfectly fine. The grey 3D solid stays visible in the background while I sketch, just as expected.

Further Bizarre Behavior (See Image 3): Furthermore, if I switch back to the Assembly Workbench and double-click to enter that exact same sketch from the tree, it gets even worse (see Image 3). Not only is the 3D solid still missing, but now all the green sketch lines I just drew have completely vanished too! All that's left is the origin point and a single floating dimension line. This makes me strongly suspect this is a core graphical bug rather than a simple setting toggle.

What I've confirmed so far to rule out basic mistakes:

  • I am definitely in the PartDesign workbench when creating the sketch initially.
  • The Body is fully active (bold in the tree view).
  • The solid/Pad is fully visible right before I click "New sketch".

Has anyone experienced this specific visual issue? Is there a hidden display toggle/hotkey I might have accidentally hit in this specific file, or should I report this as a bug?

Thanks in advance for any tips!


r/FreeCAD • • 1d ago

UpSTEPer: a small open-source companion for STEP files (colours, repair, DXF views), built on the same OCCT kernel

Post image
11 Upvotes

Hi all, I'm an electrical engineer and work a lot with EPLAN Pro Panel (3D cabinet design), which means I need good-looking 3D models of every part in the cabinet. Manufacturer STEP files often arrive uncoloured or with export errors. I tried fixing them up in FreeCAD, but it took far too many steps to get a decent result, so I wrote a small tool for it.

UpSTEPer isn't a modeller and isn't meant to replace FreeCAD. It's for quick jobs on STEP files before or after you use them: - Recolour faces and bodies - Check and repair bad exports - Export front, top and left views as DXF, including hidden lines - Do all of the above from the command line in scripts

It's an early alpha (v0.1.0), so expect some rough edges.

Download (Windows installer and Linux Flatpak): https://github.com/mattheuserb/UpSTEPer/releases/tag/v0.1.0-alpha

Source (MIT): https://github.com/mattheuserb/UpSTEPer

If you try it on your own files, I'd love to hear how it goes. Bug reports and feedback are very welcome.


r/FreeCAD • • 1d ago

Workbench for parametric aluminium slot profiles be useful to anyone else?

Post image
174 Upvotes

Every time I start a new project with aluminium extrusion, I end up hunting for

STEP downloads again. After the umpteenth

time I built a small workbench instead: pick a Type-I or Type-B profile, type a

length, done. Slot nuts, brackets and end caps that fit are included.

It's still rough in places (some Type-B dimensions are estimated, only tested on

Linux), but maybe it saves someone else the same search.

https://gitlab.com/mwtr/freecad-extrusion-library

Feedback and missing sizes are welcome!


r/FreeCAD • • 1d ago

Please rate the model.

Thumbnail
gallery
7 Upvotes

This is my third model.


r/FreeCAD • • 17h ago

Sketcher OVP text invisible when using FreeCAD (1.1.4) Dark theme

1 Upvotes

Hi everyone,

I recently started having a weird issue with FreeCAD.

The text inside the Sketcher On-View Parameters (OVP) input boxes is completely invisible (black text on a black background).

It happens with both the Light and Dark themes, but everything works fine with the Classic theme.

The weird thing is that everything was working normally before. I just opened FreeCAD, did a few things, went to play some games, and when I came back, this issue appeared out of nowhere.

I've already tried resetting my FreeCAD preferences, but it didn't fix anything.

Has anyone experienced this before or knows how to fix it?

Thanks!


r/FreeCAD • • 1d ago

Issues with the size of my cursor when in sketcher.

Post image
3 Upvotes

Everything was the regular size before, but I am not sure what I played with, and all of a sudden my cursor in Sketcher is tiny; I can't really see it without focusing on it.

Any idea what i changed on preferences for that to become that size?

Thanks in advance.


r/FreeCAD • • 1d ago

Need help creating a joint

Thumbnail
gallery
7 Upvotes

I am using what I learned in tutorials to make an inline4 to test my understanding. I have made all of the components but can't for the life of me make the correct joints to bound the cylinder into vertical motion so it operates like a normal engine would. The tutorial I originally used (3rd picture) cheated this entirely by using the slider joint on a conveniently placed shaft holder that was symmetric about the piston. I don't see the point in having software that requires a distinctively designed and placed pseudostructure just to force adequate vertical motion, so I'm acting under the assumption that there is another way to do it and I just don't know. Can somebody help?


r/FreeCAD • • 1d ago

Free self-hosted PDM for FreeCAD: part numbers, revisions, BOM and Upload/Download macros (needs testers!)

3 Upvotes

Hello, FreeCAD users,

I'm a mechanical engineer. I couldn't find a PDM system for FreeCAD, so I created my own: EasyPDM—a self-hosted web application that assigns a unique number, status, version, and history to every part and assembly, and generates a bill of materials (BOM). Two simple macros (no need to install a development environment) connect FreeCAD to this application.

Repository (MIT license): https://github.com/pawelcel/EasyPDM

Macros + documentation: https://github.com/pawelcel/EasyPDM/tree/main/EasyPDM.FreeCad

Video: https://www.youtube.com/watch?v=ZwAWCJN9tWg

I'm not a developer, and I wrote the app with the help of AI. It did everything according to my instructions, and then I tested to make sure everything was working as it should.

How the macros work

- EasyPDMUpload.FCMacro – uploads the active document to the PDM system. In the browser (which opens with the user already logged in), you select the option “new item / duplicate / attach to existing,” and the macro waits and completes the upload on its own.

- The file is saved with a PDM name (`number (name).REV.FCStd`—but this can be changed in the program options), ensuring that App::Link references remain valid after a later download.

- If the document contains references to other saved .FCStd files (App::Link, which enables the native Assembly Workbench module to function as long as the parts are separate files), the macro detects the entire tree and uploads the end elements first, followed by the subassemblies, and finally the main file. The bill of materials (BOM) and quantities are generated automatically.

- Optional export to STEP format (used to display a 3D preview in the web interface) and export to PDF format.

- Uploading an item that already has the “Released” status requires specifying a new version along with a comment regarding the change; items with the “Under Review” status are locked.

- EasyPDMDownload.FCMacro– select an item in the browser; the macro downloads it along with all its components to a single folder and opens it in


r/FreeCAD • • 15h ago

Looking for like-minded innovators who want to build something meaningful together

0 Upvotes

I’ve been thinking about how many great ideas never become reality because people work alone, lack the right connections, or simply don’t have a community to build with. I want to change that.I’m looking to connect with like-minded innovators, builders, problem-solvers, and curious minds** who enjoy thinking outside the box and exploring what’s possible. The goal is simple: create a community where we can share ideas, challenge each other’s thinking, brainstorm solutions, collaborate on projects, and actually build things together. You don’t need to be an expert, have a startup, or know everything already. Whether you’re into technology, AI, software, engineering, business, creative projects, or inventing something entirely new, what matters most is your curiosity and willingness to contribute. I’ve created a Discord server where we can bring these minds together, discuss possibilities, find collaborators, and turn promising ideas into real projects .I’m not looking to build a server full of people who just watch from the sidelines. I want a community of people who are willing to experiment, share knowledge, help each other, and take action.

If this sounds like your kind of community, comment below or send me a DM, and I’ll share the Discord invite.

Let's stop waiting for someone else to build the things we wish existed. Let's build them ourselves.


r/FreeCAD • • 1d ago

where do i begin with moving from 360 to FreeCAD?

9 Upvotes

so im looking to try out FreeCAD, ive been using 360 for years now and im very familiar with that program but i would like more freedom as well as better performance and im hoping FreeCAD can give that to me.

that being said. . FreeCad has always been a turn off due to its UI and lack of support due to far less people using it.

i would like to know a few things for my move.

  1. can you move files/projects to FreeCAD?
  2. whats the best way to move projects if you can?
  3. what addons would you recommend?
  4. dose FreeCAD use my GPU/is there a way to make it use my GPU for better performance?
  5. is there a way to change/move/enlarge the tools at the top? (i like the scale/style of the ones on 360)

if there is any other tips or recommendations to assist me in this move, please feel free to share!!


r/FreeCAD • • 1d ago

How to open a part in an assembly in FreeCAD

2 Upvotes

I would like to right-click on a part in an assembly and have "open" in the drop-down menu that, when selected, would open the part in a new tab. In the worst case, right-clicking would give me an "explore" (or open file folder, etc) or even "properties" option. Okay, so that doesn't seem to be implemented.

I understand it's possible to do "file->open" but if you don't know/remember where that file is located, file->open isn't very helpful. Is there anywhere that lists the object's/part's properties/file location? Is there a way I can open the part directly from the assembly?