So, let's take a look at how this could help the user.
At the most basic level, the cad layer is sufficient to classy an object for GIS purposes.
Additional data can be attached to the objects as well in the forms of Object Data, and or Database Links.
Basic Scenario:
A file containing lines, and or polylines representing various utilities on respective layers. Utilities Source File
The user wants a Map showing the lengths and location of specific types; lets say a particular size and material of pipe that is being scheduled for replacement.
The user opens a new Map session and attaches to the Utilities Source File.
Performs a query against the attached file, and uses an annotation template as part of the Alter Properties operation. By default the Labelpoint is in a lame location and the MAP looks terrible.
The user should then delete the bad labels, redefine the labelpoint for the objects and A) save back to the source and run the query as defined or B) refresh the annotations. Then print the Map, or set up a Map Book Query should the size of the mapping warrant it.
(This probably doesn't answer your question about doing this with VLISP, however I don't see a need to do so. The challenge will be grooming the data so that you like where the labelpoint is. Then the annotation placement and creation is a standard query process with no need to code anything. Further if that query is saved to external libray anyone can perform this task against your dataset.)