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
Liebe Grüße
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Mo., 25.04.2005 - 16:02
Permalinkschau Dir mal bei den ArcObject oder in der Developerhelp das Thema "Create Circle Task" an.
Viele Grüße
Jörg Ostendorp
Gespeichert von Gast am Mo., 25.04.2005 - 16:56
Permalinkdas habe ich gefunden, aber was bedeutet "Use Categories to add the dll to the 'ESRI Edit Tasks' component category."?
grüße Sabine
Gespeichert von Gast am Mo., 25.04.2005 - 19:34
Permalink"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.
Gespeichert von Gast am Di., 26.04.2005 - 09:12
PermalinkLiebe Grüße Sabine
Gespeichert von Oliver am Di., 26.04.2005 - 11:06
Permalinkzur 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
Gespeichert von Gast am Di., 26.04.2005 - 11:57
Permalinkist ja doch ganz einfach.
Liebe Grüße Sabine
Gespeichert von Gast am Di., 26.04.2005 - 12:15
Permalinkist ja witzig, wo hast Du das denn ausgegraben? Finde keinerlei Doku dazu.
Viele Grüße
Jörg Ostendorp