首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#从3d位置、单位向量和尺寸获取对象的2d绘图点

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

Stack Overflow用户
提问于 2020-09-10 02:40:05
回答 1查看 85关注 0票数 0

我有从3D CAD系统输出的xml数据。

我需要获取xml数据并从中构建2d绘图点。

简而言之,给定对象的3d位置、单位向量和尺寸,我需要从平面生成2d绘图点,在我的例子中,从立面“前”视图和底视图生成2D绘图点。

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

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

利用三维CAD平台进行房屋的构造性框架设计。

具有9个立柱的墙的墙框架布局。

框架的每一块都被设计成一个零件。

每个零件都由框架容器内的以下xml表示,在本例中为墙板:

在这个例子中,我们有一块木头(标准的2x4)

因此,我需要以某种方式构建2d点,这些点表示垂直竖立在墙上的2x4立柱的立面视图。

代码语言:javascript
复制
    <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点的数组。

代码语言:javascript
复制
   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

感谢大家阅读这篇文章,并感谢您能提供的任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-09-11 15:23:55

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63817692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档