In Shape umwandeln

Hallo Gemeinde,
ich habe ein in einem Thema ("Alles") Datensätze ausgewählt
Diese Datensätze will ich in ein neues Thema bringen ("Weniger"),
das geht ja ganz fein über InShapeDateiUmwandeln (View.Export)
Gibt es irgendwo ein Script, daß dies automatisch macht und dem
ich die Namen der Themen übergeben kann ?????
av.Run("GutesScrpt",{NameDesView,Ursprung-,Ziel-Thema})
Ich verzweifle hier grade daran ....
NochnKlaus
Moin again Klaus, wie wär's damit:

- Nimm das View.Export Skript und nenn es GutesScript :)
- Schreib oben:
theView = av.FindDoc("View1")
t = theView.FindTheme("Alles.shp")
def = "D:/Temp/Weniger.shp".AsFilename
- Nimm die äußere for each Schleife raus (for each und end kommentieren)
- Nimm die folgenden 2 "def"-Zeilen raus (tauchen je zwei mal im Skript auf):
def = av.GetProject.MakeFileName("theme", "shp")
def = FileDialog.Put(def, "*.shp", "Convert " + t.getName)
- Nimm die MsgBox raus, die dich fragt ob das Thema hinzugefügt werden soll

Das müsste doch schon reichen. Wenn du "GutesScript" von einem anderen Skript aus laufen lassen willst, musste die Sachen halt dort definieren und dann hier the View = Self.Get(0) usw. schreiben
Danke - aber nochn bisserl zu einfach:
Wenn ich nur die äußere For each rausnehme, meckert er wegen der CONTINUE und BREAK.
Soich die auch rausnehmen ??
NochnKlaus
Oh ja klar, aber nimm sie nicht raus sondern mach "return NIL" draus.
Sorry, happich vegessen.
Hallo Maxilla,
(ich weiß - langsam wirds lästig -pittepitte einmal noch)
ich habe geschrieben:
'View.Export
theView = av.FindDoc("SNK-Aufbereitung")
t = theView. FindTheme ("allesd_F") "das Thema heißt so
def = (_newdir+"\301_XXXXX.shp" ). AsFileName "_newDir brauch ich und ist definiert
p = false
If (t.CanExportToFtab.Not) then return Nil end
' def = av.GetProject.MakeFileName("theme", "shp")
' def = FileDialog.Put(def, "*.shp", "Umwandeln " + t.getName)
' If (def = Nil ) then return Nil end
anFTab = t.ExportToFtab(def)
If (anFTab= Nil ) then
MsgBox.Warning("Bei der Umwandlung in eine Shape-Datei ist ein Fehler aufgetreten."+NL+
"Shape-Datei wurde nicht erstellt.", "Umwandeln " + t.getName)
return Nil end
shpfld = anFTab.FindField("Shape")
else
tbl = t.GetFTab
attribVis = false
for each f in tbl.GetFields
if ((f.IsVisible) and not (f.IsTypeShape)) then
attribVis = TRUE
return Nil end
end
shapeVis = tbl.FindField("Shape").IsVisible
' if ((attribVis and shapeVis).Not) then return Nil end

MsgBox.Info("Ich kann nicht anders","Hier stehe ich")

Hier steigt er aus, denn die MsgBox wird schon nicht mehr angezeigt

NochnKlaus
Nö, lästig wird höchstens die Art der Kommunikation über blaue Briefchen... Aug in Aug wären wir bestimmt längst durch.

Also: Das break hinter attribVis = TRUE muss natürlich stehen bleiben, das ist ja in einer eigenen for each Schleife.

In diesem Abschnitt des Skriptes wird im Übrigen geprüft, ob wenigstens EIN Feld sichtbar ist. Sobald das erste sichtbare gefunden ist, wird der Suchvorgang mit "break" abgebrochen, denn EIN sichtbares Feld (plus Shapefeld) reicht für 'ne vernünftige Exporttabelle. Wenn da nun "return NIL" statt "break" steht, wird nicht die Schleife beendet, sondern das ganze Skript.

PS.: Das ist dann aber das einzige break oder continue, das bleibt...
Danke,
inzwischen nicht mehr im Byrro:
Noch zusätzlich:
Du sprachest von drei-mal-def, sind aber viere drin, welches bleibt ? (Wobei ich mir sonstwohin beißen könnte, ich hab nämlich dieses blöde View.Export {von außen, mein ich} schon mal zum laufen gebracht. z.Zt. habe ich aber wohl 1 sagenwermal Blackout)
NochnKlaus
Bei mir sähe das so aus:

'View.Export NochNKlaus
theView = av.FindDoc("SNK-Aufbereitung")
t = theView. FindTheme ("allesd_F") 'das Thema heißt so
def = (_newdir+"\301_XXXXX.shp" ).AsFileName

'for each t in theView.GetActiveThemes
p = FALSE

