Smart3D V13.1 创建ThreeDModelData图纸并生成Sat文件到本地
/// <summary>
/// 创建StructuralSystem的sat文件
/// </summary>
/// <param name="panelAssembly"></param>
/// <returns></returns>
public static ThreeDModelData CreatSatDrawing(this StructuralSystem ss, DirectoryInfo satSavePath = null)
{
var sdir = S3DEnv.SystemStructureFolder;
var myFilter = S3DEnv.SP3DFolders.First(c => c.Name == "My Filters") as FilterFolder;
var ftName = ss.SystemPathStr().CutRight("/").AsFileName();
FilterFolder newAddedFd;
#region//如果分段文件夹下已经存在sat文件,则不再创建
if (myFilter.ChildFolders.Any(c => c.Name == "StructuralSystem Filter Folder"))
{
newAddedFd = myFilter.ChildFolders.FirstOrDefault(c => c.Name == "StructuralSystem Filter Folder");
}
else
{
newAddedFd = new FilterFolder("StructuralSystem Filter Folder", myFilter);
}
Filter ft;
if (newAddedFd.ChildFilters.Any(c => c.Name == ftName))
{
ft = newAddedFd.ChildFilters.First(c => c.Name == ftName) as Filter;
ft.Delete();
ClientServiceProvider.TransactionMgr.Commit("Delete the Filter for " + ftName);
}
ft = new Filter(ftName, newAddedFd);
List<BusinessObject> listObjs = new List<BusinessObject>();
listObjs.Add(ss);
ReadOnlyCollection<BusinessObject> objCol = new ReadOnlyCollection<BusinessObject>(listObjs);
ft.Definition.AddHierarchy(HierarchyTypes.System, objCol, true);
ft.Definition.AddObjectType(S3DEnv.CataLog_MetaDataMgr.GetBOCInfoByPath("ShipStructure\\ShipStructureParts"));
ft.Definition.AddObjectType(S3DEnv.CataLog_MetaDataMgr.GetBOCInfoByPath("Structure\\Members\\MemberPartPrismatic"));
#endregion
satSavePath ??= new DirectoryInfo(S3DEnv.CurDllDir);
satSavePath = satSavePath.CreateSubdirectory("SystemModelSat").CreateSubdirectory(S3DEnv.ProjectName);
if (!satSavePath.Exists) satSavePath.Create();
ClientServiceProvider.TransactionMgr.Commit("");
var satDn = Path.Combine(satSavePath.FullName, $"{ftName} 3D Model.sat");
ThreeDModelData sat = new ThreeDModelData(sdir, ModelDataFileFormat.SAT, false, satDn, ft);
sat.SetUserDefinedName($"{ftName} 3D Model");
sat.Update(UpdateTypes.FullUpdate);
return sat;
}
public static IEnumerable<SP3DFolder> SP3DFolders => MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant.PlantModel.Folders.Cast<SP3DFolder>();
public static DeliverableRoot RootDeliverable => (DeliverableRoot)MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant.PlantModel.RootDeliverable;

浙公网安备 33010602011771号