I’ll try some .WRL export and document the steps as I go.
The PCB is a clone of the “Blue Pill”.
The project is not completely finished, so some parts are still floating around a bit.
In Pcbnew it looks like:
And in KiCad’s 3D viewer it looks like:

According to the KLC (KiCad Library Convention) chapter F7.1 the origin of THT parts should be located at pin 1. This makes sense to me, so I also do this.
(Few minutes experimenting with Pcbnew / Place / Drill and Place Offset but this seems to be a dead end, so abandoned).
Drag a box around your whole PCB:
Then zoom in on pin 1, and set the cursor close to the center of that pin, and press m to move the whole block.
Then zoom out with the scroll wheel, and move the PCB to the upper left corner of your paper (the grey lines).

Zoom in to get your PCB close to that corner, note the horizontal and vertical grey line ligning up with the PCB. Place your PCB there.
Pcbnew / File / Export / VRML.
Then to verify:
Start FreeCAD. (I used 0.19)
Start a new drawing in FreeCAD.
Place a Part in the document tree from the Part Design workbench, and make that part active (This adds a coordinate system to what you put in that “part” container.
FreeCAD / File / Import and get your .vrml file.
You can now use the "Transform** tool to verify the origin of your model. The transform tool shows the RGB arrows (for moving) and RGB balls (for rotating). It clearly shows that the origin of the VRML import is now close to the pin 1 mark of the PCB.
Note that this is a first experiment for me.
I’ve never done much with export of 3D form KiCad.
KiCad is also not a 3D drawing program, it’s a PCB design program. So what I did here was a quick tryout to confirm my suspicions (that the origin of the export is actually the paper origin). I’ve also not put the PCB at the exact correct location, I just eyeballed it. That is not what you want to do for a real design.
After this I exited KiCad without saving the (moved) PCB, just as I suggested in my earlier writeup.
There are still two things to experiment with:
- To move a block to a predefined coordinate (How do you use snap here?)
- Directly use the correct offset during export of the VRML file.
During the VRML export I saw the options to add an offset.
I’ll post this now, and add more infoif I have more to add after some more experiments.