微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c#从3d位置,单位向量和尺寸获取对象的2d绘图点

如何解决c#从3d位置,单位向量和尺寸获取对象的2d绘图点

我有从3D CAD系统输出的xml数据。
我需要获取xml数据并从中构建2d绘图点。
简而言之,给定对象的3d位置,单位矢量和尺寸,我需要从平面(在我的情况下是从立面“前”视图和底视图)生成2d绘图点。

我正在寻找帮助或为我指明正确方向,以获取3d全局位置值,单位矢量和形状尺寸以及如何为形状,矩形,多边形等生成2d绘图点。

这里是对我的整个情况的解释,目的是为了更好地理解它的实际应用,但我并不是想请大家为我做我的工作,只是希望有一个方向。

3d CAD平台用于设计房屋的结构框架。

3d house framing

其中有9个螺柱的墙的墙框架布局。

enter image description here

每个框架都被设计为一部分。
每个部分都由框架容器内的以下xml表示,在本例中为墙面板:

在此示例中,我们有一块木头(标准2x4)
因此,我需要以此方式构建2d点,它们代表垂直竖立在墙上的2x4螺柱的正视图。

enter image description here

    <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结果将是一个2d点数组,代表2x4片。

   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

感谢大家阅读本文以及您可以提供的任何帮助。

解决方法

您需要使用orthogonal projection将所有3D点投影到所需的平面上。结果尚不清楚,因为要正确执行此操作,您需要使用Hidden Line Removal算法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。