Is there a way to generate a simulink project template programmatically without including referenced projects?

4 visualizzazioni (ultimi 30 giorni)
I am trying to generate a simulink project template programmatically without including reference projects. This option is available when using the Share -> Simulink Project method.
I've tried this with the Simulink.exportToTemplate method but the documentation doesn't describe a parameter to not include referenced projects. Is there a way to achieve this?

Risposta accettata

Eugene Ofori
Eugene Ofori il 19 Dic 2023
Modificato: Eugene Ofori il 19 Dic 2023
I found a workaround. The template keeps referring to their reference projects but won't package them into the template if the reference projects can't be found on the specified path when creating it. So my method involves:
  1. copying the project to the 'tempdir', (such that the reference projects won't be on path)
  2. opening the copied project and creating the template,
  3. cleaning up by deleting the copied content.
oldpath = path;
newroot = fullfile(tempdir, 'SimulinkTempDump')
og_proj_root = folder_nm;
mkdir(newroot);
copyfile(og_proj_root, newroot)
temp_proj = openProject(newroot);
Simulink.exportToTemplate(...
temp_proj, ...
template_path, ...
'Description', description, ...
'Title', template_nm);
%% Cleanup
close(temp_proj);
openProject(og_proj_root);
path(oldpath) %replace the old path so we can delete our temp folder
%% Remove Temp
if exist(newroot, 'dir')
rmdir(newroot, 's');
end
Note:
  1. Since the reference projects are not successfully opening on the copied project, I'm not sure what issues this may cause when creating the template.
  2. If your project uses absolute paths for its references or the copied project (using relative paths) can still find the reference projects, I think your reference projects will still be packaged with your template.

Più risposte (1)

Infinite_king
Infinite_king il 26 Set 2023
Hi,
I understand that you want to generate a project template without including project references by using “Simulink.exportToTemplate” function.
One way of achieving this is to remove the referenced projects from the main project using “removeReference” function and then generating a project template using “Simulink.exportToTemplate” function.
Please refer the below template code,
%create a project and add the model
proj = matlab.project.createProject(ProjectPath); % Replace the ProjectPath with the desired path where you want to create the project
proj.Name = "ProjectName"; % rename the project
addFile(proj,'modelName.slx') % add the required model to the project
% or Open the project
proj = openProject(ProjectPath); % replace the ProjectPath with the path of the project
removeReference(proj,PathtoReferencedProject); % give path of refernced project to remove the reference from the project
templatefile = Simulink.exportToTemplate(proj,TemplateName); % Converting the project to a template
For more information on how to create project, add files and create project template, refer the following resources
  1. https://in.mathworks.com/help/matlab/ref/matlab.project.createproject.html
  2. https://in.mathworks.com/help/matlab/ref/matlab.project.project.addfile.html
  3. https://in.mathworks.com/help/matlab/ref/openproject.html
  4. https://in.mathworks.com/help/matlab/ref/matlab.project.project.removereference.html
  5. https://in.mathworks.com/help/simulink/slref/simulink.exporttotemplate.html
Hope this is helpful
  1 Commento
Eugene Ofori
Eugene Ofori il 29 Set 2023
Modificato: Eugene Ofori il 9 Nov 2023
Hi, thanks for the response. I saw the removeReference function but it doesn't seem to be what I was looking for. The function seems to alter the project and remove the references. The outcome I basically want and currently get through creating templates using the GUI, is when I create a new project from the template, it doesn't generate the external references but it still looks for them in the same relative path as the original project.

Accedi per commentare.

Categorie

Scopri di più su Dependency Analysis in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by