protected override void DeleteProperty(IXProperty prp) { if (m_ParentDoc.Configurations.Active.Configuration != m_ParentConf.Configuration) { throw new ConfigurationSpecificCutListPropertiesWriteNotSupportedException(); } base.DeleteProperty(prp); }
public bool TryGet(string name, out IXProperty ent) { if (Exists(name)) { ent = CreatePropertyInstance(PrpMgr, name, true); return(true); } else { ent = null; return(false); } }
public void Init(IXApplication app, IXDocument model) { m_Model = model; m_DescPrp = m_Model.Properties["Description"]; m_D1Dim = m_Model.Dimensions["D1@Sketch1"]; m_Model.Closing += OnModelClosing; m_Model.Selections.NewSelection += OnNewSelection; m_DescPrp.ValueChanged += OnPropertyValueChanged; m_D1Dim.ValueChanged += OnDimensionValueChanged; }
public bool TryGet(string name, out IXProperty ent) { var prp = GetOrPreCreate(name); if (prp.IsCommitted) { ent = prp; return(true); } else { ent = null; return(false); } }
protected virtual void DeleteProperty(IXProperty prp) { if (m_App.IsVersionNewerOrEqual(Enums.SwVersion_e.Sw2014)) { var delRes = (swCustomInfoDeleteResult_e)PrpMgr.Delete2(prp.Name); if (delRes != swCustomInfoDeleteResult_e.swCustomInfoDeleteResult_OK) { throw new Exception($"Failed to remove property '{prp.Name}'. Error code: {delRes}"); } } else { const int SUCCESS = 0; if (PrpMgr.Delete(prp.Name) != SUCCESS) { throw new Exception($"Failed to remove property '{prp.Name}'"); } } }
private void OnModelSaving(IXDocument doc, DocumentSaveType_e type, DocumentSaveArgs args) { if (type == DocumentSaveType_e.SaveAs) { var tempDir = Path.GetTempPath(); var ext = Path.GetExtension(args.FileName); IXProperty titlePrp = null; if (doc is ISwDocument3D) { titlePrp = (doc as ISwDocument3D).Configurations.Active.Properties.GetOrPreCreate(FILE_NAME_PRP); } if (titlePrp == null || !titlePrp.Exists()) { titlePrp = doc.Properties.GetOrPreCreate(FILE_NAME_PRP); } var prpVal = ""; if (titlePrp.Exists()) { prpVal = titlePrp.Value?.ToString(); } if (string.IsNullOrEmpty(prpVal)) { prpVal = Guid.NewGuid().ToString(); } var destFile = Path.Combine(tempDir, prpVal + ext); args.FileName = destFile; } }
/// <summary> /// True if this property exists /// </summary> public static bool Exists(this IXProperty prp) => prp.IsCommitted;
private void OnPropertyValueChanged(IXProperty prp, object newValue) { //TODO: handle property change }
private bool Approve(XSubmittal submittal, Guid userId) { //Helpers.Log("PropertyValueSubmittalLayer", "PropertyValueSubmittal_Approve()"); if (submittal != null) { foreach (XValue pv in submittal.PropertyValues) { pv.Approved = DateTime.Now; pv.ApprovedBy = userId; pv.IsDirty = true; } submittal.Approved = DateTime.Now; submittal.ApprovedBy = userId; submittal.IsDirty = true; //List<SynchTrigger> triggers = this.CreateSynchTriggers(submittal); this.Save(submittal, false, userId); //new SynchTriggerDal().Save(triggers); List <Guid> propIds = new List <Guid>(); foreach (XValue pv in submittal.PropertyValues) { if (!propIds.Contains(pv.PropertyId)) { propIds.Add(pv.PropertyId); } } IDictionary <Guid, IXProperty> properties = new XPropertyDomain().GetObjectDictionary(propIds); foreach (XValue pv in submittal.PropertyValues) { IXProperty prop = properties[pv.PropertyId]; if (prop != null) { XObjectRelation relation = null; if ((prop.DataType == EDataType.Relation_ParentChild) || (prop.DataType == EDataType.Relation_ChildParent)) { #region Relations // need to create a relation for this item relation = new XObjectRelation(); if (prop.DataType == EDataType.Relation_ParentChild) { relation.FromAssetId = pv.AssetId; relation.ToAssetId = new Guid(pv.Value); } else { relation.FromAssetId = new Guid(pv.Value); relation.ToAssetId = pv.AssetId; } relation.AssetRelationType = EObjectRelationType.ParentChild; #endregion } else if (prop.DataType == EDataType.Dependency) { #region Dependency relation = new XObjectRelation(); relation.FromAssetId = pv.AssetId; relation.ToAssetId = new Guid(pv.Value); relation.AssetRelationType = EObjectRelationType.Dependency; #endregion } else if ((prop.DataType == EDataType.User) && (prop.RoleId.HasValue)) { // TODO: Complete implementation of the dynamic role-based security if (!string.IsNullOrEmpty(pv.Value)) { Guid memberId; if (Guid.TryParse(pv.Value, out memberId)) { XRoleDomain roleLayer = new XRoleDomain(); if (!roleLayer.ContainsUser(prop.RoleId.Value, memberId)) { //roleLayer.AddMemberToRole(memberId, prop.RoleId.Value, Constants.MemberIds.Admin); } } } // determine if someone else is already in this value // if they are, we need to determine whether or not they are in this role for another asset // if not, remove the role association // if they are, do nothing // determine whether or not the newly-supplied user is in this role // if not, add them to the role // if they are, do nothing } if (prop.IsSystem && (prop.SystemType == ESystemType.AssetName)) { bool renamed = new XObjectDomain <XObject>().Rename(pv.AssetId, pv.Value); } if (relation != null) { #region more relation stuff relation.Created = DateTime.Now; relation.CreatedBy = submittal.CreatedBy; relation.Approved = relation.Created; relation.ApprovedBy = submittal.CreatedBy; XObjectRelationDomain relationDal = new XObjectRelationDomain(); // a child can only have one parent // delete any previous relations if (prop.DataType == EDataType.Relation_ChildParent) { relationDal.RemoveExistingParentRelations(relation.FromAssetId, relation.AssetRelationType.GetHashCode()); } if (!relationDal.AssetAssetRelationExists(relation.FromAssetId, relation.ToAssetId, relation.AssetRelationType.GetHashCode())) { relationDal.Save(relation); } // TODO: Need more logic in here. Other cases // What if relation is removed? #endregion } } } return(new XObjectDomain().MarkAsUpdated(submittal.AssetId, submittal.CreatedBy)); } return(false); }
public string GetData(IXDrawing drw, SourceData srcData) { var src = srcData.Source; using (var scopedDoc = new ScopedDocument(m_DocAdapter, drw, m_Logger, srcData.ReferencedDocument)) { IEdmVault5 vault; var doc = scopedDoc.Document; var conf = scopedDoc.Configuration; switch (src) { case Source_e.FilePath: return(doc.Path); case Source_e.PartNumber: if (conf == null) { throw new UserException("Part number can only be extracted from the configuration of part or assembly"); } return(conf.PartNumber); case Source_e.CustomProperty: IXProperty prp = null; if (conf != null) { conf.Properties.TryGet(srcData.CustomPropertyName, out prp); } if (prp == null) { doc.Properties.TryGet(srcData.CustomPropertyName, out prp); } if (prp != null) { return(prp.Value?.ToString()); } else { throw new UserException("Specified custom property does not exist"); } case Source_e.PdmVaultLink: const string CONISIO_URL_ACTION = "explore"; FindRelativeVaultPath(doc.Path, out vault); var file = vault.GetFileFromPath(doc.Path, out IEdmFolder5 folder); return($"conisio://{vault.Name}/{CONISIO_URL_ACTION}?projectid={folder.ID}&documentid={file.ID}&objecttype={(int)file.ObjectType}"); case Source_e.PdmWeb2Url: if (string.IsNullOrEmpty(srcData.PdmWeb2Server)) { throw new UserException("Url of Web2 server is not specified"); } var vaultRelPath = FindRelativeVaultPath(doc.Path, out vault); return($"{srcData.PdmWeb2Server}/{vault.Name}/{Path.GetDirectoryName(vaultRelPath).Replace('\\', '/')}?view=bom&file={Path.GetFileName(vaultRelPath)}"); case Source_e.Custom: return(srcData.CustomValue); default: throw new NotSupportedException(); } } }