我是一个C#和WPF初学者,我一直在尝试在我的应用程序中制作一个Ifc查看器。我尝试了很多方法去做,但我没有成功,我转过身来。
我受到论坛上另一个话题的启发:“如何在WPF中使用Xbim来在3D中可视化.IFC”。目前,我的xaml文件看起来如下:
xmlns:presentation="http://schemas.Xbim.com/Presentation“
<Window.Resources>
<ObjectDataProvider x:Key="ModelProvider" IsInitialLoadEnabled="False" />
</Window.Resources>
<Grid Name="MainFrame" DataContext="{StaticResource ModelProvider}">
<presentation:DrawingControl3D x:Name="test3D" Model="{Binding ObjectInstance}"/>
</Grid>我的C#文件:
using System.Windows;
using System.Windows.Data;
using Xbim.Ifc;
using Xbim.ModelGeometry.Scene;
namespace okokokok
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
openFile();
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
ModelProvider.Refresh();
}
private ObjectDataProvider ModelProvider
{
get
{
return MainFrame.DataContext as ObjectDataProvider;
}
}
public void openFile()
{
var model = IfcStore.Open(@"C:\Users\e.mazzone\Desktop\Mission_C#\Test_Ifc_1.ifc");
var context = new Xbim3DModelContext(model);
context.CreateContext();
ModelProvider.ObjectInstance = model;
}
}
}这打开了绘图控件,但我们看不到IFC。我试过国际金融公司的每一种类型,但都没用。我认为xaml文件和C#文件之间可能存在绑定问题。
有没有人能给我建议,或者给我指点一个好的教程?
谢谢!
发布于 2022-07-26 11:05:42
不久前,我创建了一个简单的IFC查看器,我的DrawingControl3D名为DrawingControl,简化的代码如下所示:
xaml:
<xbim:DrawingControl3D
Grid.Column="1"
Grid.Row="1"
x:Name="DrawingControl"
SelectedEntity="{Binding Path=SelectedItem, ElementName=MainWindow, Mode=TwoWay}"
Model="{Binding}"
Focusable="True"
MouseMove="DrawingControl_MouseMove">
<xbim:DrawingControl3D.Background>
<LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
<GradientStop Color="#D1CBC4" Offset="1"/>
<GradientStop Color="#C8FCFF"/>
</LinearGradientBrush>
</xbim:DrawingControl3D.Background>
</xbim:DrawingControl3D>cs:
IfcStore ifcModel = IfcStore.Open("ifcFile.ifc");
var context = new Xbim3DModelContext(ifcModel);
context.CreateContext();
DrawingControl.Model = ifcModel;
DrawingControl.LoadGeometry(ifcModel);对我来说,它就像预期的那样工作。
https://stackoverflow.com/questions/71952927
复制相似问题