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
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
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Maxilla am Di., 21.03.2006 - 14:35
Permalink- 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
Gespeichert von Gast am Di., 21.03.2006 - 15:01
PermalinkWenn ich nur die äußere For each rausnehme, meckert er wegen der CONTINUE und BREAK.
Soich die auch rausnehmen ??
NochnKlaus
Gespeichert von Maxilla am Di., 21.03.2006 - 15:11
PermalinkSorry, happich vegessen.
Gespeichert von Gast am Di., 21.03.2006 - 15:54
Permalink(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
Gespeichert von Maxilla am Di., 21.03.2006 - 16:18
PermalinkAlso: 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...
Gespeichert von Gast am Di., 21.03.2006 - 16:58
Permalinkinzwischen 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
Gespeichert von Maxilla am Di., 21.03.2006 - 17:02
Permalink'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
Gespeichert von Gast am Di., 21.03.2006 - 21:30
Permalinkich bin schon ganz - jawasnu ? - es morgen im Büro auszuprobiern.
NochnKlaus
Gespeichert von Gast am Mi., 22.03.2006 - 07:39
Permalink<if ((attribVis and shapeVis).Not) then
return NIL
end > ums verrecken nicht. Ich hab sie rausgenommen: FriedeFroideEierkuchen
Mein Tag ist gerettet
Danke
NochnKlaus
Gespeichert von Maxilla am Mi., 22.03.2006 - 08:19
PermalinkNun ja, wenn's funzt...
Gespeichert von Gast am Mi., 22.03.2006 - 08:47
PermalinkNB: 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
Gespeichert von Maxilla am Mi., 22.03.2006 - 09:13
PermalinkHmm, aber wenn ich recht überlege, schreibe ich so gut wie immer im Skripteditor von ArcView...
...wir sind schon wieder off-topic
Gespeichert von Gast am Mi., 22.03.2006 - 10:03
Permalinkklaus.sperlich@t-online.de