主要内容

使用脚本自动执行项目任务

此示例显示如何使用Project API自动操作项目任务操作文件,包括使用修改后的文件,依赖关系,快捷方式和标签。

在命令行获取项目

打开Airframe项目,并使用currentProject获取一个项目对象,以便在命令行操作该项目。

sldemo_slproject_airframe proj = currentProject
建立“Mingw64编译器(C)”。MEX成功完成。proj = project with属性:名称:“airframe示例”豆蔻ocontrolintogration:“git”repositorylocation:“c:\ workspace \ exampleard \ reposities \ airframe1”sourceControlmessages:[1×3字符串] ReadOlely:0 TopleVel:1依赖性:[1×1 digraph]类别:[1×1 matlab.project.category]文件:[1×31 matlab.project.projectfile]快捷方式:[1×7 matlab.project.shortcut] projectpath:[1×7 matlab.project.pathfolder] ProjectReferences:[1×0 matlab.project.projectReference] startupfiles:[1×0字符串] shutdownfiles:[1×0字符串]描述:“这是一个示例项目.↵↵使用”项目快捷方式“工具标签查找这个项目开始的方法。“rootfolder:“c:\ workspace \ examples \ airfram金宝appe1”simulinkcodegenfolder:“c:\ workspace \ examples \ airframe1 \ work \ codegen”projectstartupfolder:“c:\ workspace \ exampleare \ airframe1”simulinkcachefolder:“c:\ workspace \ examplearairframe1 \ work \ cache“

查找项目命令

了解您可以使用项目所做的操作。

方法(Proj)
类matlab.project.Project的方法:addFile listModifiedFiles addfolderinclingchildfiles listRequiredFiles addPath refreshSourceControl addReference reload addShortcut removeCategory addShutdownFile removeFile addStartupFile removePath addprop removerference close removesshortcut createCategory removeShutdownFile export removeStartupFile findCategory runChecks findFile对于从handle继承的matlab.project.Project的方法调用"methods('handle')"。

检查项目文件

获得项目对象后,可以检查项目属性,如文件。

files = proj.files.
文件= 1×31 ProjectFile数组,具有属性:路径标签修订版SourceControlstatus

使用索引来访问此列表中的文件。下面的命令获取10号文件。每个文件都有描述其路径和附加标签的属性。

proj.files(10)
ans = projectfile具有属性:路径:“c:\ workspace \ examples \ airframe1 \ data \ system_model.sldd”标签:[1×1 matlab.project.label]版本:“3e2de2b2a43515259c0843aacf330775d8fda493”SourceControlstatus:未修饰

检查第10个文件的标签。

proj.files(10).Labels
ANS =具有属性的标签:文件:“c:\ workspace \ examples \ airframe1 \ data \ system_model.sldd”datatype:'none'数据:[]名称:“design”categoryname:“分类”

按名称获取特定文件。

myfile = findFile(项目,“模型/ AnalogControl.slx”)
myfile = projectfile具有属性:路径:“c:\ workspace \ examples \ airframe1 \ models \ spalmcontrol.slx”标签:[1×1 matlab.project.label]修订:“3e2de2b2a43515259c0843aacf330775d8fda493”SourceControlstatus:未修饰

找出您可以使用该文件执行的操作。

方法(myfile)
class matlab.project.ProjectFile的方法

获取已修改的文件

通过添加任意块来修改项目模型文件。

Open_System('模拟control')add_block('内置/子系统',“AnalogControl /测试”)save_system('模拟control')

获取项目中的所有修改文件。观察两个修改的文件。将修改的文件视图与项目中的修改文件视图进行比较,您可以在其中查看修改后的模型文件和相应的项目定义文件。

modifiedfiles = listModifiedFiles(项目)
modifiedfiles = 1×2 ProjectFile数组与属性:路径标签修订SourceControlStatus

