【问题标题】:c# get object's 2d plot points from 3d position, unit vectors, and dimensionsc# 从 3d 位置、单位向量和维度获取对象的 2d 绘图点
【发布时间】:2020-12-28 05:50:37
【问题描述】:

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

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

这里是我的整个场景的解释,以便更好地理解它的实际应用,但我并不打算要求你们所有人为我做我的工作,只是希望得到一些方向。

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

墙上有 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

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

【问题讨论】:

    标签: c# 3d cad


    【解决方案1】:

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

    【讨论】:

    • 感谢您的帮助。我会考虑你的建议。
    猜你喜欢
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2012-10-10
    • 2017-10-22
    • 2014-01-10
    相关资源
    最近更新 更多