I worked for an industry-specific 3D cad company at the time. We wanted to create some kind of web-enabled version of our software circa 2003-2005 (totally guessing at the time frame but seems right). It feels like every choice we made was wrong and the product was never viable. VRML sort of worked with a plug-in but there was insufficient control over navigation (let alone object selection) so you couldn't really build an app "on top of" it. We also had 2D drawings, displaying them as SVG via a plug-in wasn't super good and no way could you do things like allow the user to add a fresh annotation to the SVG interactively. UI? Well, someone had the grand idea to write a mock version of Tk that would output HTML instead of X Windows API calls. That worked about as well as you'd think. Ouch.
I don't know what someone operating at a more expert level would have been able to do; I was entirely self-educated in everything about browsers and had no peers to learn from. As it was, it was an exercise in frustration that was mostly shown at one trade show and then better forgotten.
Don't blame yourself. In 2003 there really were no good options for what you wanted to do.
Java Applets did exist. I think you could do 3D[0] at that time. But given that you were working with a CAD app you were almost certainly dealing with a legacy C/C++ and OpenGL codebase. There was no way to get that into a JVM in 2003 and you would either be rewriting your whole app to fit into a browser, or doing some weird server/client thing where your app just sends bits of Java to run in the browser.
The preferred way to get 2D vectors in a browser in 2003 actually wasn't SVG, though - the go-to was Flash. You absolutely could have written a bunch of ActionScript to drive a user interface and draw out vector graphics. But it couldn't do 3D until way later[1]. Also, the file formats involved were extremely proprietary; the only way to generate SWFs dynamically was to wait a year and pay exorbitant sums for Macromedia Flex.
Director and Shockwave were roughly the same thing as Flash but bigger. Notably it had support for native plugins for itself, called Xtras, which could run in the browser. So if you were really, really willing to get invested in the Macromedia ecosystem you could write your own 3D plugin for Shockwave[2].
Of course at that point if your CAD app had any amount of Windows support, then the easiest way to proceed would be to just ship an ActiveX control with your app in it. ActiveX was literally just COM/OLE, but on the web[3]. Assuming, again, that you already had a native app; this would have been the way to go in 2003. A lot of Windows developers handled web integration by just punting to ActiveX. It pissed people like me off, but it worked well enough.
[0] Related note: This is actually how Minecraft started.
[1] By the time it had both 3D and native code cross-compiling, Adobe had this hare-brained scheme to charge a revshare for using both features at once, which singlehandedly pissed off their remaining users and killed the platform faster than you can say "Thoughts on Flash".
[2] Fun fact: a company called The Groove Alliance actually did that; it was called 3D Groove SX. They then realized this was silly and wrote their own standalone ActiveX control called 3D Groove GX.
I don't know what someone operating at a more expert level would have been able to do; I was entirely self-educated in everything about browsers and had no peers to learn from. As it was, it was an exercise in frustration that was mostly shown at one trade show and then better forgotten.