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.
Solved! Go to Solution.
Is your code changing an actual instance of a MleaderStyle?
Something Like?
MLeaderStyle mlStyle = dbentry.GetObject(OpenMode.ForWrite) as MLeaderStyle;
mlStyle.Scale = 20;
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.
That didnt seem to work either. Do you know if there is any documentation on MLeaders?
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
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.
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.
Dear Sir,
I have the same issue. Could you please show me how to do it in C#? Thanks!