Polygon zeichnen

Hallo Gemeinde,
müßte doch eigentlich ganz einfach sein:
Ich möchte per script über das gerade sichtbare View ein Polygon legen. Wie mach ich das? (theView.ReturnExtent ...)

Klaus
Hallo Klaus,

Auch Dir mein Sohn kann unsere Gemeinschaft sicher helfen, Du müsstest Dich nur ein wenig mehr öffnen und Dein Anliegen etwas genauer schildern ;-)

Jörg
Hallo Klaus,

So gehts's (nur ein Beispiel von mehreren Möglichkeiten) :

theView = av.getActiveDoc
theViewDisp = theView.getDisplay
theDispRect = theViewDisp.ReturnVisExtent

theRectGR = GraphicShape.Make(theDispRect)
theView.GetGraphics.UnselectAll
theRectGR.SetSelected(TRUE)
theView.GetGraphics.Add(theRectGR)

Jetzt hast du eine Graphik, die genau das sichtbare View-Display abdeckt. Die kannst du jetzt per Avenue oder Copy/Paste in ein Polygonshape umwandeln oder einfügen.

Gruß, M.
Danke Maxilla - Danke Jörg,
(nächstes Mal werde ich ausführlicher sein, oder es versuchen)
Liebe Maxilla,
meine Grafik ist dank Deiner Hilfe da -- wie mach ich jetzt daraus ein Polygon-Shape ??
Klaus
Da böten sich z.B. die XTools an:
Convert Graphics To Shapes

Gruß
J.
Am einfachsten sicherlich:
- Die Grafik markieren und Strg-C drücken
- Über View | Neues Thema... ein Polygonthema erstellen (oder ein vorhanenes Polygonthema editierbar setzen)

Strg-V drücken ... fertig

oder willst du das über Avenue machen?
Hallo Maxilla,
natürch über AVENUE. (XTools wär auch ne Möglichkeit - aber XTools hat auch so seine Macken ...)
Klaus
Ohne über die Graphik zu gehen:

theView = av.getActiveDoc
theViewDisp = theView.getDisplay
theDispRect = theViewDisp.ReturnVisExtent

theCWD = FileName.GetCWD
def = theCWD.MakeTMP("xyz", "shp")
theOutput = FileDialog.Put(def,"*.shp"," NAME")
if (theOutput = nil) then
return NIL
end

theFTab = Ftab.MakeNew(theOutput,Polygon)
theShapeFld = theFtab.FindField("Shape")

theIDfld=Field.Make("ID", #FIELD_LONG, 6, 0)

theFtab.AddFields({theIDfld})

theRecNo = theFtab.AddRecord
theShape = theDispRect.AsPolygon
theFtab.SetValue(theShapeFld, theRecNo, theShape)
theFTheme = Ftheme.Make(theFTab)
theView.AddTheme(theFTheme)
theFTheme.setVisible(TRUE)

theFTab.SetEditable(FALSE)

Ich denk das reicht an Service :o)
Jetzt kannst du dir weitere Felder mit den Koordinaten- und Ausdehnungsangaben anfügen. Macht Spaß! View-Projektionen sollten noch behandelt werden.
Vielen Dank Maxilla für den ausgezeichneten Service. Virtuelle Rose ist auf dem virtuellen Weg, mal rein virtuell gesehen ...
Klaus