Attribute prompt sequence

In AutoCAD, I was able to control the sequence of the prmpts for attributes in a block. I did this by the sequence by which I selected the attributes as I defined the block. This method doesn't work in BricsCad. Is there another method?Joe Dunfee

Comments

  • Joe,Noticed the same thing.I've sent a support request on this topic last week to Bricsys.Arno van Eeuwen

  • There is probaly some logic to the order, but I don't have the time to try to decode it. I am guessing it might be the order the objects were created. Perhaps you can force the order by moving all the objects off to the side, then copying them each to the original position, one by one. Then delete all the original ones.Can anyone confirm that idea?Joe Dunfee

  • Yes that's what I did a long time ago (Icad98) with a few I frequently use, mainly so my listing lisp routine would read the attributes in the correct order. Often they would be created in the correct order and you might never notice, also I suspect many don't even use attributes.Not sure now if I did the copy/delete, perhaps I found I had to re-create each attdef in the proper order.

  • VBA code below creates a block with 3 circles and adds 5 attributes to it and inserts the block.Calling EATTEDIT shows the attributes in the correct order.Now explode this INSERT and (re)define a block manually, select all items with the mouse one by one and make sure to select the Attribute definitions in the correct order.Insert the new block manually and do EATTEDIT.Now the attributes appear unsorted.Arno van EeuwenPrivate Sub CreateBlock() Dim NewBlock As BricscadDb.IAcadBlock Dim dInsPnt(0 To 2) As Double Dim NewAttdef As BricscadDb.AcadAttribute Dim strPrompt As String Dim strTag As String Dim strValue As String Dim i As Integer dInsPnt(0) = 0 dInsPnt(1) = 0 dInsPnt(2) = 0 Set NewBlock = ActiveDocument.Blocks.Add(dInsPnt, "Mickey") Call NewBlock.AddCircle(dInsPnt, 5) dInsPnt(0) = -6.7 dInsPnt(1) = 4.2 dInsPnt(2) = 0 Call NewBlock.AddCircle(dInsPnt, 3) dInsPnt(0) = 6.7 Call NewBlock.AddCircle(dInsPnt, 3) For i = 1 To 5 dInsPnt(0) = 0 dInsPnt(1) = -5 - i dInsPnt(2) = 0 strPrompt = "Question " & Format(i) strTag = "Tag" & Format(i) strValue = "Value = " & Format(i) Set NewAttdef = NewBlock.AddAttribute(0.8, acAttributeModePreset, strPrompt, dInsPnt, strTag, strValue) Next dInsPnt(0) = 0 dInsPnt(1) = 0 dInsPnt(2) = 0 Call ActiveDocument.ModelSpace.InsertBlock(dInsPnt, "Mickey", 1, 1, 1, 0) MsgBox "Ready boss" End End Sub

  • Nice code!However you findings are not.Hope they will fix this.

  • 'They' are working on it right now ;-)

This discussion has been closed.