public bool ConfigPropertyExists(string AttributeName, SwDMConfiguration14 swCfg, bool CheckDocument = false) { bool Res = GetAllConfigPropertiesNames(swCfg).Contains(AttributeName.ToUpper()); if (!Res && CheckDocument) { Res = this.DocumentPropertyExists(AttributeName); } return Res; }
private SldDMComponentItem GetComponentInfo( SwDMComponent9 currentComponent, int level, int parentId) { if (currentComponent == null || level < 0 || parentId <= 0) { return(null); } string fullPath = currentComponent.PathName;; SldDMComponentItem item = SldDMComponentItem.GenerateTheNext(); item.ParentId = parentId; item.Level = level; try { item.FullPath = fullPath; item.FeatureName = currentComponent.Name2; item.FeatureId = currentComponent.GetID(); item.IsSuppressed = currentComponent.IsSuppressed(); item.FileName2D = EngineeringDrawingFile.Get2DFileNameIfExisting(fullPath); item.Visible = !currentComponent.IsHidden(); SwDmDocumentOpenError openResult; SwDMDocument17 doc = currentComponent.GetDocument2(true, this.GlobalSearchOption, out openResult) as SwDMDocument17; if (doc == null || openResult != SwDmDocumentOpenError.swDmDocumentOpenErrorNone) { Debug.WriteLine(string.Format("GetComponentInfo:couldn't open {0},the return value is:{1}", fullPath, openResult.ToString())); return(null); } SwDMConfiguration14 config = doc.ConfigurationManager.GetConfigurationByName(currentComponent.ConfigurationName) as SwDMConfiguration14; if (File.Exists(fullPath)) { item.AllCustomProperties = GetDocumentPropertiesViaDM.RetrievePropertiesUnderConfig( fullPath, config, GetDocumentPropertiesViaDM.PropertyNamesOftenUsed, true); } item.ConfigurationCount = doc.ConfigurationManager.GetConfigurationCount(); item.ChildrenCount = doc.GetComponentCount(); doc.CloseDoc(); Marshal.ReleaseComObject(doc); this.CallbackGettingExtraInfo?.Invoke(ref item); } catch (Exception ex) { Debug.WriteLine(string.Format("GetComponentInfo:when dealing {0}, exception occurred:{1}", fullPath, ex.Message)); } return(item); }
public string ConfigPropertyRawValue(string AttributeName, SwDMConfiguration14 swCfg) { if (ConfigPropertyExists(AttributeName, swCfg)) { SwDmCustomInfoType Type = default(SwDmCustomInfoType); return swCfg.GetCustomProperty2(AttributeName, out Type); // Return swCfg.GetCustomPropertyValues(AttributeName, Type, "") } else if (this.DocumentPropertyExists(AttributeName)) { return this.DocumentPropertyEvalValue(AttributeName); } return ""; }
public bool ConfigDeleteProperty(string AttributeName, SwDMConfiguration14 swCfg) { try { if (ConfigPropertyExists(AttributeName, swCfg)) { return swCfg.DeleteCustomProperty(AttributeName); } return false; } catch { return false; } }
private int GetTopDocumentInfo( string fullPath, SwDMDocument17 currentDocument, SwDMConfiguration14 currentConfig) { if (string.IsNullOrEmpty(fullPath) || currentDocument == null || currentConfig == null) { return(-1); } SldDMComponentItem root = SldDMComponentItem.GenerateTheRoot(); Task task = Task.Factory.StartNew(() => { root.FullPath = fullPath; root.FeatureName = currentDocument.Title; root.ConfigurationCount = currentDocument.GetComponentCount(); object[] subComponents = currentConfig.GetComponents(); root.ChildrenCount = subComponents == null ? 0 : subComponents.Length; if (File.Exists(fullPath)) { root.AllCustomProperties = GetDocumentPropertiesViaDM.RetrievePropertiesUnderConfig( fullPath, currentConfig, GetDocumentPropertiesViaDM.PropertyNamesOftenUsed, true); } this.ResultsAtPopulating.Enqueue(root); this.CallbackGettingExtraInfo?.Invoke(ref root); Debug.WriteLine(string.Format("GetTopDocumentInfo:got [{0}]", fullPath)); }); this.AllWalkingTasks.Enqueue(new ComponentAndTask_Assembly() { ParentId = -1, TheTask = task, FullPath = fullPath, Id = root.Id }); return(root.Id); }
private static double massInKg(SwDMConfiguration14 swCfg) { SwDmMassPropError nError; if (swCfg != null) { try { double[] massArray = swCfg.GetMassProperties(out nError); if (nError == SwDmMassPropError.swDmMassPropErrorNone) { return massArray[5]; //this results in the mass in kg } else if (nError == SwDmMassPropError.swDmMassPropErrorNoData) { return -2; } } catch { } } return -1; }
private Double handleMassProperty(SwDMConfiguration14 swCfg) { double massKg = massInKg(swCfg); if (massKg > 0) { return massKg * 2.20462262; // convert mass from kg to lb } return massKg; }
private Boolean clearProperty(Array names, SwDMConfiguration14 cfg) { Boolean result = false; if (names != null && names.Length > 0) { foreach (String name in names) { if (cfg == null) { if (doc.DeleteCustomProperty(name)) result = true; } else if (cfg.DeleteCustomProperty(name)) { result = true; } } } return result; }
private int GetCurrentComponentInfo( SwDMComponent9 currentComponent, string fullPath, int level, int parentId) { if (currentComponent == null || string.IsNullOrEmpty(fullPath) || level < 0 || parentId <= 0) { return(-1); } SldDMComponentItem item = SldDMComponentItem.GenerateTheNext(); Task task = Task.Factory.StartNew(() => { item.ParentId = parentId; item.Level = level; item.FullPath = fullPath; item.FeatureName = currentComponent.Name2; item.FeatureId = currentComponent.GetID(); item.IsSuppressed = currentComponent.IsSuppressed(); item.FileName2D = EngineeringDrawingFile.Get2DFileNameIfExisting(fullPath); item.Visible = !currentComponent.IsHidden(); try { SwDmDocumentOpenError openResult; SwDMDocument17 doc = currentComponent.GetDocument2(true, this.GlobalSearchOption, out openResult) as SwDMDocument17; if (doc == null || openResult != SwDmDocumentOpenError.swDmDocumentOpenErrorNone) { Debug.WriteLine(string.Format("GetCurrentComponentInfo:couldn't open {0},the return value is :{1}", fullPath, openResult.ToString())); return; } SwDMConfiguration14 config = doc.ConfigurationManager.GetConfigurationByName(currentComponent.ConfigurationName) as SwDMConfiguration14; if (File.Exists(fullPath)) { item.AllCustomProperties = GetDocumentPropertiesViaDM.RetrievePropertiesUnderConfig( fullPath, config, GetDocumentPropertiesViaDM.PropertyNamesOftenUsed, true); } item.ConfigurationCount = doc.ConfigurationManager.GetConfigurationCount(); item.ChildrenCount = doc.GetComponentCount(); this.ResultsAtPopulating.Enqueue(item); doc.CloseDoc(); Marshal.ReleaseComObject(doc); } catch (Exception ex) { Debug.WriteLine(string.Format("GetCurrentComponentInfo:when dealing {0}, exception occurred:{1}", fullPath, ex.Message)); return; } this.CallbackGettingExtraInfo?.Invoke(ref item); Debug.WriteLine(string.Format("GetCurrentComponentInfo:got [{0}] (ID={1})", fullPath, item.Id)); }); string originalExt; SwDmDocumentType docType = SldFileExtentionChecker.CheckDM(fullPath, out originalExt); if (docType == SwDmDocumentType.swDmDocumentAssembly) { this.AllWalkingTasks.Enqueue(new ComponentAndTask_Assembly() { ParentId = parentId, TheTask = task, FullPath = fullPath, Id = item.Id }); } else { this.AllWalkingTasks.Enqueue(new ComponentAndTask_Part() { ParentId = parentId, TheTask = task, FullPath = fullPath, Id = item.Id }); } return(item.Id); }
protected bool TraverseCore(string assemblyPath, string configurationName) { if (string.IsNullOrEmpty(assemblyPath)) { return(false); } if (!File.Exists(assemblyPath)) { return(false); } string originalExt; SwDmDocumentType docType = SldFileExtentionChecker.CheckDM(assemblyPath, out originalExt); if (docType != SwDmDocumentType.swDmDocumentAssembly && docType != SwDmDocumentType.swDmDocumentPart) { return(false); } SwDMClassFactory swDMClassFactory = new SwDMClassFactory(); //this.AllComObjects.Enqueue(swDMClassFactory); SwDMApplication swDMApp = swDMClassFactory.GetApplication(GetDocumentPropertiesViaDM.LinktronLicenseKey); this.GlobalSearchOption = swDMApp.GetSearchOptionObject(); //this.AllComObjects.Enqueue(swDMApp); SwDmDocumentOpenError returnValue = 0; SwDMDocument17 swDoc = (SwDMDocument17)swDMApp.GetDocument(assemblyPath, docType, true, out returnValue); if (swDoc == null || returnValue != SwDmDocumentOpenError.swDmDocumentOpenErrorNone) { return(false); } //this.AllComObjects.Enqueue(swDoc); SwDMConfigurationMgr dmConfigMgr = swDoc.ConfigurationManager; //this.AllComObjects.Enqueue(dmConfigMgr); string[] configurationNames = (string[])dmConfigMgr.GetConfigurationNames(); if (configurationNames == null || configurationNames.Length <= 0) { return(false); } string configNameToOpen = null; if (string.IsNullOrEmpty(configurationName)) { configNameToOpen = dmConfigMgr.GetActiveConfigurationName(); } else { configNameToOpen = configurationName; } SwDMConfiguration14 activeCfg = (SwDMConfiguration14)dmConfigMgr.GetConfigurationByName(configNameToOpen); if (activeCfg == null) { return(false); } //this.AllComObjects.Enqueue(activeCfg); int topId = this.GetTopDocumentInfo(assemblyPath, swDoc, activeCfg); if (topId <= 0) { return(false); } if (docType == SwDmDocumentType.swDmDocumentAssembly) { try { object[] allComponents = activeCfg.GetComponents(); if (allComponents != null) { foreach (object o in allComponents) { SwDMComponent9 subComponent = o as SwDMComponent9; this.TraverseRecursively(subComponent, 1, topId); } } } catch (Exception ex) { Trace.WriteLine(string.Format("TraverseCore:exception:{0}", ex.Message)); } } return(true); }
public SwDmCustomInfoType ConfigPropertyType(string attributeName, SwDMConfiguration14 swCfg) { SwDmCustomInfoType Type = default(SwDmCustomInfoType); //SwDmCustomInfoType = SwDmCustomInfoType.swDmCustomInfoUnknown if (ConfigPropertyExists(attributeName, swCfg)) { swCfg.GetCustomProperty2(attributeName,out Type); } else if (this.DocumentPropertyExists(attributeName)) { return this.DocumentPropertyType(attributeName); } return Type; }
public bool ConfigAddProperty(string AttributeName, SwDmCustomInfoType Type, string Value, SwDMConfiguration14 swCfg) { ConfigDeleteProperty(AttributeName, swCfg); return swCfg.AddCustomProperty(AttributeName, Type, Value); }
public List<string> GetAllPropertiesNames(SwDMConfiguration14 swCfg) { List<string> Names = new List<string>(); foreach (string name in swCfg.GetCustomPropertyNames()) { Names.Add(name.ToUpper()); } foreach (string name in Doc.GetCustomPropertyNames()) { if (!Names.Contains(name)) { _Names.Add(name.ToUpper()); } } return Names; }
public List<string> GetAllConfigPropertiesNames(SwDMConfiguration14 swCfg) { List<string> Names = new List<string>(); if (swCfg.GetCustomPropertyCount() != 0) { foreach (string name in swCfg.GetCustomPropertyNames()) { Names.Add(name.ToUpper()); } } return Names; }
public void ConfigSetProperty(string AttributeName, string Value, SwDMConfiguration14 swCfg) { swCfg.SetCustomProperty(AttributeName, Value); }