#!#! #! #!#! #!#! #!#! #!#! #!#! #!#! #!

Coerce extrusion to brep with faces

" POSITION="1750.02 -688.716" TOP_LEFT="1750.02 -688.716" BOTTOM_RIGHT="1749.02 -687.716" BOUNDING_RECT="1750.02 -688.716 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="11">
#!

Create surface normals

" POSITION="1847.76 -1527.52" TOP_LEFT="1847.76 -1527.52" BOTTOM_RIGHT="1846.76 -1526.52" BOUNDING_RECT="1847.76 -1527.52 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="14">
#!

Set a counter trait on each

face for unique face id

" POSITION="2587.53 -644.965" TOP_LEFT="2587.53 -644.965" BOTTOM_RIGHT="2586.53 -643.965" BOUNDING_RECT="2587.53 -644.965 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="18">
#!

Extract faces from brep

" POSITION="2587.53 -1396.89" TOP_LEFT="2587.53 -1396.89" BOTTOM_RIGHT="2586.53 -1395.89" BOUNDING_RECT="2587.53 -1396.89 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="42">
#!

Extract face id to attribute

" POSITION="3174.03 -1015.76" TOP_LEFT="3174.03 -1015.76" BOTTOM_RIGHT="3173.03 -1014.76" BOUNDING_RECT="3174.03 -1015.76 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="38">
#!

Extract polygon from face

" POSITION="3149.03 -1697.02" TOP_LEFT="3149.03 -1697.02" BOTTOM_RIGHT="3148.03 -1696.02" BOUNDING_RECT="3149.03 -1697.02 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="16">
#!

Get z normal of polygon

" POSITION="3844.66 -1018.89" TOP_LEFT="3844.66 -1018.89" BOTTOM_RIGHT="3843.66 -1017.89" BOUNDING_RECT="3844.66 -1018.89 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="21">
#!

Separate ground, roof and

wall faces by z normal value

" POSITION="3844.66 -1697.02" TOP_LEFT="3844.66 -1697.02" BOTTOM_RIGHT="3843.66 -1696.02" BOUNDING_RECT="3844.66 -1697.02 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="24">
#!

Create appearances

" POSITION="4549.05 -1018.89" TOP_LEFT="4549.05 -1018.89" BOTTOM_RIGHT="4548.05 -1017.89" BOUNDING_RECT="4549.05 -1018.89 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="22">
#!

Apply appearances by face id

