Hmm, I just files the same bug as #1565, but I can't find a trace of it. Did I not enter it correctly?
So here it is again:
Blocks (or their contents) disappear when overwritten. To reproduce:
1) Draw circle
2) Select circle, BC, select center, name 'testblock'
3) repeat 2; circle is now gone.
See attachment.. This is latest linux pro release, not git.
Disappearing blocks.
Moderator: andrew
Forum rules
Always indicate your operating system and QCAD version.
Attach drawing files and screenshots.
Post one question per topic.
Always indicate your operating system and QCAD version.
Attach drawing files and screenshots.
Post one question per topic.
Disappearing blocks.
- Attachments
-
- testblock.dxf
- (99.21 KiB) Downloaded 392 times
Re: Disappearing blocks.
You report is still there, but has been closed. Note that the bugtracker does not show closed bugs by default:
http://www.qcad.org/bugtracker/index.ph ... sk_id=1565
You are creating a recursive block (a block that contains a block reference, referencing the same block).
Recursive blocks cannot be displayed since that would take an infinite amount of time and memory.
http://www.qcad.org/bugtracker/index.ph ... sk_id=1565
You are creating a recursive block (a block that contains a block reference, referencing the same block).
Recursive blocks cannot be displayed since that would take an infinite amount of time and memory.
Re: Disappearing blocks.
Ah, I see how the recursion is a an issue.. I didn't realize I was selecting the block the second time, instead of the separate entities. What I meant to do it to recreate the block with a different center point.
- Is there a way to retrieve my original block?
- It would be better to warn the user about recursive blocks (or refuse to redefine), rather than just disappear them..
- Is there a way to retrieve my original block?
- It would be better to warn the user about recursive blocks (or refuse to redefine), rather than just disappear them..
Re: Disappearing blocks.
1) Draw circleteegee wrote:What I meant to do it to recreate the block with a different center point.
2) Select circle, BC, select center, name 'testblock'
3) Select circle, Explode (XP), BC, select new Reference Point, name 'testblock'
4) Warning Message!
"OK" will replace your Block with this new one and ALL Blocks in your drawing with this name.
Work smart, not hard: QCad Pro
Win10/64, QcadPro, QcadCam version: Current.
If a thread is considered as "solved" please change the title of the first post to "[solved] Title..."
Win10/64, QcadPro, QcadCam version: Current.
If a thread is considered as "solved" please change the title of the first post to "[solved] Title..."
Re: Disappearing blocks.
Thanks Husky. Still, it isn't very user-friendly to disappear blocks if they are recursive by accident (ie. user error). I tried to recover my circle as folows:
- Select all, to select invisible block. Property editor shows Block Reference (1)
- XP (nothing seems to happen)
- Save file:
Oopsie. Something is buggy here..
- Select all, to select invisible block. Property editor shows Block Reference (1)
- XP (nothing seems to happen)
- Save file:
Code: Select all
Command: save
Empty Record name: <AcDbBlockReference> (3A)
File [...]/testblock.dxf has not been saved.
Re: Disappearing blocks.
No. Your block now only contains a reference to itself, nothing else.teegee wrote:- Is there a way to retrieve my original block?
1. A circle is created.
2. A block called "testblock" is created (containing the circle).
3. The existing block "testblock" is overwritten (=replaced) by a new block, containing a single block reference that points to block "testblock", i.e. itself. The circle is gone at that point. If you are still in the same session, Edit > Undo will work of course.
I can reproduce this here and this should be fixed for the next release. However, "fixed" means that the block reference will simply be skipped when saving. What happens is that QCAD "grounds" the recursive block reference on loading to avoid any further problems with it by setting the referenced block name to an empty string. This is then caught as an error when saving.Empty Record name: <AcDbBlockReference> (3A)
For now, you could manually delete the offending block reference before saving.
Re: Disappearing blocks.
OK.andrew wrote: 3. The existing block "testblock" is overwritten (=replaced) by a new block, containing a single block reference that points to block "testblock", i.e. itself. The circle is gone at that point. If you are still in the same session, Edit > Undo will work of course.
I still think QCAD should reject the block (re)creation, or you're going to get more dummies in the future asking the same question as me
OK, thanksandrew wrote: For now, you could manually delete the offending block reference before saving.
Re: Disappearing blocks.
Unfortunately, that would be potentially very costly. At the moment, a block is created from selected entities without having to look at them. Preventing block recursions when they are created would require QCAD to look into all blocks referenced by all block references directly or indirectly, traversing them and looking for other block references, etc.teegee wrote:I still think QCAD should reject the block (re)creation, or you're going to get more dummies in the future asking the same question as me
There are also many different ways to create recursive block references (copy / paste, property editor, etc.)
This is a case in which it is far easier to just let it happen and then try to deal with it in as gracious a way as possible.
I would expect most users to probably hit undo when something unexpected happens (such as disappearing entities).