.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multileader scale

10 REPLIES 10
SOLVED
Reply
Message 1 of 11
BrentBurgess1980
5258 Views, 10 Replies

Multileader scale

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.

10 REPLIES 10
Message 2 of 11

Is your code changing an actual instance of a MleaderStyle?

Something Like?

 

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

You can also find your answers @ TheSwamp
Message 3 of 11

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.

Message 4 of 11

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

Message 5 of 11

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

 

You can also find your answers @ TheSwamp
Message 6 of 11

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.

Message 7 of 11

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.

You can also find your answers @ TheSwamp
Message 8 of 11

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

 

Message 9 of 11
runCAD
in reply to: BrentBurgess1980

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
in reply to: runCAD


@runCAD 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
shih
in reply to: Jeff_M

Thanks!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost