Clear Filters
Clear Filters

How to megre meshgrid and stl file?

77 views (last 30 days)
taetae
taetae on 18 Jul 2024 at 5:11
Commented: taetae on 19 Jul 2024 at 2:00
I can show my meshgrid and stl model. but can't merge two thing...
I want the ship to belong to the meshgrid by value.
I can let you know if I need any information.

Accepted Answer

Anagha Mittal
Anagha Mittal on 18 Jul 2024 at 6:54
Hi,
To merge meshgrid with an STL model, you may import the STL model using the "importGeometry" function and then combine the meshgrid data with STL geometry and plot them together. Refer to the following documentation link for information and usage of "importGeometry" function:
Below is an example script that shows the steps to achieve the same:
% Step 1: Import the STL Model
model = createpde();
gm = importGeometry(model, 'yourModel.stl');
% Step 2: Create the Meshgrid (You may use the meshgrid you have created)
[x, y, z] = meshgrid(-10:1:10, -10:1:10, -10:1:10);
% Step 3: Combine and Visualize
figure;
pdegplot(gm, 'FaceAlpha', 0.5); % Plot the STL model
hold on;
scatter3(x(:), y(:), z(:), 'r.'); % Plot the meshgrid points
hold off;
axis equal;
Here, "hold on" and "hold off" functions will ensure that they are plotted together. Refer to the following documentation link for more information on these functions:
Hope this helps!
  1 Comment
taetae
taetae on 19 Jul 2024 at 2:00
I don't think that's the way to go... I've been suffering from this for 3 days now...

Sign in to comment.

More Answers (1)

Zinea
Zinea on 18 Jul 2024 at 10:00
Hi taetae,
Here is a demonstration on how to merge a meshgrid with an STL model in MATLAB R2022b. A dummy STL model which is a simple cube is used as an example here. The STL model and meshgrid are plotted separately, as well as merged in a 3D plot.
NOTE:
  1. The ‘hold on’ command is used for plotting multiple graphical objects on the same axes without overwriting each other. After plotting both the STL model and the meshgrid, we use ‘hold off’ to stop adding to the current plot.
  2. The ‘surf’ function is used to add a surface plot to a 3D plot. This is done in conjunction with the patch function, which is used to display an STL model.
Here is the complete script for reference:
% Define the vertices of the cube
vertices = [
0 0 0;
1 0 0;
1 1 0;
0 1 0;
0 0 1;
1 0 1;
1 1 1;
0 1 1
];
% Define the faces of the cube
faces = [
1 2 3; 1 3 4; % Bottom face
5 6 7; 5 7 8; % Top face
1 2 6; 1 6 5; % Front face
2 3 7; 2 7 6; % Right face
3 4 8; 3 8 7; % Back face
4 1 5; 4 5 8 % Left face
];
% Create a triangulation object
cube = triangulation(faces, vertices);
% Save the triangulation object as an STL file
stlwrite(cube, 'dummy_cube.stl');
disp('Dummy STL model created and saved as dummy_cube.stl');
Dummy STL model created and saved as dummy_cube.stl
% Load the STL file
fv = stlread('dummy_cube.stl');
% Extract vertices and faces from the loaded STL structure
vertices = fv.Points;
faces = fv.ConnectivityList;
% Create a meshgrid
[x, y] = meshgrid(linspace(min(vertices(:,1)), max(vertices(:,1)), 50), ...
linspace(min(vertices(:,2)), max(vertices(:,2)), 50));
% Define the function for the meshgrid. Here we use a simple sine function.
z = sin(sqrt(x.^2 + y.^2));
% Plot the STL model and meshgrid separately and together
figure;
% Subplot 1: STL model
subplot(1, 3, 1);
patch('Faces', faces, 'Vertices', vertices, ...
'FaceColor', [0.8 0.8 1.0], 'EdgeColor', 'none', 'FaceAlpha', 0.5);
view(3);
axis equal;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('STL Model');
% Subplot 2: Meshgrid
subplot(1, 3, 2);
surf(x, y, z, 'FaceAlpha', 0.5, 'EdgeColor', 'none');
view(3);
axis equal;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Meshgrid');
% Subplot 3: Combined
subplot(1, 3, 3);
hold on;
patch('Faces', faces, 'Vertices', vertices, ...
'FaceColor', [0.8 0.8 1.0], 'EdgeColor', 'none', 'FaceAlpha', 0.5);
surf(x, y, z, 'FaceAlpha', 0.5, 'EdgeColor', 'none');
view(3);
axis equal;
hold off;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Combined STL Model and Meshgrid');
% Set the overall figure title
sgtitle('STL Model and Meshgrid Plots');
You may refer to the following documentation links for more information about the functions used in the above code snippet:
Hope this resolves your query!
Zinea
  1 Comment
taetae
taetae on 19 Jul 2024 at 2:00
I don't think that's the way to go... I've been suffering from this for 3 days now...

Sign in to comment.

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!