"...i have many roads on a surface, some are straight roads, others are curved,..."
By surface you mean it is just a plane (perfectly 2D flat) or terrain surface. Because terrain surface is a totally different story, even manually create decent intersected (and being curved) roads on terrain takes time and always require hand adjustments. Let alone a hope that there's a plugin automatically do that for you without any price (I did search over the web before, and understandably there wasn't any).
Let's say about flat surface. This case, there're methods to create road quite quickly and easily adjustable/modifable afterward. But it also depends on how far you render your scene and what kind of road detail required. Generally, where I work, I often use spline technique to create road (all along with pavement\sidewalk, kerb,...). I use sweep modifier extensively in urban and arch modeling (it easy to control/modify and UV being correct automatically along curve spline).
For a simple example of what I talking about show in *.jpg attached below:
- Spline for road layout (example in scrshot)
- Need draw 1 section spline for sidewalk, kerb, w.p, w.e (show in screenshot, multisubmaterials with 4 subs for each) - set correctly 4 ID for each secment of section spline.
- Paint elements in road surface only use spline with rendering (for correct dimensions and easy adjustment). Use checker map for Opacity slot (diffuse is ~white) for easy control even distance between paint stroke. paint elements is spline was placed at a slightly higher level than road surface level. Turn off Cast shadow in object properties panel (if nescessary)
Other signs in road surface need manually place or paint (or maybe downloaded/mapped and scattered by script depends on what you familiar with max and which kind of signs required, specific signs or just random signs).
Plus, you can outline the (road layout) spline to creat new spline for scattering streetlights, street trees and such things (controlable distance and rotation, etc...). This step usually requires a plugin like Multiscatter, or similar (railclone). You can do by similar free scripts but would lost control many aspects afterward


In this case, the road is a flat object with asphalt material assigned and was placed below everything (I usually place it a level 0). Everything higher than road suface and cover it up so you don't have to draw it and UV it, it is just a big flat geometry with tileable texture (sidewalk and ground/grass object place higher and will cover it only display it exactly between kerb area). Note, by using opacity material for white paint, it easily adjust and show thing below it, you can move it anywhere on the surface - different with hard-painter road texture where eveything on one go). Of course sometimes you need very detail close camera then use painted texture or photograph is nice choice. Sorry English isn't my native language so some words or way of description maybe off/unaccurate.