首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#与WPF中的ModelVisual3D对象交互

C#与WPF中的ModelVisual3D对象交互
EN

Stack Overflow用户
提问于 2016-05-25 22:05:47
回答 1查看 1.8K关注 0票数 0

嘿,我正在使用一个WPF3D场景,并成功地将一些.stl模型加载到其中。我基本上是使用一种方法来选择和取消选择这些对象,基于鼠标在窗口中的位置:

代码语言:javascript
复制
 private void UIElement_OnMouseDown(object sender, MouseButtonEventArgs e)
        {
            var viewport = (HelixViewport3D)sender;
            var firstHit = viewport.Viewport.FindHits(e.GetPosition(viewport)).FirstOrDefault();
            if (firstHit != null)
            {
                this.viewModel.Select(firstHit.Visual);

            }
            else
            {
                this.viewModel.Select(null);

            }
        }

这样我就有了选定的ModelVisual3D并可以存储它。然而,主要的问题是:

我的模型是基于特定数据和关联的.stl模型生成的。基本情况下,我导入.stl模型并将其显示在我的3D场景中,但问题是我不知道如何将其他数据连接到模型。

例如,当我选择视觉时,我想要显示另一个窗口,其中包含以下信息:材料、尺寸、公司。

但是我不知道如何确定此时选择了哪个唯一的ModelVisual3D对象。似乎没有我可以利用的属性来做一些类似的事情:

代码语言:javascript
复制
ModelImporter tr = new ModelImporter();
            var model = tr.Load("C:\\Users\\...\\Pictures\\a.stl");
            ModelVisual3D test = new ModelVisual3D();

            test.Content = model;

//Here I would like to save the id of my visual model to identify and
//associate it with my other data later

            int myUniqueModelID=test.Properties.UNIQUEID
EN

回答 1

Stack Overflow用户

发布于 2016-05-26 19:52:22

使用字典来保存数据引用和ModelVisual3D引用之间的映射怎么样?

喜欢

代码语言:javascript
复制
    Dictionary<ModelVisual3D, StlDataObject> modelDataMap = new Dictionary<ModelVisual3D, StlDataObject>();
    public void LoadModelWithData(string dataFilePath, string stlModelPath)
    {
        ModelImporter tr = new ModelImporter();
        var model = tr.Load("C:\\Users\\...\\Pictures\\a.stl");
        ModelVisual3D test = new ModelVisual3D();

        test.Content = model;

        //Load the datafile from file (or pass it this method)
        StlDataObject IdForOurStlModel = GetStlDataFromFile(dataFilePath);
        modelDataMap.Add(test, IdForOurStlModel);
    }

然后,当您需要在视区中查找命中测试的数据时,只需检查此字典是否包含按下的ModelVisual3d的键,如果包含,则返回与该键相关的值。

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

https://stackoverflow.com/questions/37439597

复制
相关文章

相似问题

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