From working on the conversion for my company CAD/CAM application. I do not recommend going from the bottom up i.e replacing the core DLL or adding core functionality thru .NET.
I had much better results working from the top down starting by replacing forms and working my way down into the Core DLL.
The biggest hurdle was providing a suitable printer and graphics interface. But Microsoft release of a Printer Compatibility Kit solved both problems. Luckily when .NET was but a glimmer on the horizon I put all the VB6 centric graphic and printing calls behind a interface.
Again start by replacing the format with a .NET assembly calling your COMM core libraries.
If your logic is intertwined with the forms I strongly recommend separating it out into a new COM DLL IN VISUAL BASIC SIX. Have the new DLL interact with the Form through a interface. The form will be a thin shell passing events to the DLL and executing various operation (drawing, re-arranging, etc0.
If you can't avoid using .NET assembly to provide new functionality then create a series of well defined and limited interfaces to control the interaction between the .NET side and the VB6/COM side.
For example we wanted to add office/job management software for our industry to the range of software we sell. We decided to implement using the .NET framework. It had to interact with our CAD/CAM software and so we create a series of interfaces where each can pull needed information or trigger action from the each other.
Finally if .NET classes are implement COM Interfaces the big gotcha is that you need to make sure that any parameters that are part of properties in COM must be declared ByVal or .NET will not be able to implement the property and fail to implement the interface. This includes the value parameter of a Let or Set