{"id":9925,"date":"2026-08-21T15:50:29","date_gmt":"2026-08-21T07:50:29","guid":{"rendered":"http:\/\/pipingpig.com\/index.php\/2026\/08\/21\/s3d%ef%bc%8cfeatrue%e6%b5%81%e5%90%91%e5%88%a4%e6%96%ad%ef%bc%88%e7%ac%ac%e4%b8%89%e8%8a%82%ef%bc%89\/"},"modified":"2026-08-21T15:50:29","modified_gmt":"2026-08-21T07:50:29","slug":"s3d%ef%bc%8cfeatrue%e6%b5%81%e5%90%91%e5%88%a4%e6%96%ad%ef%bc%88%e7%ac%ac%e4%b8%89%e8%8a%82%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.pipingpig.com\/2026\/08\/21\/s3d%ef%bc%8cfeatrue%e6%b5%81%e5%90%91%e5%88%a4%e6%96%ad%ef%bc%88%e7%ac%ac%e4%b8%89%e8%8a%82%ef%bc%89\/","title":{"rendered":"S3D\uff0cFeatrue\u6d41\u5411\u5224\u65ad\uff08\u7b2c\u4e09\u8282\uff09"},"content":{"rendered":"<p>\u5173\u952e\u8bcd\uff1a Featrue\uff0c Vector\uff0c Flow\uff0c IsTopologicalDirectionNormal \u524d\u8a00\uff1a\u6ca1\u6709\u60f3\u5230Featrue\u6d41\u5411\u5224\u65ad\uff0c\u4f1a\u6709\u7b2c\u4e09\u4e2a\u5c0f\u8282\uff0c\u770b\u5230\u86ee\u591a\u4f19\u4f34\u6709\u53c2\u4e0e\u5230\u8fd9\u4e2a\u95ee\u9898\u7684\u6d4b\u8bd5\u548c\u8ba8\u8bba\u73af\u8282\uff0c\u6c14\u6c1b\u5f88\u68d2\u3002 \u5c0f\u7ed3\uff1a\u589e\u52a0 IsTopologicalDirectionNormal \u5c5e\u6027\u7684\u5224\u65ad\u3002\u73b0\u5728\u7a0b\u5e8f\u8fd0\u884c\u903b\u8f91\u66f4\u52a0\u5065\u58ee\u5408\u7406\u3002 public Vector DisplayFeatureFlow (RouteFeature routeFeature) { ReadOnlyCollection&lt;BusinessObject&gt; legFeatrues = null ; PipeRun cePiperun = routeFeature.SystemParent as PipeRun; List&lt;BusinessObject&gt; legFeatruesList = new List &lt;BusinessObject&gt;(); int ceFeatureIndex = 0 ; if (routeFeature.Legs.Count &gt; 0 ) { \/\/\u901a\u8fc7Featrue\u53d6Leg legFeatrues = routeFeature.Legs[ 0 ].GetRelationship( &quot;AlongLeg&quot; , &quot;theIJRtePathFeat&quot; ).TargetObjects; legFeatruesList = legFeatrues.ToList(); \/\/\u83b7\u53d6\u5173\u7cfb BusinessObject for_get_IsTopologicalDirectionNormal_property = routeFeature.GetRelationship( &quot;AlongLeg&quot; , &quot;theIJRtePathLeg&quot; ).TargetObjects[ 0 ]; \/\/\u83b7\u53d6\u5c5e\u6027 IsTopologicalDirectionNormal_property = for_get_IsTopologicalDirectionNormal_property.GetPropertyValue( &quot;IJRtePathLeg&quot; , &quot;IsTopologicalDirectionNormal&quot; ) as PropertyValueBoolean; } if (legFeatruesList.Count &gt; 0 ) { if (cePiperun.FlowDirection != 1 &amp;&amp; cePiperun.FlowDirection != 2 ) { \/\/ \u9664\u4e86IN\u548cOUT\u6d41\u5411 System.Windows.Forms.MessageBox.Show( &quot;Flow No Require&quot; ); return null ; } \/\/\u5224\u65ad\u62d3\u6251\u903b\u8f91\uff08\u4e0e6\u670813\u5206\u4eab\u6bd4\u8f83\uff0c\u65b0\u589eIf\u5224\u65ad\u903b\u8f91\uff09 if (IsTopologicalDirectionNormal_property.PropValue == false ) { legFeatruesList.Reverse(); } \/\/ \u5224\u65ad\u6d41\u5411OUT-1 if (cePiperun.FlowDirection == 1 ) { \/\/ OUT&#8212;&gt;\u53cd\u8f6c\u96c6\u5408 legFeatruesList.Reverse(); ceFeatureIndex = legFeatruesList.IndexOf(routeFeature); } \/\/ \u5224\u65ad\u6d41\u5411IN-2 else if (cePiperun.FlowDirection == 2 ) { \/\/ IN\u65e0\u9700\u8c03\u6574\u6d41\u5411 ceFeatureIndex = legFeatruesList.IndexOf(routeFeature); } foreach ( var item in legFeatruesList) { \/\/ \u9ad8\u4eae if (legFeatruesList.IndexOf(item) == ceFeatureIndex &#8211; 1 ) { ceHiliterYellowIn.HilitedObjects.Add(item); Thread.Sleep( 50 ); } if (legFeatruesList.IndexOf(item) == ceFeatureIndex + 1 ) { ceHiliterBlueOut.HilitedObjects.Add(item); Thread.Sleep( 50 ); } } } \/\/ \u4ee5\u4e0b\u83b7\u53d6Vector\uff0c\u6d41\u5411\u83b7\u5f97\u5411\u91cf int lastKey = legFeatruesList.Count &#8211; 1 ; Position positionOrigin = ((RouteFeature)legFeatruesList[ 0 ]).Location; Position positionDestination = ((RouteFeature)legFeatruesList[lastKey]).Location; Vector vector = positionDestination.Subtract(positionOrigin); return vector; }<\/p>\n<p><video controls preload=\"metadata\" style=\"width:100%;max-width:860px;border-radius:8px\" src=\"https:\/\/www.pipingpig.com\/wp-content\/uploads\/2026\/08\/ersrc_v\/50_S3D\uff0cFeatrue\u6d41\u5411\u5224\u65ad\uff08\u7b2c\u4e09\u8282\uff09.mp4\"><\/video><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5173\u952e\u8bcd\uff1a Featrue\uff0c Vector\uff0c Flow\uff0c IsTopologicalDirectionNorma [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9924,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[28],"tags":[],"class_list":["post-9925","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/posts\/9925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/comments?post=9925"}],"version-history":[{"count":0,"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/posts\/9925\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/media\/9924"}],"wp:attachment":[{"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/media?parent=9925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/categories?post=9925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pipingpig.com\/wp-json\/wp\/v2\/tags?post=9925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}