I find Blocks much easier to deal with. Attached is my take on it, Schematic.lsp with its Schematic command.
If the Circle Block it uses is not in the drawing, it makes both Circle and Rectangle Blocks [the only shapes already included, but see below].
It asks what shape you want at the start and at the finish, and what size [for a Circle, the diameter; for a Rectangle, the sizes in both the direction of the path end and perpendicular to that]. If the shape at the finish is the same as at the start, it doesn't ask for the size(s), but uses the same as the one at the start [it could be enhanced to allow different sizes, if needed]. It remembers your choices of shapes and size(s), and offers them as defaults on subsequent use.
You then draw the Polyline path, using any and all options available within the command, and when you finish, it puts the shapes at the ends. The path can aim in any direction at either end [and can even be closed -- it's your responsibility not to do that], and that's why it has you draw the path before it puts in either end shape -- it needs the path there to determine from its start & end directions where to put the Block insertion points and what rotation angles to use.
These were drawn with it:

It's all set up for the possibility of additional Block shapes, the making of which can be added into the Setup routine. None of what it does uses (if) functions with only two choices [such as if-a-Circle, do the Circle thing, if-not, do the Rectangle thing], but it uses (cond) functions with specific conditions by shape, into which appropriate code for other shapes can be added.
Kent Cooper, AIA