mirror of
https://github.com/storytold/cadcraft.git
synced 2026-10-24 10:56:51 -06:00
* AutoLISP: entmake defines blocks with BLOCK ... ENDBLK (fixes #1662) A BLOCK list wasn't an entity, so entmake returned nil and the entities after it went into model space. Now a BLOCK list begins a definition (name, flags, base point, description), the entities made meanwhile go into it, and ENDBLK adds the block (redefining one of the same name, or naming an anonymous *U block) and returns its name. An open definition, an xref, an invalid name or a block that inserts itself is refused with nil, using BLOCK's own name and self-reference checks. * AutoLISP entmake blocks: review fixes (anonymous names keep a star, no redefinition during REFEDIT, a failed routine drops its open definition) An anonymous block (flag 1) named without a * got a name like FO1; it now gets *U. ENDBLK refuses to redefine a block REFEDIT is editing, as BLOCK does. A routine that fails drops the definition it began, so the next routine's entities go into the drawing; one that ends normally still leaves it open. * AutoLISP entmake blocks: refuse an anonymous block that inserts itself The self-reference check ran only for named blocks, so an anonymous *U block holding an INSERT of the name it was about to get (*U1 in an empty drawing) was stored. The check now runs after the anonymous name is given, for both kinds. * AutoLISP entmake blocks: create a definition's layers only when the block is added Each pending entity created its layer at once, so a definition ENDBLK refused (a self-reference, REFEDIT) or a failed routine dropped left an orphan layer. end_block now creates the layers after its checks pass, just before it adds the block.