I agree with Daron that some kind of pseudocoding would help get you started .. plus it would describe the problem alot better.
This could be how you'd do it at the command line:
Command: -INSERT
Enter block name or [?]: new_name=old_name
Specify insertion point or [Scale/X/Y/Z/Rotate/PScale/PX/PY/PZ/PRotate]:
etc....
Done deal. You could do this in AutoLISP with a very few basic functions, one of which would be the COMMAND function. So, in pseudocode it could look something like this:
- Ask for pick of an insert and get its entity name
- Perhaps: ask for new name of copied block
- Perhaps: ask for a point for future insertion, scale factors and rotation
- Get the entity data and extract the block name
- Construct string for input to INSERT command (tip: (strcat old_name "=" new_name))
- Use COMMAND "-INSERT" with string from previous step, insertion point, scale factors and rotation
- Lean back and watch your coworkers jaws drop
The perhaps' depend on where the information comes from; hardcoded, user input or otherwise.
Of course, you could go all the way and iterate through subentities (and attributes) - or simply use the EXPLODE method from ActiveX, which will deliver all on a silver platter - and build a new block from scratch. But the above would be a nice little exercise.
And I'm sure we could all chip in if you need help with the steps.