Grüsse!
Ich versuche mittels eines kleinen Scripts alle Schraffuren einer Zeichnung mit einer weiteren Schraffur, diesmal Solid und in Farbe zu hinterlegen. Sprich etwas Farbe reinzubringen.
In der Theorie ist dies, zumindest bei assoziativen Hatches sehr einfach. For Each Hatch in HatchSelectionSet GetLoopAt -> Neuen Hatch definieren und resultat von GetLoopAt für AppendOuterLoop verwenden.
Das Problem ist nur, das funktioniert nur, solange das Quellobjekt nur ein einziges Objekt für die Umgrenzung verwendet. Sprich eine Schraffur in einem Kreis funktioniert tadellos, wärend eine Schraffur in der Schnittmenge zweier Kreise nicht mehr funktioniert. GetLoopAt gibt, meiner meinung nach korrekt, beide Kreise zurück. Doch AppendOuterLoop will diese dann nicht akzeptieren. Die Hilfe enthält leider nur ein einfaches Beispiel, das natürlich geht und so weiß ich auch nicht, warum AppendOuterLoop die Variable zurückweist.
Jedenfalls hier mal das Script zum selber probieren:
Sub SimpleTest()
Dim Obj As AcadEntity
Dim pp As Variant
ThisDrawing.Utility.GetEntity Obj, pp
Dim hatchSolid As AcadHatch
Dim LoopArray As Variant
'ColorHatches
'Getting Boundaries
Obj.GetLoopAt 0, LoopArray
Set hatchSolid = ThisDrawing.ModelSpace.AddHatch(acHatchPatternTypePreDefined, "SOLID", True, acHatchObject)
'hatchSolid.AssociativeHatch = True
hatchSolid.AppendOuterLoop LoopArray 'Error
hatchSolid.Evaluate
hatchSolid.Update
End Sub
Alternativ wäre es vielleicht auch möglich die bestehende Schraffur irgendwie zu klonen und dem Klon einfach Solid zuzuweisen, Versuche dahingehend sind bislang aber gescheitert.
Bin für jede Hilfe Dankbar!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP