Kreisradius

Wie kann ich denn einen Kreis oder einen Kreisbogen mit einem Bestimmten Radius erzeugen? Das werkzeug "Kreis" hab ich gefunden, aber wie komm ich zu meinem Radius?

Liebe Grüße
Hallo Gast,

schau Dir mal bei den ArcObject oder in der Developerhelp das Thema "Create Circle Task" an.

Viele Grüße
Jörg Ostendorp
Dankeschön Jörg,
das habe ich gefunden, aber was bedeutet "Use Categories to add the dll to the 'ESRI Edit Tasks' component category."?

grüße Sabine
Hallo Sabine,

"Categories" ist der Kategorie-Manager von AV. Es handelt sich um eine eigene Exe irgendwo unter \ArcGIS\ArcexeXX\bin\Categries.exe.
Damit würdest Du für die dll einen zusätzlichen Eintrag in den EditTasks erzeugen können.
Ist aber ein Mißverständnis :-) Dachte eigentlich eher daran, daß Du Dir als Anregung mal den Code des Klassenmoduls näher anschauen solltest. Mit der dll selbst kannst Du nichts anfangen, die funktioniert im Prinzip genauso wie die Kreisfunktion von AV auch. ... Auch egal, der Code ist beim näheren hinsehen vielleicht doch nicht ganz so hilfreich, weil da alles auf den Editor drauf abgestimmt ist.

Verwende stattdessen vielleicht besser ein eigenes UIToolControl mit Code so etwa in der Art:

Private Sub UIToolControl1_MouseDown(ByVal button As Long, _
ByVal shift As Long, ByVal x As Long, ByVal y As Long)

On Error GoTo eh
If button <> 1 Then GoTo exitproc

Dim pdoc As IMxDocument
Dim pMxApp As IMxApplication
Dim pmap As IMap
Dim pPoint As IPoint
Dim pPolygon As IPolygon
Dim pFeature As IFeature
Dim var As Variant
Dim Radius As Double
Dim pConstCArc As IConstructCircularArc
Dim pCirculararc As ICircularArc
Dim psegmentcollection As ISegmentCollection
Dim player As ILayer
Dim pfeaturelayer As IFeatureLayer

Set pdoc = ThisDocument
Set pMxApp = Application
Set pmap = pdoc.FocusMap
Set player = pdoc.SelectedLayer

If Not TypeOf player Is IFeatureLayer Then
MsgBox "Falscher Layertyp ausgewählt ..."
GoTo exitproc
End If

Set pfeaturelayer = player

If Not pfeaturelayer.FeatureClass.ShapeType = esriGeometryPolygon Then
MsgBox "Falscher Geometrietyp ausgewählt ..."
GoTo exitproc
End If

Set pPoint = pMxApp.Display.DisplayTransformation.ToMapPoint(x, y)
var = InputBox("Bitte geben Sie den Radius ein")

If IsNull(var) Or Trim(var) = "" Then GoTo exitproc

If Not IsNumeric(var) Then
MsgBox "Falsche Eingabe... Blafasel"
GoTo exitproc
End If

Radius = CDbl(var)
Set pConstCArc = New CircularArc
pConstCArc.ConstructCircle pPoint, Radius, False
Set pCirculararc = pConstCArc


Set pPolygon = New esriCore.Polygon
Set psegmentcollection = pPolygon
psegmentcollection.AddSegment pCirculararc


Set pFeature = pfeaturelayer.FeatureClass.CreateFeature

Set pFeature.Shape = pPolygon
pFeature.Store

pdoc.ActiveView.Refresh

exitproc:
Exit Sub

eh:
'Deine Fehlerbehandlung
GoTo exitproc
End Sub


Hier mußt Du halt zunächst noch etwas provisorisch in der TOC erstmal Deinen Polygonlayer markieren, in dem die Kreise gespeichert werden sollen.
Mit dem Mousedown des Toolcontrols gibst Du sozusagen den Mittelpunkt des Kreises an, anschließend wirst Du per Inputbox nach dem Radius gefragt.
Bin mir nicht hundertprozentig sicher ob es Probleme gibt wenn Datenrahmen und Layer unterschiedliche Bezugssysteme verwenden. Müßtest Du halt mal ausprobieren und ggf. explizit festlegen.

Viele Grüße
Jörg Ostendorp

Im übrigen bin ich der Meinung, daß diese Textbox einfach zu klein ist.
Danke Jörg für deine ausführliche Hilfe, aber ich versteh nur Bahnhof. Ich weiß schon gar nicht was ein UIToolControl ist. Ich bin Anfängerin. Wie kann denn ein einfacher Vorgang das so kompliziert sein?
Liebe Grüße Sabine
Hallo Sabine,

zur Not geht es auch einfacher.

Start Editing --> advanced editing tools --> Kreis auswählen --> einmal klicken für Mittelpunkt, du kannst jetzt den Kreis aufziehen --> Strg. + r öffnet ein Eingabefeld für den Radius --> eingeben und enter.

Ich hoffe ich konnte dir weiterhelfen.

Gruß

Oli
Hey super, danke Oli!
ist ja doch ganz einfach.
Liebe Grüße Sabine
Hallo Oliver,

ist ja witzig, wo hast Du das denn ausgegraben? Finde keinerlei Doku dazu.

Viele Grüße
Jörg Ostendorp