A block created with its base point at some arbitrary corner never snaps where you want it, and the usual fix is exploding and rebuilding it. BASEPIN shifts the base point instead and updates every reference in the drawing.
What BasePin does
The base point is the grip you insert and rotate a block by. Moving it properly means changing the definition and then dealing with every existing reference — which is the part that makes people explode the block instead.
There are two commands, and the difference matters.
BASEPIN keeps each reference’s insertion coordinates the same. The geometry therefore appears to move, swinging around the unchanged insertion point. Use this when the block is inserted at meaningful coordinates — a survey point, a grid intersection — and those coordinates must not change.
BASEPINHOLD keeps each reference’s visual position the same. Every reference is moved to compensate, so nothing appears to shift; the insertion coordinates change instead. Use this when the drawing already looks right and you only want a better grip point. This is usually the one you want.
How to use it
- Load the routine with
APPLOAD, or put it on your support file search path. - Decide which behaviour you need — hold the coordinates (
BASEPIN) or hold the appearance (BASEPINHOLD). - Type that command.
- Select the block.
- Pick the new base point.
- If you undo afterwards, run
REGEN— see the note below.
How it works
Locked layers are handled rather than skipped. They are temporarily unlocked and relocked afterwards, so references sitting on a locked layer are not silently left behind at the old base point — which would leave the drawing in a worse state than before, and quietly.
Attributed blocks get an ATTSYNC afterwards, which repositions their attributes relative to the new base point. Without it the attributes stay where they were and drift away from the block that owns them.
Rotated, scaled and mirrored references all work. The shift is transformed through each reference’s own placement rather than being applied as a flat displacement, so a block inserted at 30° and scaled 2× moves by the right amount in the right direction.
Notes and limits
- After an undo, run REGEN. The change to the block definition is undone correctly, but the display does not refresh on its own, so the drawing looks unchanged until you regenerate. This is the one surprise in the routine and it is worth knowing before you need it.
- Choose the right command.
BASEPINpreserves coordinates and moves the geometry;BASEPINHOLDpreserves the appearance and moves the coordinates. - It changes the block definition, so every reference in the drawing is affected, not just the one you selected.
- Dynamic blocks with position-dependent parameters should be checked afterwards — their parameters are measured from the definition’s origin.
Download and details
| Name | BasePin — move a block definition’s base point without redefining it |
| Download | BasePin.lsp — 13.9 KB, plain AutoLISP source. Downloads directly; no zip to unpack. |
| Type | AutoCAD AutoLISP routine |
| Commands | BASEPIN, BASEPINHOLD |
| Requires | the ActiveX layer (loaded automatically by the routine with vl-load-com). |
| Source size | 13.9 KB, 342 lines |
| Error handling | Yes — a *error* handler restores every system variable it changed, on cancel as well as on error. |
| Undo | The whole operation is wrapped in a single undo group, so one U reverses all of it. |
| Compatibility | AutoCAD (any release with AutoLISP), BricsCAD, ZWCAD, GstarCAD, ProgeCAD and other IntelliCAD-based platforms. AutoCAD LT needs a LISP enabler. No .NET, no ObjectARX, no installer. |
| Author | YZ, August 2026 |
| Licence | Free to use, supplied “as is” with no warranty. |
References
- BSCALE LISP — scale blocks about their own insertion point
- FixBlock LISP — reset block entities to layer 0
- UPDBLOCK LISP — change layer or colour inside block definitions
- More free AutoLISP routines on this site
- Wisey’s Steel Shapes — free structural steel section drawing program