簡體   English   中英

c# 從 3d position 獲取對象的 2d plot 點、單位向量和維度

[英]c# get object's 2d plot points from 3d position, unit vectors, and dimensions

我有 xml 數據,它是來自 3D CAD 系統的 output。
我需要獲取 xml 數據並從中構建 2d plot 點。
簡而言之,給定 3d position、單位向量和 object 的維度,我需要從平面生成 2d plot 點,在我的例子中是從立面“前”視圖和底部視圖。

我正在尋求幫助或指出正確的方向,了解如何獲取 3d 全局 position 值、單位向量和形狀尺寸,並為形狀、矩形、多邊形等生成 2d plot 點。

這是對我的整個場景的解釋,以便更好地理解它的實際應用,但我並不打算讓你們所有人為我做我的工作,只是希望得到一些指導。

3d CAD 平台用於設計房屋的結構框架。 3d 房子框架

牆內有 9 個立柱的牆體框架布局。

在此處輸入圖像描述

框架的每一塊都被設計成一個部分。
每個部分由框架容器內部的以下 xml 表示,在本例中為牆板:

在這個例子中,我們有一塊木頭(標准 2x4)
因此,我需要以某種方式從中構建 2d 點,它們代表垂直立在牆上的 2x4 立柱的立面圖。

在此處輸入圖像描述

    <panel item_id="1E1" use="WALLPANEL" type="7" quantity="1" flength="120" fheight="97.1" fthick="3.5" length="120" height="97.1" thick="3.5">
    <position>
        <x x="1.000000000000" y="0.000000000000" z="0.000000000000" />
        <y x="0.000000000000" y="0.000000000000" z="1.000000000000" />
        <z x="0.000000000000" y="-1.000000000000" z="0.000000000000" />
        <p x="60.000000000000" y="-1.750000000000" z="0.000000000000" />
    </position>
    <struct type="wall" use="EXT">
        <route>
            <line type="line">
                <start x="60.000000000000" y="0.000000000000" z="-1.750000000000" />
                <end x="-60.000000000000" y="0.000000000000" z="-1.750000000000" />
            </line>
        </route>
        <layer order="0" use="FRAMING" mater="FRAME-4">
            <top_pleq a="0.000000000000" b="0.000000000000" c="1.000000000000" d="0.000000000000" />
            <bottom_pleq a="0.000000000000" b="0.000000000000" c="-1.000000000000" d="-3.500000000000" />
            <part type="piece" item_id="A" use="STUD" sect_code="2x4 S" nom_width="  1.5000" nom_height="  3.5000" mater="LUMBER" shape="RECT" length="92.625000">
                <position>
                    <x x="1.000000000000" y="0.000000000000" z="0.000000000000" />
                    <y x="0.000000000000" y="0.000000000000" z="1.000000000000" />
                    <z x="0.000000000000" y="-1.000000000000" z="0.000000000000" />
                    <p x="52.000000000000" y="94.125000000000" z="-1.750000000000" />
                </position>

我的 2d 結果將是代表 2x4 塊的 2d 點數組。

   struct point2D {
      float x {get;set;}
      float y {get;set;
  }
  point2D[] points2d = ......etc.

並且,示例片的值將是:

112,1.5
112,95.75
113.5,95.75
113.5, 1.5

感謝大家閱讀本文並感謝您提供的任何幫助。

您需要使用正交投影將所有 3D 個點投影到所需的平面上。 結果將不清楚,因為要正確執行此操作,您需要隱藏線移除算法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM