这个例子展示了如何使用项目API来自动化操作文件的项目任务,包括使用修改过的文件、依赖项、快捷键和标签。
打开AirFrame项目并使用CurrentProject获取项目对象以在命令行中操作项目。
项目= sldemo_slproject_airframe
使用“MinGW64 Compiler (C)”编译。墨西哥人成功完成。proj = Project with properties: Name: "Airframe Example" sourcecontrolinintegration: "Git" RepositoryLocation: "C:\workSpace\examples\repositories\airframe3" SourceControlMessages: ["Branch status: Normal"…]ReadOnly: 0 topllevel: 1 Dependencies: [1×1 digraph] Categories: [1×1 matlab.project. jar . jar]文件:[1×32 matlab.project。快捷方式:[1×7 matlab.project.]ProjectPath: [1×7 matlab.project.][1×0 matlab.project.]ProjectReference] StartupFiles: [1×0 string] ShutdownFiles: [1×0 string] DefinitionFilesType: FixedPathMultiFile说明:“这是一个示例项目。↵↵使用“项目快捷方式”工具条选项卡找到开始这个项目的方法。C:\workSpace\examples\airframe3" SimulinkCodeG金宝appenFolder: "C:\workSpace\examples\airframe3\work\codegen" ProjectStartupFolder: "C:\workSpace\examples\airframe3" SimulinkCacheFolder: "C:\workSpace\examples\airframe3\work\cache"
找出你可以用你的项目做什么。
方法(项目)
类matlab.project.Project的方法:addFile listtimpactedfiles addfolderinclingchildfiles listModifiedFiles addPath listRequiredFiles addReference refreshsourceccontrol addShortcut reload addShutdownFile removeCategory addStartupFile removeFile addprop removePath close removeReference createCategory removesshortcut export removeShutdownFile findCategory removeStartupFile findFile对于继承自handle的matlab.project.Project的方法调用"methods('handle')"。
获得项目对象后,可以检查项目属性,如文件。
=项目文件。文件
files = 1×32 ProjectFile数组,带有属性:Path Labels Revision SourceControlStatus
使用索引来访问此列表中的文件。以下命令获取文件编号10.每个文件都有描述其路径和附加标签的属性。
proj.Files (10)
"C:\workSpace\examples\airframe3\data\controller. "“1×1 matlab.project. sldd”标签:修订版本:"27b6d5ec735ea103997d4cf6fc7abe625665678b" SourceControlStatus:未修改
检查第10个文件的标签。
proj.Files .Labels (10)
文件:"C:\workSpace\examples\airframe3\data\controller. "sldd" DataType: 'none' Data: [] Name: "设计" CategoryName: "分类"
通过名称获取特定的文件。
myfile = findfile(proj,'models / spalmcontrol.slx'的)
路径:"C:\workSpace\examples\airframe3\models\AnalogControl. "“1×1 matlab.project. slx”标签:修订版本:"27b6d5ec735ea103997d4cf6fc7abe625665678b" SourceControlStatus:未修改
找出您可以对该文件做什么。
方法(myfile)
类matlab.project.projectfile的方法:addlabel findlabel removelabel
通过添加任意块来修改项目模型文件。
open_system (“AnalogControl”) add_block (“内置/子系统”那'AnaloMControl /测试') save_system (“AnalogControl”的)
获取项目中所有修改过的文件。观察两个修改后的文件。与Project中的Modified Files视图进行比较,在该视图中您可以看到一个修改过的模型文件,以及相应的项目定义文件。
modifiedfiles = listModifiedFiles(项目)
ModifiedFiles = 1×2 ProjectFile数组,具有属性:路径标签修订版苏克索托罗尔斯坦
获取第二个修改文件。遵守文件SourceControlStatus
财产被修改。相似地,listmodiedfiles.
返回添加,冲突,删除等的任何文件,在项目中修改的文件视图中显示。
ModifiedFiles(2)
ans = ProjectFile with properties: "C:\workSpace\examples\airframe3\resources\project\uuid-08e31a06-2b0a-43a0-8031-deb3ab31ef15.xml" Revision: "" SourceControlStatus: Added .
查询单个文件之前刷新源控制状态。在使用之前,您不需要做listmodiedfiles.
。
refreshSourceControl(项目)
获取具有特定源代码控制状态的所有项目文件。例如,获取文件未修改的
。
proj.Files (ismember ([proj.Files。SourceControlStatus], matlab.sourcecontrol.Status.Unmodified))
ANS = 1×23 ProjectFile数组,具有属性:路径标签修订版SourceControlstatus
更新文件依赖项。项目运行依赖项分析来更新项目文件之间的已知依赖项。
updateDependencies(项目)
获得Airframe项目中的依赖项列表。Dependencies属性包含项目文件之间的依赖关系图,存储为MATLAB有向图对象。
g =项目。依赖关系
g = diggraph with properties: Edges: [21×1 table] Nodes: [21×1 table]
获取模型所需的文件。
requiredFiles = bfsearch(g, which(“AnalogControl”))
requiredFiles = 3×1 cell array {'C:\workSpace\examples\airframe3\models\AnalogControl。基金的}{“C: \ workSpace \ \ airframe3 \ data \控制器实例。sldd’}{“C: \ workSpace \ \ airframe3例子\ data \公交车。sldd '}
获取图中所有类型的顶级文件。
g.Nodes.Name(入度(g) = = 0);
获取具有依赖项的顶级文件。
g.nodes.name(Indemege(g)== 0和roundegree(g)> 0)
ans = 4×1个单元阵列{'c:\ workspace \ examples \ airframe3 \ models \ digitalcontrol.slx'} {'c:\ workspace \ examplex \ airframe3 \ models \ linearactuator.slx'} {'c:\ workspace \【举例】\ airframe3 \ models \ slproject_f14.slx'} {'c:\ workspace \ examplex \ airframe3 \ tests \ f14_airframe_test.m'}}
通过创建转换图来查找受影响(或“上游”)文件。
转置=触发器(g)影响= bfsearch(转置,哪个(“vertical_channel”))
{'C:\workSpace\examples\airframe3\models\vertical_channel. 'C:\workSpace\examples\airframe3\models\vertical_channel. '基金的}{“C: \ workSpace \ \ airframe3 \ \ f14_airframe模型实例。基金的}{'C:\workSpace\examples\airframe3\models\slproject_f14.slx' } {'C:\workSpace\examples\airframe3\tests\f14_airframe_test.m' }
查找受数据字典影响的文件。
Impacted2 = bfsearch(转置,which(“buses.sldd”))
{'C:\workSpace\examples\airframe3\data\公共汽车。sldd’}{“C: \ workSpace \ \ airframe3 \ data \控制器实例。sldd '}{'C:\workSpace\examples\airframe3\data\system_model.sldd' } {'C:\workSpace\examples\airframe3\tests\f14_airframe_test.m' } {'C:\workSpace\examples\airframe3\models\AnalogControl.slx' } {'C:\workSpace\examples\airframe3\models\DigitalControl.slx' } {'C:\workSpace\examples\airframe3\models\LinearActuator.slx' } {'C:\workSpace\examples\airframe3\models\NonLinearActuator.slx'} {'C:\workSpace\examples\airframe3\models\f14_airframe.slx' } {'C:\workSpace\examples\airframe3\models\slproject_f14.slx' } {'C:\workSpace\examples\airframe3\models\vertical_channel.slx' }
获取关于文件的信息,例如依赖项和孤儿项的数量。
averageNumDependencies =意味着(出度(g));numberOfOrphans =总和(入度(g) +出度(g) = = 0);
如果要将更改更改为模型层次结构,从底部启动,查找拓扑顺序。
命令= g.Nodes.Name(翻转(toposort (g)));
检查项目的快捷方式属性。
快捷方式= proj.shortcuts.
shortcuts = 1×7带有属性:Name Group File的快捷数组
检查数组中的快捷方式。
快捷键(7)
名称:"Rebuild Project's -functions"组:"Utility"文件:"C: workSpace\examples\airframe3\utilities\rebuild_s_functions.m"
获取快捷方式的文件路径。
快捷方式(7)。文件
ans =“c:\ workspace \ examples \ airframe3 \实用程序\ Rebuild_s_functions.m”
检查快捷方式单元格数组中的所有文件。
{快捷方式。文件}’
ans = 7×1个单元阵列{[“c:\ workspace \ examples \ airframe3 \ custom_tasks \ inalyzemodelfiles.m”]} {[c:\ workspace \ examples \ airframe3 \ custom_tasks \ billofmaterials.m]} {[C:\ workspace \ examples \ airframe3 \ custom_tasks \ checkcodeproblems.m“]} {[c:\ workspace \ examples \ airframe3 \ custom_tasks \ rununittest.m”]} {[c:\ workspace \ examples \ airframe3 \ models\ slproject_f14.slx“]} {[c:\ workspace \ examples \ airframe3 \报告\ slproject_f14.pdf”]} {[c:\ workspace \ examples \ airframe3 \ milties \ rebuild_s_functions.m]]}
创建一个新的标签类别,类型为char。在“项目”中,新的“工程师”类别出现在“标签”窗格中。
CreateCategory(Proj,“工程师”那“字符”的)
ANS =具有属性的类别:名称:“工程师”SingleValued:0数据类型:“char”labeldefinitions:[1×0 matlab.project.labeldefinition]
找出您可以使用新类别进行操作。
category = findcategory(proj,“工程师”);方法(类别)
类matlab.project.Category的方法:createLabel findLabel removeLabel
在新类别中定义一个新标签。
createLabel(类别,“鲍勃”);
获取一个标签定义。
ld = findlabel(类别,“鲍勃”的)
ld = LabelDefinition with properties:名称:"Bob" CategoryName: "Engineers"
给检索到的文件myfile附加一个标签。如果您选择Project中的文件,您可以在标签编辑器窗格中看到此标签。
addlabel(myfile,“工程师”那“鲍勃”);
获取一个特定的标签并将数据附加到其上,例如,一些文本。
label = findlabel(myfile,“工程师”那“鲍勃”);label.data =.“请评估”
标签=具有属性的标签:文件:“c:\ workspace \ examples \ airframe3 \ models \ spalmcontrol.slx”datatype:'char'数据:'请评估'名称:“bob”categoryname:“工程师”
你可以为标签数据指定一个变量,例如:
mydata = label.data.
mydata = '请评估'
使用数字数据类型创建一个新的标签类别。
CreateCategory(Proj,“评估”那“双”);category = findcategory(proj,“评估”);createLabel(类别,“山姆”);
将新标签附加到指定的文件并将数据值2赋给该标签。
myfile = proj.files(14);addlabel(myfile,“评估”那“山姆”, 2)
文件:"C:\workSpace\examples\airframe3\lib\timesthree. "tlc" Data type: 'double' Data: 2 Name: "Sam" CategoryName: "Assessors"
在命令行关闭项目与使用project工具关闭项目相同。例如,该项目运行关闭脚本,并检查未保存的模型。
关上(项目)
有关使用API的详细信息,请输入:医生currentProject
。
自动执行启动和关闭任务,请参阅自动化启动任务。
currentProject
|listmodiedfiles.
|refreshSourceControl
|addLabel
|createLabel