获取第二个修改后的文件。观察到的文件SourceControlstatus.属性修改。同样的,listModifiedFiles返回在项目中的Modified files视图中显示的任何添加、冲突、删除等文件。

modifiedfiles (2)
ANS = ProjectFile具有属性:路径:“C:\ Workspace \示例\ Airframe1 \ Resources \ Project \ UUID-0988AC9D-5ADD-4CAC-83A5-6A4AF6C0CF34.xml”修订:“”SourceControlstatus:添加

在查询单个文件之前,请刷新源代码控制状态。使用前不需要做listModifiedFiles

RefreshsourceControl(Proj)

获取具有特定源控制状态的所有项目文件。例如,获取文件未修饰

proj.files(ISMember([proj.files.sourceControlstatus],matlab.sourceControl.status.unmodified))
ANS = 1×22 ProjectFile数组,具有属性:路径标签修订版苏克索托罗尔斯坦

获取文件依赖项

更新文件依赖项。该项目运行依赖性分析以更新项目文件之间的已知依赖项。

更新竞争(Proj)

获取AirFrame项目中的依赖项列表。依赖项属性包含项目文件之间的依赖性图形,存储为MATLAB DOPRAPH对象。

g = proj.depentencies
g =带有属性的数字:边缘:[21×1表]节点:[21×1表]

获取模型所需的文件。

必填File= bfsearch(g,哪个('模拟control')))
必填程序= 3×1个单元阵列{'c:\ workspace \ examples \ airframe1 \ models \ spalmcontrol.slx'} {'c:\ workspace \ examples \ airframe1 \ data \ controller.sldd'} {'c:\ workspace \示例\ airframe1 \ data \ buses.sldd'}

获取图形中所有类型的顶级文件。

g.nodes.name(Indegree(g)== 0);

获取具有依赖项的顶级文件。

g.Nodes.Name(入度(g) = = 0 &出度(g) > 0)
ans = 4×1 cell array {'C:\workSpace\examples\airframe1\models\DigitalControl。基金的}{“C: \ workSpace \ \ airframe1 \ \ LinearActuator模型实例。基金的}{“C: \ workSpace \ \ airframe1 \ \ slproject_f14模型实例。基金的}{'C:\workSpace\examples\airframe1\tests\f14_airframe_test.m'}

通过创建一个转置图找到受影响的(或“上游”)文件。

转置= flipedge(g)'vertical_channel')))
转置=具有属性的数字:边缘:[21×1表]节点:[21×1表]影响= 4×1个单元阵列{'C:\ workspace \ examples \ airframe1 \ models \ vertical_channel.slx'} {'c:\ Workspace \ examples \ airframe1 \ models \ f14_airframe.slx'} {'c:\ workspace \ examples \ airframe1 \ models \ slproject_f14.slx'} {'c:\ workspace \ examplex \ airframe1 \ tests \ f14_airframe_test.m'}

查找由数据字典影响的文件。

checompeded2 = bfsearch(转置,哪个('buses.sldd')))
impacted2 = 11×1 cell array {'C:\workSpace\examples\airframe1\data\bus。sldd’}{“C: \ workSpace \ \ airframe1 \ data \控制器实例。sldd’}{“C: \ workSpace \ \ airframe1 \ data \ system_model例子。sldd’}{“C: \ workSpace \ \ airframe1 \ \ f14_airframe_test测试例子。m '}{“C: \ workSpace \ \ airframe1 \ \ AnalogControl模型实例。基金的}{'C:\workSpace\examples\airframe1\models\DigitalControl.slx' } {'C:\workSpace\examples\airframe1\models\f14_airframe.slx' } {'C:\workSpace\examples\airframe1\models\LinearActuator.slx' } {'C:\workSpace\examples\airframe1\models\NonLinearActuator.slx'} {'C:\workSpace\examples\airframe1\models\slproject_f14.slx' } {'C:\workSpace\examples\airframe1\models\vertical_channel.slx' }

