Annotative & Dynamic Section Symbol

Annotative & Dynamic Section Symbol

Anonymous
Not applicable
4,355 Views
9 Replies
Message 1 of 10

Annotative & Dynamic Section Symbol

Anonymous
Not applicable

Hi all. I have searched A LOT for a solution but so far, no good...

Let me try to make this clear and simple to understand:

 

Objective: make a Dynamic Block, with annotative behaviour, for a Section Symbol.

 

The problem is: as the block is set to annotative, when scale changes, it resizes accordingly, moving the marks from their original place.

 

To avoid that I have made the block non-annotative and a nested block annotative containing the section arrows. Until here, everything is good.

 

The new problem is: as the block is non-annotative (only the nested are), the attributes aren't annotative as well. So I set them annotive, but they don't behave as expected, only one scale of it appears (the one where it was created, i think...)

 

So, if it would be possible to acess the attributes of a nested block, this would be solved (because the nesed block behaves as expected), OR, if the attributes could behave as a Text or MText being annotative it would be solved too.

 

I have even created another possible solution: a Text with a field pointing for the Attribute value, but this field doesn't regen as the value changes, it only reads the inicial value inside the block.

 

I attached a file containing two blocks, one for each solution that I've tried...

 

Thank you.

0 Likes
Accepted solutions (2)
4,356 Views
9 Replies
Replies (9)
Message 2 of 10

Libbya
Mentor
Mentor

I have come up with two workarounds that are similar.

 

The first is easier to set up and use as long as the value displayed is user input and not another field.  For example, it will not work if you are using SheetSetPlaceholder fields for referencing the view or sheet numbers.  Create a user parameter with type=string to house the value of the text.  Create multiline attributes for the actual display of the text.  Within the attribute, use a BlockPlaceholder field that references the user parameter.  Justify the attribute so that you can place the justification point on the desired scale base point and adjust the placement of the field by adding spaces or extra lines of text.  You can fine tune the placement by adjusting the height of a line of text.  I have found this method to be fairly solid and easy to format albeit with the aforementioned downside of not being able to use fields within the user parameter.  A dynamic action is required to 'jumpstart' start the updating of the fields.

 

If you do need to use a field value for the text (e.g. Sheet Number) the process can be VERY finicky.  Again use multline attributes and place each justification point at the point from which you would like it to scale and space it away from the justification point in the same manner using extra spaces or lines of text sized appropriately.  Unfortunately, it seems that the object field defition referencing an attribute value can't withstand redefining the block.  If you open and save the block in block editor, the fields will not survive.  It seems that the only way to make them work is to do the field definition last and then save.  If the field is broken, the only way I have found to fix it is to delete the field from the multiline attribute and then save/exit the attribute definition.  Then re-enter the attribute definition and insert the field...  Quite finicky, but it can be made to work.  In order to prevent other users from disrupting the attribute formatting, I have used an invisible attribute that can be edited and a field in each of the visible attributes referencing the invisible one.  Changing the user parameter value works for 'jumpstarting' the fields.

 

Attached is a file with both examples. 

 

If the fields do not update after insertion and 'jumpstart', then you can save, close and open the file and they will often begin working correctly.

0 Likes
Message 3 of 10

Anonymous
Not applicable
Thank you for your reply, but the main problem subsists, as the attributes don´t follow the annotation scale.
In the file i've posted, there is an attribute (with a "B" value) that does exacly what is needed, but it is inside a nested block, so no way to modify it dynamically...
The main problem is to have a text that resizes according to the annotation scale (like the nested block does) and receives as input a value from the user - the section name (like A, B, 1, 2, etc..)
Sorry if i was not clear about the problem... TY!
0 Likes
Message 4 of 10

Libbya
Mentor
Mentor

The text resizes correctly for me when the annotative scale is changed.  See the attached screen shots.  One is at 1:100, the other is at 1:200.  The length of the white line does not change (as indicated by the white box) and the text size and location scales from the basepoint of the section tail annotative block.  The text is editable by either updating the referenced attribute and doing a regen for the attribute version or by selecting the block and changing the Section_Number user variable and doing a regen in the user variable version.  

 

I left the 'B' text alone so that one could see that the field text behaved correctly.  

0 Likes
Message 5 of 10

Anonymous
Not applicable
Accepted solution

Ok, this is very anoying...

I saw the screen shots and the answer for the problem showed up:

Over your status bar i saw that you use the "Automatically Add Scales to Annotative Objects When the Annotation Scale Changes" turned ON. I use it turned off...

So, somehow, only if that is ON, the block attributes behave accordingly to the annotation scale. Despite the scales are set to the attributes inside the block, if that autocad option is off, it won't work.

 

I belive the problem is solved this way, even though autocad  doesn't deal that well with this mix, it isn't smoth as it would be expected.

 

I post above the block fixed and working as intended, I hope =p

 

Thank you Libbya for your effort.

0 Likes
Message 6 of 10

Libbya
Mentor
Mentor
Accepted solution

My understanding is as follows.  It will always scale from the justification point of the attribute position where the block definition was last saved.  It does not respect different annotative scale positions within the block.  It will work without 'add scales automatically' provided you add all the scales within block editor that you want it displayed at.  To easily add the appropriate scales, you can go into the block editor, turn on 'add scales automatically', cycle through the scales you use, turn off 'add scales automatically', save and exit.  After doing so I turned off the two annotative buttons and took this screencast which shows me cycling through the scales.  It works fine.  

Message 7 of 10

Anonymous
Not applicable

Great!


@Libbya wrote:

To easily add the appropriate scales, you can go into the block editor, turn on 'add scales automatically', cycle through the scales you use, turn off 'add scales automatically', save and exit.


Yep, that works very fine.

I just don't understand why when the scales are added manually to the attribute, it won't work, it won't cycle through scales...

 

With this method, as I cycle through scales in the block, I can even manually (picking the att grip) reposition the attribute to the right place near the section arrow.

 

I did some fine tune to the block and post here the final version to anyone who want's it:

0 Likes
Message 8 of 10

Libbya
Mentor
Mentor

Unfortunately, if you move the attribute in a specific scale using the grip within block editor, it only works for that occurrence of the block.  That is why I was saying previously that you need to place the justification point of the attribute at your desired scale base point.  This screen case shows your fine-tuned block on the left and a new unedited insertion of the same block on the right.  As you can see, the new insertion ignores the anno placement within the block and reverts to scaling from the justification point location location of the attribute at the last scale saved in block editor.  The solution to get it all working correctly is the one I originally posted.  Place the attribute justification point at the desired scale base point within the block and then move the text by adding spaces or lines to the attribute value.

0 Likes
Message 9 of 10

Anonymous
Not applicable
Hmm ok... I see...

I think AutoCAD isn't ready yet for this kind of use, or at least for this kind of section symbol design (a centered design its easier and will work fine). For this design we can only get a workaround, not a legitimate solution... why AutoCAD? Ain't you grown enough?... x)
0 Likes
Message 10 of 10

Anonymous
Not applicable

so i have section arows that are a dynamic block. if you rotate then stretched works fine. but you only get one shot. 

 

if you stretch then rotate texts goes all whacky. does anyone know how to fix this?

 

i also want to add flip commands and possible a scale command

0 Likes