Bricscad extents values based on blocks that are not visible?
I am trying to convert LISP that works well on AutoCAD R14 to Bricscad. On R14, when a block is inserted to a layer that is frozen, it is not visible and does not affect the extents values (extmin and extmax). The LISP freezes certain layers and uses the extents values of the thawed layers to set the scale of a block that is inserted. With Bricscad 10.4.10, the block is not visible but it still is taken into account for the extents values, so the block gets inserted at a much bigger scale than desired.
Is this the expected behavior for blocks in Bricscad?
Is there any way to tell Bricscad to ignore invisible blocks when it set it's extents values?
Comments
-
I have not used a function like that, I guess you could find out extmin and extmax before the block is inserted?
Any if not all changes in Icad/Bcad lisp have been intended to be in line with changes in Autolisp, or eradicating differences.
For an equivalent to R14, Intellicad 98 would be a closer match - I found very few differences at that time.
0 -
Thank you for the reply John, but I apparently have not made my question clear. My problem isn't with LISP functions, or LISP compatability.
The problem is like this: If I hae a drawwing that is a map of the USA and every state is a block, when all the blocks are visible and I "zoom extents", I see the whole USA. When I make every state except Iowa invisible and "zoom extents", AutoCAD R14 fills the screen with Iowa; Bricscad shows only Iowa, but it's a tiny square in the middle of a mostly empty screen because the extents are defined by all the other states which are invisible.
For my LISP to work correctly, I need extents that are based on only visible blocks.
0 -
I have no way to test on R14, but it looks to me like Bricscad does exactly what Autocad 2011 does. Entities that are turned off are included in the selection set for determining extents. Entities that are frozen are not included in the selection set for determining extents.
0 -
@ Paul:
I cannot confirm your problem. I have done a test and Bricscad (10.4.18) preforms as expected.
THE TEST:
DRAWING SETUP:
Start a new empty drawing
Create layers NewLayer01 to NewLayer09
Create layers NewLayer11 to NewLayer19
Create a 3x3 grid of square polylines:
- The bottom left corner of the grid is 0,0
- The polylines are on NewLayer01 to NewLayer09
Create 9 blocks NewBlock1 to NewBlock9 (one per polyline):
- Use the polyline on NewLayer01 for NewBlock1
- Use the polyline on NewLayer02 for NewBlock2 etc.
- The insertion point for all blocks is 0,0.
Insert all 9 block:
- Use layer NewLayer11 to insert NewBlock1
- Use layer NewLayer12 to insert NewBlock2 etc.
- The insertion point for all blocks is 0,0.
SITUATION 1:
- ALL LAYERS ARE THAWED AND ON.
- FREEZE NewLayer01 to NewLayer04 and NewLayer06 to NewLayer09
- Execute a ZOOM EXTENTS
- Result: NewBlock5 fills the screen
SITUATION 2:
- ALL LAYERS ARE THAWED AND ON.
- FREEZE NewLayer11 to NewLayer14 and NewLayer16 to NewLayer19
- Execute a ZOOM EXTENTS
- Result: NewBlock5 fills the screen
SITUATION 3:
- ALL LAYERS ARE THAWED AND ON.
- Turn OFF NewLayer01 to NewLayer04 and NewLayer06 to NewLayer09
- Execute a ZOOM EXTENTS
- Result: the 3x3 grid fill the screen but only NewBlock5 is visible
SITUATION 4:
- ALL LAYERS ARE THAWED AND ON.
- Turn OFF NewLayer11 to NewLayer14 and NewLayer16 to NewLayer19
- Execute a ZOOM EXTENTS
- Result: the 3x3 grid fill the screen all blocks is visible0 -
Thanks Roy - I loaded 10.4.18 and it works for me too.
0 -
Glad that is sorted Paul, but the reason for the initial difference in behaviour might still have been that Acad or Alisp took a turn in behaviour since R14 and Bcad followed. The point is there have been some changes in the way Acad behaves.
I have seen a number of files for which your routine would never have worked reliably. It is possible to create empty text or mtext entities which don't show but are included in zooms - this and other surprises (mostly in drawings from others) can frustrate routines specific to your own system.
0