How to megre meshgrid and stl file?
11 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
Anagha Mittal
on 18 Jul 2024
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!
More Answers (1)
Zinea
on 18 Jul 2024
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:
- 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.
- 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');
% 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
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!