Hallo Forumianer,
Eine kurze Einleitung:
Ich erstelle mir in einem Drawing eine Skizze und rufe mir die Bemaßung aus dieser ab.
(Set oDimSketch = oDimSheet.DrawingDimensions.GeneralDimensions.Retrieve(oDimSketch))
Dummerweise entspricht die Formatierung nicht meinen Wünschen. Daher verändere ich sie mit folgendem Makrotext:
Dim oGeneralDim As GeneralDimension
Set oGeneralDim = oDimSheet.DrawingDimensions.GeneralDimensions.Item(1)
Dim oDimStyle As DimensionStyle
Set oDimStyle = oGeneralDim.Style
oDimStyle.AlternateUnitsDisplay = True
oDimStyle.LinearUnits = kMillimeterLengthUnits
oDimStyle.DecimalMarkerType = kPeriodDecimalMarker
oDimStyle.LeadingZeroDisplay = True
oDimStyle.TrailingZeroDisplay = False
Jetzt mein Problem:
Die Maße stehen immer noch zwischen den Linien und nicht darüber. Ich kann das nachher manuell im Bemaßungsstil ändern. Aber wie kann ich das mit meinem Makro ändern? Ist "DimensionStyle" als Objekt nicht richtig? Ich habe dort schon so ziemlich alle Möglichkeiten durchprobiert, aber ich bekomme es nicht hin. Das muß doch aber möglich sein. Auch muß man ja bei der Erstellung einer Skizzenbemaßung ja einen "Text Point" angeben. Aber wieso ist die X-Koordinate des Punktes dem Maß ******egal? Zumindest bei normalen Maßlinien. Der Maßtext steht immer in der Mitte. Wenn man Radien bemaßt, dann klappt das doch auch.
Hier mal ein Beispieltext:
Ich habe ihn etwas vereinfacht, was die Koordinaten angeht. Bei mir stehen da Formeln. Auch fehlt das ganze Vorgeplänkel, was die Definitionen angeht. Aber es geht ja ums Prinzip.
X1 und X2 definiert den Bemaßungsstartpunkt und X2 und Y2 definiert den Bemaßungsendpunkt. MX und MY sind die Koordinaten des Bemaßungstextes. Es ist ja ersichtlich, dass der Text links von der Mitte stehen müßte. Macht er aber nicht. Wenn man den X-Wert der Bemaßungskoordinate soweit nach Außen verschiebt, sodass der X-Wert nicht mehr zwischen den Werten von X1 und X2 liegt, dann wird der Text auch verschoben.
Dim X1, Y1, X2, Y2, MX, MY As Double
X1 = 0
Y1 = 0
X2 = 15
Y2 = 0
MX = 5
MY = 1
Set oDimPoint(1) = oTransGeom.CreatePoint2d(X1, Y1) 'Punkt 1
Set oDimPoint(2) = oTransGeom.CreatePoint2d(X2, Y2) 'Punkt 2
Set oDimPoint(3) = oTransGeom.CreatePoint2d(MX, MY) 'Bemaßungspunkt
Set oSketchPoint(1) = oDimSketch.SketchPoints.Add(oDimPoint(1))
Set oSketchPoint(2) = oDimSketch.SketchPoints.Add(oDimPoint(2))
Set oOff(1) = oDimCont.AddTwoPointDistance(oSketchPoint(1), oSketchPoint(2), kHorizontalDim, oDimPoint(3))
Auch würde ich gern mit dem Makro gewisse Pfeilspitzen förmatieren. Ist das auch irgendwie möglich?
So. Das wars. Wie immer jede Menge Fragen, aber hoffe mir kann jemand weiterhelfen. Bin für jeden Hinweis dankbar.
MfG, CADHeiner
PS: Ich habe bei meinem Thema mit der Zentrierung mal die Lösung, die ich suchte (und selbst gefunden habe :-)) reingestellt. Wer will, kann sie mal Ausprobieren. Einfach ein neues Drawing-Dokument öffnen, und das Makro ausführen.