Hi
..the more you use, the more you get ..
I did some testing off looping ( BranchingFactory ) some time ago, and ran
into the problem that there is a limited number off times a feature can pass
a BranchingFactory, i think the number was around 3281 ??
NB Looping in mapping files is just so cool, I have attatched a few exampels
on how it workes, You can also experiment with thees loops to see if there
is a max number
Peter
>From: "mhabarta" <[EMAIL PROTECTED]>
>Reply-To: [email protected]
>To: [email protected]
>Subject: [fme] Endless Loop Detection, where is the limit ?
>Date: Mon, 28 Aug 2006 09:31:52 -0000
>
>Hallo
>
>The more I use looping in CUSTOM Transformers, the more I get
>error messages about "too many nested Evaluations", and a "Endless
>Loop Warning" ...
>
> > @Evaluate -- failed to evaluate expression `expr 154-1' -- too many
>nested evaluations (infinite loop?)
> > Program Terminating
> >
> > Translation FAILED.
>
>
>Anybody has an idea where there is a limit ? If it's a bug, or what
>I'm doing wrong ?
>
>Thanks Michael
>
>
>
>
>
>
>
>Join us at the FME Worldwide User Conference Sept. 21-22, 2006 Vancouver BC
>Canada. For more information, visit www.safe.com/2006uc.
>Yahoo! Groups Links
>
>
>
>
>
>
_________________________________________________________________
Opret en personlig blog og del dine billeder på MSN Spaces:
http://spaces.msn.dk
Join us at the FME Worldwide User Conference Sept. 21-22, 2006 Vancouver BC
Canada. For more information, visit www.safe.com/2006uc.
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/fme/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
/*
============================================================================
Navn : Peter Laulund, KMS
Oprettet dato : 9 februar 2006
Beskrivelse :
Problemer :
============================================================================*/
# INIT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
MAPPING_FILE_ID "Version 1.0, 9 februar 2006"
#FME_DEBUG MAPPING_FILE
# MACRO- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
DEFAULT_MACRO SourceFormat NULL
DEFAULT_MACRO DestFormat NULL
DEFAULT_MACRO SourceDataset null
DEFAULT_MACRO DestDataset null
DEFAULT_MACRO x0 100
DEFAULT_MACRO y0 100
DEFAULT_MACRO x1 500
DEFAULT_MACRO y1 200
DEFAULT_MACRO dxy 10
DEFAULT_MACRO SourceCoordSys LL-WGS84
DEFAULT_MACRO DestCoordSys $(SourceCoordSys)
DEFAULT_MACRO Dim 2D
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
READER_TYPE $(SourceFormat)
READER_KEYWORD INPUT
INPUT_DATASET "$(SourceDataset)"
WRITER_TYPE $(SourceFormat)
WRITER_KEYWORD OUTPUT
OUTPUT_DATASET "$(SourceDataset)"
#
=============================================================================
FACTORY_DEF * CreationFactory
\
FACTORY_NAME "CREATE GRID: Init Feature"
\
COORDINATE_SYSTEM $(SourceCoordSys)
\
NUMBER_TO_CREATE 1
\
OUTPUT FEATURE_TYPE toYLoop
\
@XValue( $(x0), Reset)
\
@YValue( $(y0) )
\
@SupplyAttributes(x, @XValue())
\
@Log(dhmFeature, 1, 1)
#
-----------------------------------------------------------------------------
FACTORY_DEF * TeeFactory
\
FACTORY_NAME "CREATE GRID: Y Loop Start"
\
INPUT FEATURE_TYPE toYLoop
\
OUTPUT FEATURE_TYPE toXLoop
\
OUTPUT FEATURE_TYPE toYLoop
\
@Offset(0, $(dxy))
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
FACTORY_DEF * BranchingFactory
\
FACTORY_NAME "CREATE GRID: Y Loop"
\
INPUT FEATURE_TYPE toYLoop
\
TARGET_FACTORY "CREATE GRID: Y Loop Start"
\
TEST @YValue() <= $(y1)
#
-----------------------------------------------------------------------------
FACTORY_DEF * TeeFactory
\
FACTORY_NAME "CREATE GRID: X Loop Start"
\
INPUT FEATURE_TYPE toXLoop
\
OUTPUT FEATURE_TYPE gridPoint
\
OUTPUT FEATURE_TYPE toXLoop
\
@Offset($(dxy), 0 )
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
FACTORY_DEF * BranchingFactory
\
FACTORY_NAME "CREATE GRID: X Loop"
\
INPUT FEATURE_TYPE toXLoop
\
TARGET_FACTORY "CREATE GRID: X Loop Start"
\
TEST @XValue() <= $(x1)
#
-----------------------------------------------------------------------------
INCLUDE $(FME_MF_DIR)VisData.FMI
#
=============================================================================
INPUT *
OUTPUT *
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
#
=============================================================================
set comment {
===============================================================================
Navn : Peter Laulund, KMS
Oprettet dato : 03 februar 2005 - 09:56
Beskrivelse :
=============================================================================}
#
=============================================================================
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
set tcl_precision 17
set pi [expr atan2( 1,0) * 2] ;# puts $pi
set rad2deg [expr 180 / $pi ]
set deg2rad [expr $pi / 180 ]
proc run {} {
set x0 ""; set y0 ""; set x1 ""; set y1 ""
set lst [ getGeom ]
puts "----->$lst"
set i 3
while { [incr i -1] } {
set retVal [list]
foreach {x0 y0} $lst {
if { [ string equal $x1 "" ] } {set x1 $x0 ; set y1 $y0 ; continue
}
puts "=======> $x1 $y1 $x0 $y0"
lappend retVal [getFr $x1 $y1 $x0 $y0]
set x1 $x0 ; set y1 $y0; set x0 "" ; set y0 ""
}
puts "=-=-=-> $retVal"
set $lst $retVal
}
setGeom $retVal
}
proc getFr {x0 y0 x1 y1} {
global pi deg2rad rad2deg ;# puts "$pi $deg2rad $rad2deg "
#getGeom
set da [expr $deg2rad * 60 ]
#foreach {x0 y0 x1 y1} $coorLst {}
puts [set len [expr sqrt( pow(($x1 -$x0),2) + pow(( $y1 -$y0 ),2)) /
3.0 ]]
puts [set a [expr atan2(($y1- $y0), ($x1- $x0)) ]]
set xa [expr $x0 + ($len * cos($a)) ]
set ya [expr $y0 + ($len * sin($a)) ]
set xb [expr $xa + ($len * cos(($a + $da))) ]
set yb [expr $ya + ($len * sin(($a + $da))) ]
set xc [expr $x0 + (2 * $len * cos($a)) ]
set yc [expr $y0 + (2 * $len * sin($a)) ]
# $x0 $y0
set retVal [list $xa $ya $xb $yb $xc $yc $x1 $y1 ]
return $retVal
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
proc getGeom {} {
set retVal [list]
set n [FME_Coordinates numCoords ]
for {set i 0 } {$i < $n} { incr i } {
lappend retVal [FME_Coordinates getCoord x $i ] [FME_Coordinates
getCoord y $i ]
}
return $retVal
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
proc setGeom { coorLst } {
#puts "-->[join $coorLst]<"
FME_Coordinates resetCoords
foreach {x y} [join $coorLst] {
FME_Coordinates addCoord $x $y
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
proc test {} {
set lst {a b c d e f g h i j k l}
set x0 ""; set y0 ""; set x1 ""; set y1 ""
foreach {x0 y0} $lst {
if { [ string equal $x1 "" ] } {set x1 $x0 ; set y1 $y0 ; continue }
puts "$x1 $y1 $x0 $y0"
set x1 $x0 ; set y1 $y0; set x0 "" ; set y0 ""
}
}
#test
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
#
=============================================================================
proc getFr1 {} {
global pi deg2rad rad2deg ;# puts "$pi $deg2rad $rad2deg "
#getGeom
set da [expr $deg2rad * 60 ]
set x0 [FME_Coordinates getCoord x 0 ]
set y0 [FME_Coordinates getCoord y 0 ]
set x1 [FME_Coordinates getCoord x 1 ]
set y1 [FME_Coordinates getCoord y 1 ]
set len [expr sqrt( pow(($x1 -$x0),2) + pow(( $y1 -$y0 ),2)) / 3.0 ]
set a [expr atan2(($y1- $y0), ($x1- $x0)) ]
set xa [expr $x0 + ($len * cos($a)) ]
set ya [expr $y0 + ($len * sin($a)) ]
set xb [expr $xa + ($len * cos(($a + $da))) ]
set yb [expr $ya + ($len * sin(($a + $da))) ]
set xc [expr $x0 + (2 * $len * cos($a)) ]
set yc [expr $y0 + (2 * $len * sin($a)) ]
FME_SetAttribute ID [ expr [ FME_GetAttribute ID ] + 1 ]
set retVal [list $x0 $y0 $xa $ya $xb $yb $xc $yc $x1 $y1 ]
setGeom $retVal
#getGeom
}
/*
============================================================================
Navn : Peter Laulund, KMS
Oprettet dato : 2 februar 2005
Beskrivelse :
============================================================================*/
#
=============================================================================
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
# FME_DEBUG MAPPING_FILE
READER_TYPE NULL
READER_KEYWORD INPUT
INPUT_DATASET nullin
WRITER_TYPE NULL
WRITER_KEYWORD OUTPUT
OUTPUT_DATASET nullout
Tcl2 source {$(FME_MF_DIR)frac.tcl} ;
DEFAULT_MACRO antal 3
#
=============================================================================
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
FACTORY_DEF * CreationFactory
\
FACTORY_NAME "Create Init Features"
\
2D_GEOMETRY 100 100 200 200 300 100 200 0 100 100
\
NUMBER_TO_CREATE 1
\
OUTPUT FEATURE_TYPE someFeature
\
@SupplyAttributes(ID, 1)
\
@Log("start", 1, 1)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
FACTORY_DEF * ChoppingFactory
\
FACTORY_NAME "Split til linjer"
\
INPUT FEATURE_TYPE *
\
MAX_VERTICES 2
\
CHOP_POLYGONS
\
OUTPUT CHOPPED FEATURE_TYPE arcFeature
\
@Tcl2( getFr1 )
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
FACTORY_DEF * BranchingFactory
\
FACTORY_NAME "Loop"
\
INPUT FEATURE_TYPE arcFeature
\
TARGET_FACTORY "Split til linjer"
\
TEST @Value(ID) <= $(antal)
\
OUTPUT FAILED FEATURE_TYPE *
#
-----------------------------------------------------------------------------
INCLUDE $(FME_MF_DIR)VisData.FMI
#
=============================================================================
INPUT *
OUTPUT *
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
#
=============================================================================
/*
============================================================================
Navn : Peter Laulund, KMS
Oprettet dato : 13 oktober 2004 - 14:43
Beskrivelse :
============================================================================*/
#
=============================================================================
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
DEFAULT_MACRO toViewFile VisData
#
-----------------------------------------------------------------------------
FACTORY_DEF * RecorderFactory
\
FACTORY_NAME "KMS VisData: Gem til FFS"
\
INPUT FEATURE_TYPE *
\
FEATURE_FILE "$(FME_MF_DIR_UNIX)/$(toViewFile).ffs"
\
MODE RECORD_PASS_THROUGH
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
FACTORY_DEF * CreationFactory
\
FACTORY_NAME "KMS VisData: Start FMEVIEW"
\
CREATE_AT_END
\
OUTPUT FEATURE_TYPE DropMig
\
@TCL("eval exec fmeview /ownffs $(FME_MF_DIR_UNIX)/$(toViewFile).ffs
&")
FACTORY_DEF * TeeFactory
\
FACTORY_NAME "KMS VisData: Drop startup dummy"
\
INPUT FEATURE_TYPE DropMig
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
#
=============================================================================