Reading existing function in MATLAB?

1 view (last 30 days)
Saurav
Saurav on 23 Apr 2024
Edited: DGM on 25 Jul 2025
I have download some function of Matlab for my project work. Now when I am running that function then it is showing error
Error: >> stlRead
Execution of script stlRead as a function is not supported:
I:\Python coding\3d\New findings\vsangelidakis\vsangelidakis-SHAPE-f97791a\lib\stlTools\stlRead.m
Error in stlRead (line 1)
[v, f, n, name] = stlRead('aggregate_1.stl');
I am attcahing the folder of the function.
  1 Comment
DGM
DGM on 25 Jul 2025
Edited: DGM on 25 Jul 2025
The attached file is an incomplete, renamed copy of stlGetFormat() from FEX #51200 (stlTools). It's no longer valid code since it's truncated mid-scope, and it was renamed to something that's not even relevant anymore. Despite this file not being usable without error, it's never being used.
These are functions, not scripts. The files stlRead(), stlReadBinary(), stlReadAscii(), stlSlimVerts(), and stlGetFormat() need to be able to call each other as functions. If you remove the function definition, they don't work anymore.
Don't make random edits to a function and try to run it like a script. Make sure the relevant files are on the path, then call it with the appropriate input and output arguments as described in the synopsis.
% this will call stlGetFormat(). depending on the result,
% it will call either stlReadBinary() or stlReadAscii(),
% which will call stlSlimVerts() when it's done.
[V,F] = stlRead('myfile.stl'); % from FEX #51200
In R2018b or newer, you don't need to use stlTools. As Cris mentioned below, you can use stlread and stlwrite instead.

Sign in to comment.

Accepted Answer

Cris LaPierre
Cris LaPierre on 23 Apr 2024
Edited: Cris LaPierre on 23 Apr 2024
The issue is that your function name is strReads, not stlRead. However, it is best practice to use the same name for the function and the file. You function is actually called stlGetFormat. You should rename your file so that it has the same name as your function, and use that name to call it.
type stlReads.m
function format = stlGetFormat(fileName) %STLGETFORMAT identifies the format of the STL file and returns 'binary' or %'ascii' fid = fopen(fileName); % Check the file size first, since binary files MUST have a size of 84+(50*n) fseek(fid,0,1); % Go to the end of the file fidSIZE = ftell(fid); % Check the size of the file if rem(fidSIZE-84,50) > 0 format = 'ascii';
You can learn more about creating functions in MATLAB here: https://www.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html
  1 Comment
Cris LaPierre
Cris LaPierre on 23 Apr 2024
Incidentally, MATLAB has an stlread function.
unzip('aggregate_1.zip')
TR = stlread('aggregate_1.stl')
TR =
triangulation with properties: Points: [13535x3 double] ConnectivityList: [27066x3 double]
trimesh(TR)

Sign in to comment.

More Answers (0)

Categories

Find more on Downloads in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!