Multileader scale

Multileader scale

BrentBurgess1980
Collaborator Collaborator
6,907 Views
10 Replies
Message 1 of 11

Multileader scale

BrentBurgess1980
Collaborator
Collaborator

Does anyone know how to set the overall scale of a multileader? I have set the .Scale property, but that seems to have done nothing.

 

                MleaderStyle.Annotative = AnnotativeStates.False
                MleaderStyle.LeaderLineType = LeaderType.StraightLeader
                MleaderStyle.ArrowSize = Me.ArrowHeadSize
                MleaderStyle.BreakSize = Me.DimensionBreak
                MleaderStyle.DoglegLength = Me.LandingLength
                MleaderStyle.EnableLanding = True
                MleaderStyle.EnableDogleg = True
                MleaderStyle.EnableFrameText = False
                MleaderStyle.LandingGap = 2
                MleaderStyle.MaxLeaderSegmentsPoints = 50
                MleaderStyle.DrawMLeaderOrderType = DrawMLeaderOrderType.DrawLeaderFirst
                MleaderStyle.LeaderLineColor = Me.LeaderColour

                '' Text Settings
                MleaderStyle.ContentType = Autodesk.AutoCAD.DatabaseServices.ContentType.MTextContent
                MleaderStyle.TextHeight = 2.5
                MleaderStyle.TextAlignAlwaysLeft = True
                MleaderStyle.TextAttachmentType = TextAttachmentType.AttachmentMiddleOfTop
                MleaderStyle.TextAlignmentType = TextAlignmentType.LeftAlignment
                MleaderStyle.TextColor = Color.FromColorIndex(ColorMethod.ByPen, CShort(Project.DimensionTextColour))

                MleaderStyle.Scale = 50

                MleaderStyle.PostMLeaderStyleToDb(db, "50m")
                tr.AddNewlyCreatedDBObject(MleaderStyle, True)

Everything else works, but the overall scale is always 1.

0 Likes
Accepted solutions (1)
6,908 Views
10 Replies
Replies (10)
Message 2 of 11

Anonymous
Not applicable

Is your code changing an actual instance of a MleaderStyle?

Something Like?

 

MLeaderStyle mlStyle = dbentry.GetObject(OpenMode.ForWrite) as MLeaderStyle;
mlStyle.Scale = 20;

0 Likes
Message 3 of 11

BrentBurgess1980
Collaborator
Collaborator

Yeah I am trying to create a multileader style and set the scale to 50. I might try creating it and the getting it from the DB and changing the scale.

0 Likes
Message 4 of 11

BrentBurgess1980
Collaborator
Collaborator

That didnt seem to work either. Do you know if there is any documentation on MLeaders?

0 Likes
Message 5 of 11

Anonymous
Not applicable

Instead of setting the properties I copied from standard stlye and change the scale factor

 

Creates a new style named "newStyle"

 

  <CommandMethod("CreateMleaderStyle")> _
        Public Sub CreateMleaderStyle()
 
            Dim doc As Document = Application.DocumentManager.MdiActiveDocument
            Dim db As Database = doc.Database
            Dim ed As Editor = doc.Editor
 
            Using trx As Transaction = db.TransactionManager.StartTransaction()
 
                Dim mldrStyleDictionary As DBDictionary = db.MLeaderStyleDictionaryId.GetObject(OpenMode.ForWrite)
                Dim copyMleaderstyle As MLeaderStyle = mldrStyleDictionary.GetAt("Standard").GetObject(OpenMode.ForWrite)
                Dim newMleaderstyle As New MLeaderStyle()
                mldrStyleDictionary.SetAt("newStyle", newMleaderstyle)
                newMleaderstyle.CopyFrom(copyMleaderstyle)
                newMleaderstyle.Scale = 50
                trx.AddNewlyCreatedDBObject(newMleaderstyle, True)
                trx.Commit()
 
            End Using
 
        End Sub

 

0 Likes
Message 6 of 11

BrentBurgess1980
Collaborator
Collaborator

I have tried the code, and an interesting thig happens. In the MultiLeaderStyle dialog box, the scale is showing 50 - just what I want, but when I draw the MLeader and select it, the overall scale is 1.

0 Likes
Message 7 of 11

Anonymous
Not applicable
Accepted solution

To change the scale of the actual mleader mleader I do not think there is a way .Net with exception of PInvoke.

see http://www.theswamp.org/index.php?topic=31861.msg386494#msg386494

 

The scale the code is setting is for style which should effect all mleaders on that style, but for indivdual mleaders scale property see link.

 

If that helps at all are if that is what you are after.

Message 8 of 11

BrentBurgess1980
Collaborator
Collaborator

Thats excellent!! now it is showing the scale I want.

 

0 Likes
Message 9 of 11

Anonymous
Not applicable

Dear Sir,

 

I have the same issue. Could you please show me how to do it in C#? Thanks!

Message 10 of 11

Jeff_M
Consultant
Consultant

@Anonymous wrote:

Dear Sir,

 

I have the same issue. Could you please show me how to do it in C#? Thanks!


The link in the post 2 above yours which takes you to the Swamp has the C# solution.

Jeff_M, also a frequent Swamper
EESignature
Message 11 of 11

Anonymous
Not applicable

Thanks!

0 Likes