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">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.