if (t.Is( FTHEME ).Not) then
if (t.CanExportToFtab.Not) then return NIL end

' def = av.GetProject.MakeFileName("theme", "shp")
' def = FileDialog.Put(def, "*.shp", "Convert " + t.getName)
if (def = NIL) then return NIL end
anFTab = t.ExportToFtab(def)

' For Database themes, which can return a nil FTab sometimes
if (anFTab=nil) then
MsgBox.Warning("Error occurred while converting to shapefile."+NL+
"Shapefile was not created.", "Convert " + t.getName)
return NIL
end

shpfld = anFTab.FindField("Shape")

else

tbl = t.GetFTab
attribVis = FALSE
for each f in tbl.GetFields
if ((f.IsVisible) and not (f.IsTypeShape)) then
attribVis = TRUE
break
end
end
shapeVis = tbl.FindField("Shape").IsVisible
if ((attribVis and shapeVis).Not) then
return NIL
end

' def = av.GetProject.MakeFileName("theme", "shp")
' def = FileDialog.Put(def, "*.shp", "Convert " + t.getName)
'
if (def = NIL) then return nil end

shpfld = (tbl.FindField("Shape"))
if (shpfld.IsVisible.Not) then
shpfld.SetVisible(shpfld.IsVisible.Not)
WasNotVisible = TRUE
else
WasNotVisible = FALSE
end

' see if the view is projected
thePrj = theView.GetProjection
if (thePrj.IsNull.Not) then
p = MsgBox.YesNoCancel("ArcView has detected that your view is projected."++
"Do you want the new shapefile to be saved in the projected units?",
"Convert", FALSE)
if (p = Nil) then return nil end
end

' if the user wants to project the shape, use ExportProjected
if (p) then
anFTab = tbl.ExportProjected(def, thePrj, tbl.GetSelection.Count > 0)
else
anFTab = tbl.Export(def, Shape, tbl.GetSelection.Count > 0)
end

if (anFTab.HasError) then
if (anFTab.HasLockError) then
MsgBox.Error("Unable to acquire Write Lock for file " +
def.GetBaseName,"")
else
MsgBox.Error("Unable to create " + def.GetBaseName,"")
end
return nil
end

if (WasNotVisible) then
shpfld.SetVisible(FALSE)
end

end

' build the spatial index
anFTab.CreateIndex(shpfld)

' don't add the projected shapefile to the view -
' it won't show up if you do!
if (p.Not) then
' if (MsgBox.YesNo("Add shapefile as theme to the view?",
' "Convert to Shapefile",true).Not) then return NIL end

' create a theme and add it to the View
fthm = FTheme.Make(anFTab)
theView.AddTheme(fthm)
else
MsgBox.Info("Since your view is projected, the projected data" ++
"will not be added to the view. It has been saved on disk.", "Convert")
end

' bring the View to the front
theView.GetWin.Activate
'end
Danke Maxilla,
ich bin schon ganz - jawasnu ? - es morgen im Büro auszuprobiern.
NochnKlaus
Guten Morgen in die Runde und an Maxilla, ich habs gleich ausprobiert - lief nich - rumgemacht - und draufgekommen. Er mag die Zeile
<if ((attribVis and shapeVis).Not) then
return NIL
end > ums verrecken nicht. Ich hab sie rausgenommen: FriedeFroideEierkuchen
Mein Tag ist gerettet
Danke
NochnKlaus
Na Klaus, wenn er hier aussteigt, kann das ja eigentlich nur daran liegen,dass in deinem "Alles"-Thema entweder attribvis oder shapevis oder beides false ist (oh man, was für ein Deutsch; ich meine natürlich: dass in deinem "Alles"-Thema entweder das Shape-Feld, oder die anderen Attributfelder oder alle Felder unsichtbar sind).

Nun ja, wenn's funzt...
tja, genau das wars. Ich muss vorher in diesem RiesenAlles-Shape verschiedene Felder (u.a. das Shape-Feld) wegschalten weils sonst "anwenderunfreundlich" ist, Daran knabbert man ja lange rum, bis man draufkömmt.
NB: Mit was fürn Scripteditor arbeitest Du ? Ich wollte hier das hohe Lied (apropos "Lobgesang" nochmals danke auch dafür) von UltraEdit singen; ohne den hätte ich schon lange das Handtuch geworfen...
NochnKlaus
Von UltraEdit hab ich eigentlich auch nur Gutes gehört. Da gibt's ja auch diese Extension von Mel VanderWal die dafür einen ArcView-Connect macht. Nun ja, wir haben hier TextPad (damit kann man eigentlich auch alles machen - vielleicht außer Gemüse einkochen). Schön auch SciTE (umsonst). Beide Editoren gibt's mit Avenue Syntax-Hervorhebung.
Hmm, aber wenn ich recht überlege, schreibe ich so gut wie immer im Skripteditor von ArcView...

...wir sind schon wieder off-topic
wegen OffTopic
klaus.sperlich@t-online.de