" POSITION="5137.55 -651.009" TOP_LEFT="5137.55 -651.009" BOTTOM_RIGHT="5136.55 -650.009" BOUNDING_RECT="5137.55 -651.009 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="31">
#!
#! #!#! #!#!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#! #!#! #!#!
FME_PYTHON_VERSION 27 # !START_HEADER # !START_WB_HEADER READER_TYPE NULL READER_KEYWORD NULL_SOURCE NULL_SOURCE_DATASET NULL WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET NULL #!END_WB_HEADER # !START_WB_HEADER # !END_WB_HEADER # !END_HEADER LOG_FILENAME " $ (FME_MF_DIR) TextureWalls.log“LOG_APPEND没有LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE汽车FME_GEOMETRY_HANDLING增强FME_STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK 1 # -------------------------------------------------------------------------MULTI_READER_CONTINUE_ON_READER_FAILURE没有 # ------------------------------------------------------------------------- 宏WORKSPACE_NAME TextureWalls宏观FME_VIEWER_APP fmedatainspector # ------------------------------------------------------------------------- 包括(如果{[信息存在env (FME_TEMP) & &(文件isdirectory env (FME_TEMP)美元)}{set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP) == "unix"} {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:};regsub - {[ ,&]} {$( } {_} wsname WORKSPACE_NAME); set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- Tcl2 proc Creator_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO Creator_XML NOT_ACTIVATED MACRO Creator_CLASSIC NOT_ACTIVATED MACRO Creator_2D3D 2D_GEOMETRY MACRO Creator_COORDS 包括[如果{{geometry对象} == {geometry对象}} {puts {macro creator_xml *}}]包括[if {geometry对象} == {2d coordent列表}} {puts {宏creator_2d3d 2d_geometry};Puts {宏creator_classic *}}]包括[if {geometry对象】== {3d coordent列表}} {puts {宏creator_2d3d 3d_geometry};放置{macro creator_classic *}}]包括[if {geometry对象} == {2d min / max box}} {set注释{我们需要将minx尖锐的maxx maxy转换为坐标的完整多边形列表};设置splitCoords [strond [string trim { }]];if {[llength $ splitcoords]> 4} {set trimmedcoords {};foreach项目$ splastcoords {如果{$项目!= {}} {lappend trimmedcoords $ Item}};设置splitcoords $ trimmedcoords;};if {[llength $ splitcoords]!= 4} {错误{creator:坐标列表预计将是四个数字的空间分隔列表,为“minx miny maxx maxy” - ` ' 是无效的};};设置minx [Lindex $ splitCoords 0];设置Miny [Lindex $ SplitCoords 1];设置maxx [lindex $ splitcoords 2];设置maxy [lindex $ splitcoords 3];Puts“Macro Creator_coords $ minx $ miny $ minx $ maxy $ maxx $ maxy $ maxx $ miny $ minx $ miny”;放{宏creator_2d3d 2d_geometry};puts {宏creator_classic *}}] foress_def $(creator_xml)creationfactory factory_name creator_xml_creator create_at_end没有输出feature_type _____created______ @geometry(from_encoded_string, ?XML. version = 1.0 编码= US_ASCII 独立= 没有 几何学 尺寸= 2 几何学 )FACTORY_DEF $(Creator_CLASSIC)CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D)$(Creator_COORDS)CREATE_AT_END无输出FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE “_creation_instance” 输出FEATURE_TYPE Creator_CREATED @ TCL2(Creator_CoordSysRemover)@CoordSys()fme_feature_type造物主factory_def * branchingfactory factory_name“creator_created crancher -1 4”输入feature_type creator_created target_factory“$(wb_current_context)_creator_branch_target”输出传递Feature_type * @removeattributes(“creator_created brancher -1 4”.branchingfactory.count)#---a----------------------------------------------------------------------------------- Factory_def * teefactory factory_name“$(wb_current_context)_creator_branch_target”输入feature_type *输出Feature_type *#--------------------------------------------------------------------------------------- TCL2 PROC 2DBoxreplacer_isvalid {coord} {如果{[string是double -strict $ coord] == 0} {return 0} els {return 1;forigury_def * testfactory factory_name 2dboxreplacer_testminx输入feature_type creator_created test @ tcl2(“2dboxreplacer_isvalid {0}”)== 1输出失败feature_type 2dboxreplacer_ @supplyattributes(fme_reimpe_code,Invalid_parameter_min_x_value)输出传递Feature_type __totestmaxx__ factory_def * testfactory factory_name 2dboxreplacer_testmaxx输入feature_type __totestmaxx__测试@ tcl2(“2dboxreplacer_isvalid {10}”)== 1输出失败feature_type 2dboxreplacer_ @SupplyAttributes(fme_rejection_code, INVALID_PARAMETER_MAX_X_VALUE) OUTPUT PASSED FEATURE_TYPE __toTestMinY__ FACTORY_DEF * TestFactory FACTORY_NAME 2DBoxReplacer_testMinY INPUT FEATURE_TYPE __toTestMinY__ TEST @Tcl2("2DBoxReplacer_isValid {0}") == 1 OUTPUT FAILED FEATURE_TYPE 2DBoxReplacer_ @supplyattributes(fme_reimpe_code,Invalid_parameter_min_y_value)输出传递effice_type __totestmaxy__ factory_def * testfactory factory_name 2dboxreplacer_testmaxy输入feature_type __totestmaxy__测试@ tcl2(“2dboxreplacer_isvalid {10}”)== 1输出失败feature_type 2dboxreplacer_ @SupplyAttributes(fme_rejection_code,INVALID_PARAMETER_MAX_Y_VALUE)OUTPUT PASSED FEATURE_TYPE __toOutput__ FACTORY_DEF * TeeFactory FACTORY_NAME 2DBoxReplacer INPUT FEATURE_TYPE __toOutput__ OUTPUT FEATURE_TYPE 2DBoxReplacer_BOX @Dimension(2)@SupplyAttributes(___ MINX___, “0”)@SupplyAttributes(___ MAXX___, “10”)@SupplyAttributes(___ MINY___,“0”)@supplyAttributes(___ maxy___,“10”)@xvalue(@Value(___ minx ___),重置)@YValue(@Value(___ miny___))@xvalue(@Value(___ minx___))@yvalue(@Value(___ maxy___))@xvalue(@value(___ maxx___))@yvalue(@Value(___ maxy___))@xvalue(@Value(___ maxx___))@yvalue(@Value(___ miny___))@xvalue(@Value(___ minx___))@yvalue(@价值(___MINY___)) @GeometryType(fme_polygon) @RemoveAttributes(___MINX___,___MAXX___,___MINY___,___MAXY___) DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME 2DBoxReplacer_ 输入FEATURE_TYPE 2 dboxreplacer_ @Abort(ENCODED, 2DBoxReplacer . 输出 一种 拒绝了 特征。 继续 如果 特征 拒绝了 改变 工作区 范围 拒绝了 功能 处理 继续 翻译 )#------------------------------------------------------------------------如果{({垂直} == {指定})} {if {({20}> = 0)}} {puts {宏extruder_func @geometrytype(拒绝,fme_extrusion_exact, ”、“ ”、“ ”、“20”,指定)};} else {puts {MACRO Extruder_func @GeometryType(REJECTABLE, fme_extrusion_exact," ”、“ ”、“ “)};}} else {puts {emro extruder_func @geometrytype(拒绝,fme_extrusion_exact,0.0,0.0,0.0,”20“,”垂直“)};}}] foress_def * teefactory factory_name挤出机输入feature_type 2dboxreplacer_box输出Feature_type ____torejector_____ @ renomeattributes(FME_STRICT,___ ___ fme_rejection_code,fme_rejection_code)$(Extruder_func)FACTORY_DEF * TestFactory中FACTORY_NAME Extruder_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code)== “” 的Passed FEATURE_TYPE Extruder_EXTRUDED @RenameAttributes(FME_STRICT,fme_rejection_code,___ fme_rejection_code___)OUTPUT失败FEATURE_TYPE Extruder_ @removeattributes(___ fme_reimpe_code___)default_macro _wb_bypass_termination no factory_def * teefactory factory_name挤出机_ 输入FEATURE_TYPE Extruder_ 输出失败feature_type * @abort(编码,挤出机 输出 一种 拒绝了 特征。 继续 如果 特征 拒绝了 改变 工作区 范围 拒绝了 功能 处理 继续 翻译 )#--------------------------------------------------------------------- Factory_def * gqueryfactory factory_name geometrycoercer输入feature_type extruder_extruded gquery“@EvaluateExpression(FDIV,String_Encoded,for 几何学 几何学 在哪里 几何学 数数 父母::几何 = 0. 返回 数量 几何学 fme_id. GeometryCoercer)”行动COERCE_GEOMETRY参数fme_brep_solid输出结果FEATURE_TYPE GeometryCoercer_COERCED # ------------------------------------------------------------------------- 包括[设置RULES_LIST[分裂{NAN_REMOVAL % " " % "是的" % NULL_REMOVAL % " " % "是的" % CONSECUTIVE_IDENTICAL_VERTICES_2D % CONSECUTIVE_IDENTICAL_VERTICES_2D_PARAMS % "是的" % TYPE_REPAIR % TYPE_REPAIR_PARAMS % "是的" % SELF_INTERSECTING % SELF_INTERSECTING_PARAMS % "是的" % PLANAR_SURFACE % PLANAR_SURFACE_PARAMS % "是的" % SHELL_VALIDATION % SHELL_VALIDATION_PARAMS % "是的" % SOLID_VOID_REPAIR % " " % "是的" % OGC_SIMPLE_CHECK % N %”o“% OGC_VALID_CHECK % OGC_VALID_PARAMS %”没有“% MISSING_TEXTURE_COORDINATES %”“%”是的“% MISSING_VERTEX_NORMALS %”“%”是的“% AREA_ORIENTATION % ORIENTATION_CHECK_PARAMS %”是的”}{%}];set RULE_MACRO_STRING "MACRO RULE_LOOKUP ";foreach RULE_BIT $RULES_LIST {if {[string compare $RULE_BIT NAN_REMOVAL]==0}{追加RULE_MACRO_STRING " ";} elseif {[string compare $RULE_BIT NULL_REMOVAL]==0}{追加RULE_MACRO_STRING " ";} elseif {[string compare $RULE_BIT CONSECUTIVE_IDENTICAL_VERTICES_2D]==0}{追加RULE_MACRO_STRING " ";} elseif {[string compare $RULE_BIT TYPE_REPAIR]==0} {append RULE_MACRO_STRING " ";} elseif {[string compare $RULE_BIT SELF_INTERSECTING]==0}{追加RULE_MACRO_STRING " ";} elseif {[string compare $RULE_BIT MISSING_VERTEX_NORMALS]==0}{附加RULE_MACRO_STRING "MISSING_VERTEX_NORMALS "; } elseif {[string compare $RULE_BIT PLANAR_SURFACE]==0} { append RULE_MACRO_STRING " "; } elseif {[string compare $RULE_BIT SHELL_VALIDATION]==0} { append RULE_MACRO_STRING " "; } elseif {[string compare $RULE_BIT SOLID_VOID_REPAIR]==0} { append RULE_MACRO_STRING " "; } elseif {[string compare $RULE_BIT OGC_SIMPLE_CHECK]==0} { append RULE_MACRO_STRING " "; } elseif {[string compare $RULE_BIT OGC_VALID_CHECK]==0} { append RULE_MACRO_STRING " "; } elseif {[string compare $RULE_BIT MISSING_TEXTURE_COORDINATES]==0} { append RULE_MACRO_STRING " "; } elseif {[string compare $RULE_BIT AREA_ORIENTATION]==0} { append RULE_MACRO_STRING " "; }; }; puts $RULE_MACRO_STRING ] FACTORY_DEF * GeometryValidationFactory FACTORY_NAME GeometryValidator INPUT FEATURE_TYPE GeometryCoercer_COERCED ISSUES_TO_CHECK $(RULE_LOOKUP) REPAIR_MODE NO_SUMMARY PARAMS CONSECUTIVE_IDENTICAL_VERTICES_2D AUTO_REFINE NO CONSECUTIVE_IDENTICAL_VERTICES_2D CHECK_Z Planar_surface check_area. Planar_surface tolerance_mode“ “平面公差” “planar_surface angular_tolerance_mode” “Planar_surface Angular_tolerance” “TYPE_REPAIR CONNECT_Z_MODE shell_validation flip_appearance_mode. self_intersecting connect_z_mode. Area_orientation Aread_orientation. OGC_VALID_CHECK OGC_VERSION FEATURE_TYPE geometryvalidator_modified # ------------------------------------------------------------------------- Tcl2 proc GeometryPropertySetter_8acb63fe_4131_4a06_9ae2_8f6bf16e918b12_createDomain {in_domainName} {set domainName $in_domainName;if {{Global} != {Global}} {set xFormName [FME_EncodeText {GeometryPropertySetter_}];设置域名xFormName美元域名;};返回$域名;} INCLUDE [set macroLine "MACRO GeometryPropertySetter_SRC_ATTRS_EXP ";把macroLine美元;* TestFactory FACTORY_DEF * TestFactory FACTORY_NAME GeometryPropertySetter_Tester INPUT FEATURE_TYPE geometryvalidator_repair INPUT FEATURE_TYPE GeometryValidator_PASSED TEST "0" TYPE NUM ENCODED TEST YES != YES BOOLEAN_OPERATOR OR OUTPUT FAILED fme_reimpe_code“Invalid_parameter_count_start”输出传递feature_type geometrypropertysetter__togquerypropertysetter_def * gqueryfactory factory_name geometrypropertysetter_gquery输入feature_type geometrypropertysetter_togquery_gopertysetter__togquery_goperyetter_togquery__ gquery“@EvaluateExpression(FDIV,String_Encoded,for 几何学 几何学 在哪里 几何学 fme_geometry_type = IFMEFace 返回 数量 几何学 fme_id. ,GeometryPropertySetter)“动作set_traits参数fme_count是”_count“@ tcl2(”geometrypropertysetter_8acb63fe_4131_4a06_9ae2_8f6bf16e918b12_createdomain {counter}“)”0“全局输出结果Feature_type geometrypropertysetter____removeattrs___ factory_def TeeFactory FACTORY_NAME GeometryPropertySetter_AttrRemover输入FEATURE_TYPE GeometryPropertySetter___RemoveAttrs___输出FEATURE_TYPE * @RemoveAttributes (fme_encoded (GeometryPropertySetter_SRC_ATTRS_EXP)美元)FACTORY_DEF * TeeFactory FACTORY_NAME GeometryPropertySetter_Outputter输入FEATURE_TYPE GeometryPropertySetter___RemoveAttrs___输出features _type GeometryPropertySetter_SET_1_uexnGEGQ8iM= DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME "GeometryPropertySetter SET Splitter" INPUT features _type GeometryPropertySetter_SET_0_dxwAEWl/fkw= OUTPUTFACTORY_NAME GeometryPropertySetter_ 输入feature_type geometrypropertysetter_ @Abort(ENCODED, GeometryPropertySetter 输出 一种 拒绝了 特征。 继续 如果 特征 拒绝了 改变 工作区 范围 拒绝了 功能 处理 继续 翻译 ) # ------------------------------------------------------------------------- FACTORY_DEF * GQueryFactory FACTORY_NAME GeometryPartExtractor_2_GQuery输入FEATURE_TYPE GeometryPropertySetter_SET_0_dxwAEWl / fkw = GQUERY“@EvaluateExpression (FDIV STRING_ENCODED, 几何学 几何学 在哪里 几何学 fme_geometry_type = IFMEFace 返回 数量 几何学 fme_id. GeometryPartExtractor_2)”行动EXTRACT_PART输出结果FEATURE_TYPE GeometryPartExtractor_2_PROCESSED # ------------------------------------------------------------------------- DEFAULT_MACRO GeometryPropertyExtractor_PARAMETER包括(如果{{没有}= ={是的}}{{宏GeometryPropertyExtractor_ACTION行动EXTRACT_TRAITS_PREFIXED};} else {puts {MACRO GeometryPropertyExtractor_ACTION ACTION EXTRACT_TRAITS};};if {{EXTRACT_TRAITS} == {EXTRACT_GEOMNAME}} {} else {puts {MACRO GeometryPropertyExtractor_PARAMETER PARAMETER _count,No};};] FACTORY_DEF * GQueryFactory FACTORY_NAME GeometryPropertyExtractor_GQuery输入FEATURE_TYPE GeometryPartExtractor_2_PROCESSED ROUTE_UNMATCHED_FEATURES是的(GeometryPropertyExtractor_ACTION) (GeometryPropertyExtractor_PARAMETER)输出美元触及FEATURE_TYPE GeometryPropertyExtractor_UNTOUCHED fme_rejection_code MISSING_GEOMETRY_PROPERTY输出RESULT FEATURE_TYPE GeometryPropertyExtractor_EXTRACTED DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME GeometryPropertyExtractor_ 输入feature_type geometrypropertyextractor_untouched输出失败feature_type * @abort(编码,几何前伸出xtractor 输出 一种 拒绝了 特征。 继续 如果 特征 拒绝了 改变 工作区 范围 拒绝了 功能 处理 继续 翻译 )#--------------------------------------------------------------------- Factory_def * gqueryfactory factory_name geometrypartextractor_gquery输入feature_type geometrypropertyextractor_extracted gquery“@evaluateExpression(FDIV,String_Encoded,for 几何学 几何学 在哪里 几何学 fme_geometry_type = IFMEPolygon 返回 数量 几何学 fme_id. ,GeometryPartextractor)“动作摘录输出结果Feature_type geometrypartextractor_processed#----------------------------------------------------------------包括[if {({vertex} == {point})} {PUTS {宏MEARIONEXTRACTOR_GETMEASUSURESFUNC @Geometry(get_measures,point,“fme_vertex_normal_z”)};} elsef {({vertex} == {line})} {puts {宏measureextractor_getmeasuresfunc @geometry(get_measures,line,“ {}“,”fme_vertex_normal_z“)};};};} elsef {({vertex} == {arc})} {puts {宏measureextractor_getmeasuresfunc @geometry(get_measures,arc, ,“fme_vertex_normal_z”)};elsef {({vertex} == {sea})} {puts {宏metereeextractor_getmeasuresfunc @geometry(get_measures,seab,' {}“,”fme_vertex_normal_z“)};};};} elsef {({vertex} == {vertex})} {puts {宏measureextractor_getmeasuresfunc @geometry(get_measures,顶点,”0“,”_ ronom_z“,”fme_vertex_normal_z“)};}] FACTORY_DEF * TeeFactory FACTORY_NAME MeasureExtractor INPUT FEATURE_TYPE GeometryPartExtractor_PROCESSED输出FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___ ___ fme_rejection_code,fme_rejection_code)$(MeasureExtractor_getMeasuresFunc)FACTORY_DEF * TestFactory中FACTORY_NAME MeasureExtractor_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code)!= “” 的Passed FEATURE_TYPE MeasureExtractor_ @removeattributes(___ fme_reimpe_code_code___)输出失败feature_type measureelextractor_output @conameattributes(fme_strict,fme_reimpting_code___)default_macro _wb_bypass_termination no factory_def * teefactory factory_name measureextractor_ 输入feature_type measureeextractor_ 输出失败feature_type * @abort(编码,MeasureExtractor 输出 一种 拒绝了 特征。 继续 如果 特征 拒绝了 改变 工作区 范围 拒绝了 功能 处理 继续 翻译 )#-----------------------------------------------------------------------string_encoded, 价值 _normal_z. ,testfilter)<0编码boolean_operator或composite_test_expr 输出传递Feature_type testfilter_grount输出失败Feature_type testfilter_testfilterInputLine_1 factory_def * testfactory factory_name testfilter_testfactory_1输入feature_type testfilter_testfilterInputLine_1测试@EvaluateExpression(FDIV,String_Encoded, 价值 _normal_z. ,testfilter)> 0编码boolean_operator或composite_test_expr 输出传递Feature_type testfilter_roof输出失败feature_type testfilter_testfilterInputLine_2 factory_def * teefactory factory_name testfilter_wall输入feature_type testfilter_testfilterinputline_2输出feature_type testfilter_wall#---a------------------------------------------------------------------ tcl2 proc keginestyler_3_warning {} {global出现kn_warned;Incl Skakancestyler_3_warned;如果{$ spearancestyler_3_warned <= 1} {fme_logmessage fme_warn \“spearancestyler_3:找到不支持的几何图形。删除来自feature \的所有不受支持的几何形状。};} FACTORY_DEF * TestFactory中FACTORY_NAME AppearanceStyler_3_GeometryFilter INPUT FEATURE_TYPE TestFilter_Wall TEST&fme_type == “fme_raster” TEST&fme_type == “fme_no_geom” BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE AppearanceStyler_3___ValidGeometry___ OUTPUT FAILED FEATURE_TYPE AppearanceStyler_3___InvalidGeometry___ @RemoveGeometry()@ TCL2( “AppearanceStyler_3_Warning”)FACTORY_DEF * TeeFactory FACTORY_NAME AppearanceStyler_3 INPUTFEATURE_TYPE AppearanceStyler_3___ValidGeometry___ INPUT FEATURE_TYPE AppearanceStyler_3___InvalidGeometry___ OUTPUT FEATURE_TYPE AppearanceStyler_3_OUTPUT fme_appearance_style_name “墙” fme_appearance_style_diffuse_color “0.333333,1,0” fme_appearance_style_ambient_color “” fme_appearance_style_specular_color “” fme_appearance_style_emissive_color “” fme_appearance_style_alpha “1.0” fme_appearance_style_shininess “” fme_texture_style_u_offset “0.0” fme_texture_style_v_offset “0.0” fme_texture_style_center_u “0.0” fme_texture_style_center_v“0.0“fme_texture_style_u_sca.ling_factor“1.0”fme_texture_style_v_scaling_factor“1.0”fme_texture_style_u_shearing_factor“0.0”fme_texture_actyle_v_shearing_factors“0.0”fme_texture_style_rotation_angle“0.0”fme_texture_style_wrap“repem_both”#-------------------------------------------------------------------------SkenancestyLer_2_warning {} {global spearancestyler_2_warned;Incl SkeaCestyler_2_Warned; if { $AppearanceStyler_2_Warned <= 1 } { FME_LogMessage fme_warn \"AppearanceStyler_2: Unsupported geometry found. Removing all unsupported geometry from feature\"; }; } FACTORY_DEF * TestFactory FACTORY_NAME AppearanceStyler_2_GeometryFilter INPUT FEATURE_TYPE TestFilter_Roof TEST &fme_type == "fme_raster" TEST &fme_type == "fme_no_geom" BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE AppearanceStyler_2___ValidGeometry___ OUTPUT FAILED FEATURE_TYPE AppearanceStyler_2___InvalidGeometry___ @RemoveGeometry() @Tcl2("AppearanceStyler_2_Warning") FACTORY_DEF * TeeFactory FACTORY_NAME AppearanceStyler_2 INPUT FEATURE_TYPE AppearanceStyler_2___ValidGeometry___ INPUT FEATURE_TYPE AppearanceStyler_2___InvalidGeometry___ OUTPUT FEATURE_TYPE AppearanceStyler_2_OUTPUT fme_appearance_style_name "Roof" fme_appearance_style_diffuse_color "0,0.666667,1" fme_appearance_style_ambient_color "" fme_appearance_style_specular_color "" fme_appearance_style_emissive_color "" fme_appearance_style_alpha "1.0" fme_appearance_style_shininess "" fme_texture_style_u_offset "0.0" fme_texture_style_v_offset "0.0" fme_texture_style_center_u "0.0" fme_texture_style_center_v "0.0" fme_texture_style_u_scaling_factor "1.0" fme_texture_style_v_scaling_factor "1.0" fme_texture_style_u_shearing_factor "0.0" fme_texture_style_v_shearing_factor "0.0" fme_texture_style_rotation_angle "0.0" fme_texture_style_wrap "REPEAT_BOTH" # ------------------------------------------------------------------------- Tcl2 proc AppearanceStyler_Warning {} { global AppearanceStyler_Warned; incr AppearanceStyler_Warned; if { $AppearanceStyler_Warned <= 1 } { FME_LogMessage fme_warn \"AppearanceStyler: Unsupported geometry found. Removing all unsupported geometry from feature\"; }; } FACTORY_DEF * TestFactory FACTORY_NAME AppearanceStyler_GeometryFilter INPUT FEATURE_TYPE TestFilter_Ground TEST &fme_type == "fme_raster" TEST &fme_type == "fme_no_geom" BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE AppearanceStyler___ValidGeometry___ OUTPUT FAILED FEATURE_TYPE AppearanceStyler___InvalidGeometry___ @RemoveGeometry() @Tcl2("AppearanceStyler_Warning") FACTORY_DEF * TeeFactory FACTORY_NAME AppearanceStyler INPUT FEATURE_TYPE AppearanceStyler___ValidGeometry___ INPUT FEATURE_TYPE AppearanceStyler___InvalidGeometry___ OUTPUT FEATURE_TYPE AppearanceStyler_OUTPUT fme_appearance_style_name "Ground" fme_appearance_style_diffuse_color "1,0,0" fme_appearance_style_ambient_color "" fme_appearance_style_specular_color "" fme_appearance_style_emissive_color "" fme_appearance_style_alpha "1.0" fme_appearance_style_shininess "" fme_texture_style_u_offset "0.0" fme_texture_style_v_offset "0.0" fme_texture_style_center_u "0.0" fme_texture_style_center_v "0.0" fme_texture_style_u_scaling_factor "1.0" fme_texture_style_v_scaling_factor "1.0" fme_texture_style_u_shearing_factor "0.0" fme_texture_style_v_shearing_factor "0.0" fme_texture_style_rotation_angle "0.0" fme_texture_style_wrap "REPEAT_BOTH" # ------------------------------------------------------------------------- INCLUDE [ set listOrSingle {@Value(___myNewAppearance)}; if { ( {_count_count} != {} ) } { set listOrSingle fme_join_from_trait }; puts "MACRO LIST_OR_SINGLE $listOrSingle"; ] INCLUDE [if { ("BOTH" == "BOTH") } { puts "MACRO APPEARANCE_IDS $(LIST_OR_SINGLE) $(LIST_OR_SINGLE)"; } elseif { ("BOTH" == "FRONT") } { puts "MACRO APPEARANCE_IDS $(LIST_OR_SINGLE) fme_do_not_set"; } else { puts "MACRO APPEARANCE_IDS fme_do_not_set $(LIST_OR_SINGLE)"; } ] FACTORY_DEF * SortFactory FACTORY_NAME AppearanceSetter_HOLDER INPUT FEATURE_TYPE AppearanceSetter__DUMMY__ FACTORY_DEF * CreationFactory FACTORY_NAME AppearanceSetter_ColorStyle_Creator CREATE_AT_END NO OUTPUT FEATURE_TYPE AppearanceSetter_____CREATED_COLORSTYLE______ FACTORY_DEF * TeeFactory FACTORY_NAME AppearanceSetter_Apply_ColorStyle INPUT FEATURE_TYPE AppearanceSetter_____CREATED_COLORSTYLE______ OUTPUT FEATURE_TYPE AppearanceSetter_____OVERWRITE_APPEARANCE______ fme_appearance_style_name "" fme_appearance_style_diffuse_color "" fme_appearance_style_ambient_color "" fme_appearance_style_specular_color "" fme_appearance_style_emissive_color "" fme_appearance_style_alpha "" fme_appearance_style_shininess "" fme_texture_style_u_offset "" fme_texture_style_v_offset "" fme_texture_style_center_u "" fme_texture_style_center_v "" fme_texture_style_u_scaling_factor "" fme_texture_style_v_scaling_factor "" fme_texture_style_u_shearing_factor "" fme_texture_style_v_shearing_factor "" fme_texture_style_rotation_angle "" __fme_temp_overwrite_appearance_info yes # We're going to say "front side" here, as all we want is the attribute back. FACTORY_DEF * SharedObjectFactory FACTORY_NAME AppearanceSetter_AddRefs INPUT DEFINITION_FRONT FEATURE_TYPE AppearanceSetter_____OVERWRITE_APPEARANCE______ INPUT DEFINITION_FRONT FEATURE_TYPE AppearanceStyler_OUTPUT INPUT DEFINITION_FRONT FEATURE_TYPE AppearanceStyler_2_OUTPUT INPUT DEFINITION_FRONT FEATURE_TYPE AppearanceStyler_3_OUTPUT INPUT REFERENCER FEATURE_TYPE GeometryPropertySetter_SET_1_uexnGEGQ8iM= MODE ADD DEFINITION_ID_ATTR _count SHARED_OBJECT_TYPE APPEARANCE ADD_AS_ATTR_FRONT ___myNewAppearance RECURSIVE NO OUTPUT INVALID_GEOMETRY FEATURE_TYPE AppearanceSetter_OUTPUT OUTPUT SUCCESSFUL FEATURE_TYPE AppearanceSetter___touOriginOffsetRejector___ OUTPUT EXTRA_DEFINITION FEATURE_TYPE AppearanceSetter_ fme_reimpe_code extra_appearance_feature输出invalid_definition feature_type alpositsetter_ fme_reimpe_code invalid_appearance_geometry_type factory_def * testfactory factory_name alposencesetter_uoriginoffsetrector or inpute_type ketanceetter____touoriginoffsetrejector____测试“0.0”型号编码输出失败feature_type ketsister_ fme_reimpe_code“Invalid_parameter_u_origin_offset”输出传递Feature_type alportsetter____forth_def * testfactory factory_name keeptoringter_voriginoffsetrejector ___tovoriginoffsetreptor____ test“0.0”型号Num编码输出失败Feature_type kething输出失败 fme_rejection_code“INVALID_PARAMETER_V_ORIGIN_OFFSET”输出通过FEATURE_TYPE AppearanceSetter___toTextureuRepeatFactorRejector___ FACTORY_DEF * TestFactory FACTORY_NAME AppearanceSetter__textureuRepeatFactorRejector__输入FEATURE_TYPE AppearanceSetter___toTextureuRepeatFactorRejector___测试“1.0”类型NUM失败FEATURE_TYPE编码输出AppearanceSetter_ fme_reimpe_code“Invalid_parameter_texture_u_repeat_factor”输出传递Feature_type alportstter___totexturevrepeatfactorrejector_____ factory_def * testfactory factory_name ketter___texturevrepeatfactorrector____totexturevrepeatfactorrejector____ test“1.0”类型num编码输出失败Feature_type kethine_ttepeptore_type alportster_ fme_reimpe_code“无效_parameter_texture_v_repeat_factor”输出传递Feature_type alportsetter____taggedgeoms____ factory_def * gqueryfactory factory_name ketanceetter_gquery输入feature_type neuctsetter____taggedgeomoor_____taggedgeoms___ gquery“@evaluateExpression(fdiv,string_encoded,for 几何学 几何学 在哪里 几何学 fme_geometry_type = IFMEFace 返回 数量 几何学 fme_id. ,AppearanceSetter)” ROUTE_UNMATCHED_FEATURES YES ACTION SET_APPEARANCE参数$(APPEARANCE_IDS)NO SURFACE_NORMAL “1.0” “1.0” “0.0” “0.0” 否CREATE ___myNewAppearance _count输出结果FEATURE_TYPE AppearanceSetter_OUTPUT @RemoveAttributes(fme_regexp_match,^ ___ myNewAppearance。* $)OUTPUT UNTOUCHED FEATURE_TYPE AppearanceSetter_ @RemoveAttributes(fme_regexp_match,^ __mynewappearance .*$) fme_rejection_code INVALID_GEOMETRY_GEOMETRY_TYPE DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME外观 输入feature_type alportsetter_ 输出失败feature_type * @abort(编码,看起来 输出 一种 拒绝了 特征。 继续 如果 特征 拒绝了 改变 工作区 范围 拒绝了 功能 处理 继续 翻译 )#--------------------------------------------------------------------- #--#假设是研发和创建的工作空间TEMP DIR。请参阅controledefs.cpp - controlyefs :: writevisualizertempdir default_macro workspace_temp_dir包括[设置grpbyattrs {};如果{[字符串长度$ grpbyatts]> 0} {if {[字符串首先“@evaluateExpression”$ grpbyattrs“== 0} {puts”宏Catmac _ $ grpbyattrs“;}否则{set catter“”;设置逗号“”;foreach attr $ grpbyattrs {set catter“$ catter $ coma $ @ value(\ attr attr \”)“设置逗号“,_,”;};把“宏Catmac _ @ concatenate($ catter)”; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {GeometryPartExtractor_Processed} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] # Make the temporary directory that the FFS files will live in. FACTORY_DEF * CreationFactory FACTORY_NAME GeometryPartExtractor_Processed_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME GeometryPartExtractor_Processed_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ # Send raster, point cloud and vector features down different paths to prepare # them for viewing FACTORY_DEF * TestFactory FACTORY_NAME GeometryPartExtractor_Processed_FeatureDirector INPUT FEATURE_TYPE AppearanceSetter_OUTPUT TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE GeometryPartExtractor_Processed___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE GeometryPartExtractor_Processed___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME GeometryPartExtractor_Processed___FeatureDirector1 INPUT FEATURE_TYPE GeometryPartExtractor_Processed___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE GeometryPartExtractor_Processed___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE GeometryPartExtractor_Processed___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME GeometryPartExtractor_Processed_VectorSetterUpper INPUT FEATURE_TYPE GeometryPartExtractor_Processed___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ # Point Cloud Features Might Need to be thinned # Note that we don't call the ThinPointCloud function directly, but rather # do it through TCL. This should allow this transformer to be used with a # Desktop license, even though ThinPointCloud requires Professional. Tcl2 proc GeometryPartExtractor_Processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elsef {[string等于{no_thinning} {maxnumpoints}]} {fme_execute thinpointcloud no_thinning“\” \ ";} elseif {[string equal {no_间伐}{FIRSTNPOINTS}]} {FME_Execute ThinPointCloud no_间伐"\" \ ";} elsef {[string等于{no_thinning} {lastnpoints}]} {fme_execute thinpointcloud no_thinning“\” \ ";};} FACTORY_DEF * TeeFactory FACTORY_NAME geometrypartextractor_procesed_pointcloudthinner INPUT FEATURE_TYPE geometrypartextractor_procesed_pointcloudfeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("GeometryPartExtractor_Processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_thinPointCloud") Tcl2 proc几何partextractor_processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_prepareeraster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{!$useDI} {FME_Execute ApplyRasterRotation双线性;};set doResample [string equal {NoReduction} {Resample}];set do子集[string equal {noreduce}{子集}];set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME GeometryPartExtractor_Processed_RasterSetterUpper INPUT FEATURE_TYPE GeometryPartExtractor_Processed___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("GeometryPartExtractor_Processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_prepareRaster { } { } { } { }“)#现在将所有功能集成在录像机,改变他们#功能类型变压器的名字,让他们查看很好#GeometryPartExtractor_Processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_VIS_FEAT_TYPE改变所显现的特征要素类型#。DEFAULT_MACRO GeometryPartExtractor_Processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_VIS_FEAT_TYPE GeometryPartExtractor_Processed $(CATMAC)DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(workspace_temp_dir)/ $亚搏在线(safe_ffs_name).ffs default_macro visualizer_create_spatial_index no#[pr#45549]数据检查器将限制它在Win32上读取的最大功能数量,因此我们将相应地限制我们在此处录制的#功能数量max_features_to_record指令。factory_def * recorderfactory factory_name geometrypartextractor_processed_recorder输入feature_type __viewme__ _wb_termination_feature是@featureType(terminator_ @值(_wb_termination_xformer))输入feature_type __viewme__ @featuretypE($(GeometryPartExtractor_Processed_e8e7b5e3_96d4_49a5_a0a2_f4f0f72473ed9_VIS_FEAT_TYPE))FEATURE_FILE “$(VISUALIZER_FEATURE_FILE)” CREATE_SPATIAL_INDEX “$(VISUALIZER_CREATE_SPATIAL_INDEX)” 检查员 “$(VISUALIZER_CREATE_SPATIAL_INDEX)” FSC_SCHEMA _creation_instance,VARCHAR 255. Mode Record Store_scanned_metadata record_directly_to_disk是max_features_to_record win32 2000000#------------------------------------------------------------------------------------------------------ - Factory_def * routingFactory factory_name“目标要素类型路由相关器”command_parm_evalization single_pare输入feature_type * feature_type_attribute __wb_out_feat_type___输出路由功能_type *输出not_routed feature_type __nuke_me__ @ tcl2(“fme_statmessage 818059 [fme_getattribute fme_template_feature_feature_feature_type] 818060 818061 fme_warn”)#---------------------------------------------------------------- Factory_def * teefactoryfactory_name“最终输出nuker”输入feature_type __nuke_me__#-------------------------------------------------------------------------------- Factory_def * creationfactory create_at_end输出feature_type __nukeme__ @tcl(“如果[文件存在{$(workspace_temp_dir)}] {set文件[glob -nocomplin -directory {$(workspace_temp_dir)} -tails * .ffs];如果{[llength $ files]== 1} {set thefile {$(workspace_temp_dir)/};附加到文件[Lindex $文件0];eval fme_execute system \ 173 \ 042 $(fme_home_unix)/ fmedatainspector \ 042 --visualizer --single-application --delete-on-close --no-source-prompt -f ffs $ thefile&\ 175;} elsef {[llength $ files] == 0} {catch {file delest -force {$(workspace_temp_dir)};} else {set filesnoext {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__