Punkt-Snapping

Ich hätte nie gedacht, dass ich nach so viel Jahren mit 9.x nocheinmal eine Frage zu 3.3 stellen muss: Kann man auch bei Punktthemen das Snapping =(Einpassen) verwenden?

Es müssen Punkte auf andere Punkte bzw. Linien gesnappt werden. Aber es will nicht so recht klappen. Weder beim neu Erfassen noch beim Verschieben.

Jemand der noch im 3.3 arbeitet will mir weißmachen das das nicht gehen soll!?
Hier ist ein Skript, dass die (bereits gesetzten) Punkte eines Punktthemas auf Punkte, Polylinien oder Polygone eines anderen Themas snapt:

' SnapPoints
' Snapt Punkte eines Punktthemas an Objekte eines anderen Themas

theView = av.GetActiveDoc

if (theView.Is(View).Not) then
MsgBox.Info("Bitte von einem View aus starten!","")
return nil
end

theFThemes = List.Make
thePointThemes = List.Make
for each thm in theView.GetThemes
if (thm.is(FTheme)) then
theFThemes.Add(thm)
theVTab = thm.GetFTab
theCN = theVTab.GetShapeClass.GetClassName
if (theCN = "Point") then
thePointThemes.Add(thm)
end
end
end

theFromThm = MsgBox.List(thePointThemes,"Waehlen Sie das Punktthema, "+
"dessen Punkte Sie verschieben wollen:"," PUNKT-Themen")
if (theFromThm = NIL) then return NIL end

theFThemes.RemoveObj (theFromThm)

theToThm = MsgBox.List(theFThemes,"Waehlen Sie das Thema, an das "+
"gesnapt werden soll:"," Thema")
if (theToThm = NIL) then return NIL end

theToVTab = theToThm.GetFTab
theToCN = theToVTab.GetShapeClass.GetClassName

if (theToCN = "Point") then
thePSEString = "Vertex"
else
thePSEList = {"Vertex","Boundary","Endpoint","Intersection"}
thePSEString = MsgBox.ListAsString(thePSEList,"An was soll gesnapt werden?",
" Snapping-Typ")
if (thePSEString = NIL) then return NIL end
end

thePEnum = ("#POINT_SNAP_"+thePSEString).AsEnum

theSnapTol = MsgBox.Input("Bitte Snaptoleranz angeben:","Snaptoleranz in Map Units",
theToThm.GetSnapTolerance.AsString)
if (theSnapTol = NIL) then return NIL end

theToThm.SetSnapTolerance (theSnapTol.AsNumber)
theToThm.SetInteractiveSnapTolerance (theSnapTol.AsNumber)

theFromFTab = theFromThm.GetFTab
theBitMap = theFromFTab.GetSelection
if (theBitMap.count = 0) then theBitMap = theFromFTab end
theShpFld = theFromFTab.FindField("Shape")

theView.SetEditableTheme(theFromThm)

i = 0
for each rec in theBitMap
theShape = theFromFTab.ReturnValue(theShpFld,rec)
if(theShape.GetClass.IsSubClassOf(Point)) then
theToThm.UserSnapPoint(thePEnum,theShape)
newShape = theShape
else
theShapeList = theShape.AsList
for each aPart in theShapeList
for each aPt in aPart
theToThm.UserSnapPoint(thePEnum,aPt)
end
end
newShape = theFromFTab.GetShapeClass.Make(theShapeList)
end
theFromFTab.SetValue(theShpFld,rec,newShape)
end

theFromThm.ClearSelection
theView.Invalidate
Also geht es mit Bordmitteln doch nicht?
Solange man die Avenue-Request "anFTheme.UserSnapPoint (aRule, aPoint)" nicht als Bordmittel bezeichnen will: Nein, geht nicht.