获取有关文件的信息,例如依赖项和孤立的数量。

averagenumdependencies =平均值(roundegree(g));NumberOfOrphans = Sum(Indemee(g)+ oudegree(g)== 0);

如果您想对模型层次结构进行更改,从下往上开始,找到拓扑顺序。

命令= g.nodes.name(翻转(topoosort(g)));

查询快捷键

检查项目的捷径属性。

快捷键=项目。快捷键
带有属性的快捷方式= 1×7快捷速数:名称组文件

检查数组中的快捷方式。

快捷方式(7)
ANS =具有属性的快捷方式:名称:“重建项目的S函数”组:“实用程序”文件:“C:\ Workspace \ examples \ Airframe1 \ Utilities \ Rebuild_s_functions.m”

获取快捷方式的文件路径。

快捷键(7)。文件
ans = " C: \ workSpace \ \ airframe1例子\工具\ rebuild_s_functions.m”

检查快捷键单元格数组中的所有文件。

{shortcuts.file}'
ans = 7×1个单元阵列{[c:\ workspace \ examples \ airframe1 \ custom_tasks \ inalyzemodelfiles.m]]} {[c:\ workspace \ examples \ airframe1 \ custom_tasks \ billofmaterials.m]]} {[c:\ workspace \ examples \ airframe1 \ custom_tasks \ checkcodeproblemsm“]} {[c:\ workspace \ examples \ airframe1 \ custom_tasks \ rununittest.m”]} {[c:\ workspace \ examples \ airframe1 \ models\ slproject_f14.slx“]} {[c:\ workspace \ examples \ airframe1 \报告\ slproject_f14.pdf”]} {[c:\ workspace \ examples \ airframe1 \ milties \ newuild_s_functions.m]]}

标签文件

创建一个新的标签类别,类型char。在项目中,新工程师类别出现在标签窗格中。

createCategory(项目,'工程师','char')
ans = Category with properties: Name: "Engineers" singlevalues: 0 DataType: "char" labeldefinition: [1×0 matlab.project.LabelDefinition]

看看你可以用这个新类别做些什么。

类别= findCategory(项目,'工程师');方法(类别)
类Matlab.Project.Category的方法:CreateLabel FindLabel Removelabel

在新类别中定义新标签。

CreateLabel(类别,'鲍勃');

获取标签定义。

ld = findLabel(类别,'鲍勃')
LD =具有属性的LandEdefinition:名称:“Bob”类名:“工程师”

将标签附加到检索到的文件,myfile。如果在项目中选择文件,则可以在标签编辑器窗格中看到此标签。

addLabel (myfile'工程师','鲍勃');

获取特定标签并将数据附加到它,例如某些文本。

标签= findLabel (myfile,'工程师','鲍勃');标签。Data ='请评估'
标签=具有属性的标签:文件:“c:\ workspace \ examples \ airframe1 \ models \ spalmcontrol.slx”datatype:'char'数据:'请评估'名称:“bob”categoryname:“工程师”

您可以为标签数据指定变量,例如:

mydata =标签。数据
mydata ='请评估'

创建具有数字数据类型的新标签类别。

createCategory(项目,'评估员','双倍的');类别= findCategory(项目,'评估员');CreateLabel(类别,“山姆”);

将新标签附加到指定的文件,并将数据值2分配给标签。

myfile = proj.Files (14);addLabel (myfile'评估员',“山姆”,2)
ans = Label with properties: File: "C:\workSpace\examples\airframe1\models" DataType: 'double' Data: 2 Name: "Sam" CategoryName: "Assessors"

关闭项目

在命令行关闭项目与使用project工具关闭项目相同。例如,项目运行关机脚本并检查未保存的模型。

关闭(proj)

更多的信息

有关使用API​​的更多详细信息,请输入:doc currentproject.

要自动启动和关闭任务,请参见自动启动任务

另请参阅

||||

相关话题