主要内容

使用脚本自动化项目任务

这个例子展示了如何使用项目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

自动执行启动和关闭任务,请参阅自动化启动任务

也可以看看

||||

相关的话题