AutoCAD Dynamic Blocks :: Move Attributes In Constraint Parameter Environment
Mar 12, 2012
I have a dynamic block that I am trying to add some pretty basic functionality to (at least it seems like it should be simple!). Since I’m still relatively new to DB’s, I figured I’d give some background on what I’m trying to do, cause maybe it could be done with a much easier approach than I have come up with. So if you don’t feel like reading the details, see the fourth paragraph for my actual question.
The block is a sheet reference annotation (that shows: SheetNum/TotalNumOfSheets) that we typical put in the notes section of our construction drawings. It looks nice when the text (which are attributes), lines up with the text in the note (usually Mtext, but sometimes a Mleader). So I constantly find myself completing the tedious task of placing the block at the insert point of the Mtext (which is always justified LEFT TOP), and then calculating the distance down to line that I want the block to line up with.
So what I want the block to be able to do is to be able to have the user grab the block by its basepoint, place it at the insert point of the Mtext object, and just enter the text height of the Mtext note, the line space factor, and the target line of the note that the sheet reference block should line up (the input would all be done via custom block properties in the Properties Palette). And since we almost always use a text height of 0.125 and Line Space factor of 1, those will be the defaults, and really the only thing that would need to be entered would be the line number of the Mtext that the annontation should line up with.
I already figured out most of the constraint parameters necessary and calculated the offset equation using custom parameters. I have all the linework moving correctly using the vertical constraint parameters, however, I cannot figure out how to get the Attributes to move along with the linework. I know how to move text and attributes using Action Parameters, but I can’t do it with Constraint Parameters. So I figured that maybe I could chain an Action Parameter to the Constraint Parameter, but I couldn’t figure out how to do this either. Also, I am using visibity states and would like the visibility grip to move along with everything else as well.
My block is attached. I used some lines for the Constraint Parameters to be associated with, but they are only there for the block to operate correctly, therefore they are invisible in both of the visiblity states. Probably not the best way, but it works.
I have been trying unsuccessfully for several days to achieve a stable setup for the attached. This is the closest I have been able to get so far but as you can see if you change the width then the rotation parameter, the stability of the block very quickly breaks down.
The problem seems to be associated with the move action which determines the center point of the angle parameter. It seems to only work properly when you change the width parameter and the rotate handle is in the 180deg. Any other position of the angle parameter results in incorrect alignment of the geometry.
I have this Dynamic Block which has a few distance parameters on it and an attribute at beginning of each parameter which are attached to a stretch action. If manually bring the block in. And set a value to attribute and then stretch the it , attribute move along with action. But when I do it pragmatically it doesn't . Basically attribute stays at original location of original block before stretch. What is wrong with my code. Or Shall I do something to Attributes when I change the distance parameters in Program? I don't know .
I have a function which bring the block in and set attribute first and then another call which change the distance . So I don't show the first function which to me works fine . The problem is this part.
For Each myBRP As DynamicBlockReferenceProperty In myBRC For I = 1 To NumbderOfDistanceParamsinDynBlk If myBRP.PropertyName = "Distance" & Trim(i.ToString) Then myBRP.Value = DynDistancevalue(i) End If Next Next
I'm working on a dynamic door block, which allows me to add some height and width values to the door. everything works fine when I put in the attributes right away when I insert the block. Only if I want to mirror and stretch the block before I enter the values they want move to the correct position. After I run "attsync" it moves to it's correct place.
I've got a block with 2 lines of text, the second line being optional. If the second line is omitted, the first line should be moved down, so it's centered.
I can handle the second line being omitted with a visibility parameter. And I can handle the first line being moved down with a move parameter. But how can I link the two?
Ideally, I'd be able to re-use the line 1 attribute and display it in whichever place was correct, but that doesn't seem to be possible.
How do I manipulate a height parameter all of the dynamic blocks in the drawing from one single field? Say a field located in the drawing properties or on the drawing itself.
For example: Multiple blocks of different walls of same height with other blocks of things on located on those walls, dependant on the wall height, all linked to and changed by a single field. Possibly a Wall Height field located in the custom tab of the drawing properties.
I can pickout each of the blocks and change them at the same time in properites menu because they all share the same parameter name. I would just like to have that height parameter of every block in the drawing, that has that specific parameter controled by a single field. Which I could enter a new height at anytime that would change every block in the drawing to that height.
I realize that i don't understand how to use constraints (specifically how to "fully constrain" entities) in my dynamic block.
attached is a sample of what i've got. (note the small circle at the insertion point that has 4 lines in it - i used these to base my angle constraints on)
upon inserting the first instance, everything behaves as i'd like. but once i stretch out the bubble, it seems to go back and automatically update the definition so that the next instance i insert is using the first instances dimension as the starting point.
I have an interior elevation callout block with four arrows, noting the N, S, E, W interior wall elevations. I trick I use to rotate Text while keeping the Text oriented in the upright position is to place a Point Parameter at the center of the text then set the "Chain Actions" to Yes. Then I use the Move Action to tie the text to the Point Parameter. Next step is to use a Rotation Action to select only the Point Parameter, which rotates the Point Parameter and brings the text along with it, keeping the text oriented in the upright reading position always. As an example, think about a viewport tag with a North arrow, and the letter "N" at the arrow tip. When you rotate the arrow, the "N" position rotates with the arrow's point but always is oriented upright.
So I have created a block witch is a pin out for a device with some attributes. I have created a dynamic block away so that I can have multiple pinouts on a device... how can I work it so that each element of the array has different attributes?
Output1, output2, output3 for example? but when i use the grip to give me another pin it allows me to do output4?
I have a block that has been already established. i added another line of attribute. how do i make the new attribute associate with the 'move' parameter that has been set with the old attributes?
I'm trying to create a window block with a grille. I've created the block and the horizontal grilles. What I'm having a hard time with is creating the vertical grilles. I would like to set up an array that would take the glass width, divide by 12, round up the value to get the number of vertical sections. Here's the code that I've figured out:
I've got a block that has a couple of rotation parameters. The main one works OK. But the secondary one that is incremental and only 180 doesn't. Everything looks OK but the objects don't rotate according to the parameter but 90 degrees from what I think it should.
I need a rectangle block which on insertion prompts me for some data (name/tag/item number) and then displays it (this I can do). This is al pretty straightforward. But I also want to be able to fill in width and height and then have the block stretch to the correct size. So basically what I think I need is to have the value of a parameter refer to the value of an attribute. I've gotten it to work the other way around, where the attribute displays the size of one side of the rectangle (after stretching and regenerating), but I'd really like to have it working the other way.
I am trying to create a dynamic block with two attributes, a double grid head, when I add a stretch parameter to the head it only affects the first assigned attribute.
I have added a stretch parameter to each attribute and only the firt attribute will move. What are the rules with attributes in dynamic blocks, the only thing I found was I have to lock posistion for attributes to be affected by the paramter assigned by the dynamic block.
What I'm trying to do is have a graphic scale with a set list of scales the user can pick from. This was easy using the Visibility Parameter.
However, I want to add a "custom" vis state where, once they select this option, the attributed definition box will pop up and give them the option to input whatever scale they are using.Check out the attached .dwg to see what I've done so far (I just have the attributes on the "custom" vis state).
Is it possible to link a parameter value to a function? I want text or attributes to never be "upside down".
If it is rotated with a rotation parameter the text would need to be automatically flipped or rotated if the angle is less than say >3*PI / 4 and < 7*PI/8.
I'm trying to set up a dynamic block with an attribute/field within it that the user(s) edit using a lookup table.
I understand basically that a field must be created as the attribute that then references a lookup table with the inputs listed. However, I really do not know how to create a lookup that has custom information such as below:
Site: Unit Code Site X 100 Site Y 200 Site Z 300
All I have seen explains how to create a lookup from an existing parameter (liner etc) and I don't seem able to create something specific to my requirements. I forgot add that I want the user to see "Site X", "Site Y" etc in the dropdown - but the attribute to reflect only the Unit Code.
I need to know if there is a way to link an attributed F-N bubble with qty's to the BOM. This is for electrical wiring diagrams for aircraft. So I have serveral part numbers to a BOM, but no real accurate way of finding total quantities other than manually going though the drawing.
I am trying to create an attribute that displays the product of an Area of an object in the block and the value of a different attribute. For instance, here is what makes up the dynamic block:
1 rectangle (with width and height parameters and stretch actions) 1 Attribute called "ForcePerSQIN" - the value of this is entered separately for every instance of the block by the user 1 Attribute called "Total Force"
In the "Total Force" attribute, I want to create a field that contains a formula to multiply the area of the rectangle (which I am able to obtain with no problems using the Area property of the rectangle object type) by the value of the "ForcePerSQIN" attribute, which is user-defined. The problem I have is that it appears as if the value of this attribute is treated as text and thus cannot be used in the calculation; I get ######.
Is there a way to make the "ForcePerSQIN" parameter treat the user-defined value as a number instead of text so that it can be used in the calculation? Or is there a better way to accomplish my ultimate goal?
Any way to change the order that the parameter properties appear in the property manager. Currently I think they are appearing in the order in which I placed them, but I would likr to re-arrange them.
The "Main Stretch" parameter does not correspond with the Block Properties Table. What does this parameter need to be attached to?The paramter will adjust with the pull down options of the Block Properties Table.
I am trying to create a block that has a stretch and array command, but I would also like to rotate each arrayed item indvidually. However I cannot select the rotate parameter as part of the array function, so the block end up only containing one rotate grip.
I have 3 circles, randomly spaced. They will always be the same size. I want to resize them all about there centre points using just one parameter in the properties fly out. I've created individual linear/stretch for each circle, but I can't work out how to combine them.
I am trying to be able to have my outreach arm stretch horizontally and on angles of 5 / 10 / 15 degrees from the pole. I have been able to make the polar stretch for this and it works fine though what i am trying to do is have the luminaire height also stretch and move when the size of the outreach changes (i can make the linear dimension work the way i want though not the luminaire parameter) as when you add the paremter into the stretch action is only moves the top and leaves the bottom at the same location which is not giving me the correct height.
The block itself is alot more complicated then this I have stripped most of the parameters out to make it less confusing but the end result would allow the user to input the outreach angle, outreach length and luminaire height. I have attached drawing for your reference.