/// <summary> /// /// </summary> /// <param name="app"></param> private void SaveClients(UIApplication app) { // (Konrad) Extract the variables used by this method var senders = Arg1 as Dictionary <string, string>; var receivers = Arg2 as Dictionary <string, string>; var doc = app.ActiveUIDocument.Document; var pInfo = SchemaUtilities.GetProjectInfo(doc); var schemaExists = SchemaUtilities.SchemaExist(Properties.Resources.SchemaName); var schema = schemaExists ? SchemaUtilities.GetSchema(Properties.Resources.SchemaName) : SchemaUtilities.CreateSchema(); using (var trans = new Transaction(doc, "Store Clients")) { trans.Start(); if (schemaExists) { SchemaUtilities.UpdateSchemaEntity(schema, pInfo, "senders", senders); SchemaUtilities.UpdateSchemaEntity(schema, pInfo, "receivers", receivers); } else { SchemaUtilities.AddSchemaEntity(schema, pInfo, "senders", senders); SchemaUtilities.AddSchemaEntity(schema, pInfo, "receivers", receivers); } trans.Commit(); } }
private void RefillItems ( int rowIndex, string className ) { DgnUtilities dgnUtil = DgnUtilities.GetInstance(); //ArrayList arr = dgnUtil.GetECInstanceDisplayLabelsFromDgn (className); ECInstanceList arr = DgnUtilities.GetInstance().GetAllInstancesFromDgn(className); DataGridViewComboBoxCell itemInstanceCell = this[s_WBSInstanceKey, rowIndex] as DataGridViewComboBoxCell; itemInstanceCell.Items.Clear(); itemInstanceCell.Tag = SchemaUtilities.PlantSchema.GetClass(className); itemInstanceCell.Value = null; if (_bMultiInst) { itemInstanceCell.Items.Add(_cstr_Varies); } itemInstanceCell.Items.Add(LocalizableStrings.None); Dictionary <string, IECInstance> dropDownCache = new Dictionary <string, IECInstance> (); foreach (IECInstance returnedInstance in arr) //for (int j = 0; j < arr.Count; j++) { string key = SchemaUtilities.GetDisplayNameForECInstance(returnedInstance, true); if (dropDownCache.ContainsKey(key)) { dropDownCache[key] = returnedInstance; } else { // insert dropDownCache.Add(key, returnedInstance); itemInstanceCell.Items.Add(key); } } if (dropDownCache.Count > 0) { itemInstanceCell.Tag = dropDownCache; } //for (int j = 0; j < arr.Count; j++) // itemInstanceCell.Items.Add (arr[j]); if (arr.Count > 0) { itemInstanceCell.Value = SchemaUtilities.GetDisplayNameForECInstance(arr[0], true); } else { itemInstanceCell.Value = LocalizableStrings.None; } }
/// <summary> /// /// </summary> /// <param name="app"></param> private static void GetClients(UIApplication app) { if (!SchemaUtilities.SchemaExist(Properties.Resources.SchemaName)) { return; } var doc = app.ActiveUIDocument.Document; var schema = SchemaUtilities.GetSchema(Properties.Resources.SchemaName); var pInfo = SchemaUtilities.GetProjectInfo(doc); var receivers = pInfo.GetEntity(schema).Get <IDictionary <string, string> >(schema.GetField("receivers")); var senders = pInfo.GetEntity(schema).Get <IDictionary <string, string> >(schema.GetField("senders")); OnClientsRetrieved?.Invoke(receivers, senders); }
public void UpdateWBSParts(IECInstance selectedECInstance) { try { if (selectedECInstance == null) { return; } ArrayList assocItems = SchemaUtilities.GetAssociatedItemInformation(selectedECInstance.ClassDefinition); UpdateWBSParts(assocItems, selectedECInstance); } catch (Exception ex) { WorkspaceUtilities.DisplayErrorMessage(ex.Message, string.Empty); } }
private IECInstance EditECInstance(IECInstance ecInst) { ECInstanceDialog ecDlg = new ECInstanceDialog(ecInst); ecDlg.DialogTitle = string.Format(LocalizableStrings.EditingInstanceTitle, ecInst.ClassDefinition.DisplayLabel, SchemaUtilities.GetDisplayNameForECInstance(ecInst, false)); ecDlg.ShowDialog(); //User didn't save the new instance if (!ecDlg.SavePressed) { return(null); } //We were not able to save the new instance if (!ecDlg.SaveData()) { return(null); } return(ecDlg.GetECInstance()); }
/*------------------------------------------------------------------------------------**/ /// <summary> /// ReplaceComponents /// </summary> /// <param name="unparsed"></param> /*--------------+---------------+---------------+---------------+---------------+------*/ public static void ReplaceComponents ( string unparsed ) { if (PipelineUtilities.IsReplaceDialogRunning) { return; } BMECApi MechnanicalAPI = BMECApi.Instance; // Don't proceed for readonly files if (MechnanicalAPI.IsActiveModelReadOnly()) { MechnanicalAPI.SendToMessageCenterD(Bentley.DgnPlatformNET.OutputMessagePriority.Information, LocalizableStrings.DgnReadonly); return; } ECInstanceList ecList = MechnanicalAPI.GetSelectedInstances(); int count = 0; for (int i = 0; i < ecList.Count; i++) { IECInstance ecInstanceTemp = ecList[i] as IECInstance; if (ecInstanceTemp == null) { continue; } // Skip anything other than piping components or valve operators if (!(SchemaUtilities.IsPipingComponent(ecInstanceTemp) || SchemaUtilities.IsComponentOfType(ecInstanceTemp, ClassNames.VALVE_OPERATING_DEVICE))) { continue; } //You can't replace fasteners if (SchemaUtilities.IsComponentOfType(ecInstanceTemp, ClassNames.FASTENER)) { continue; } //You can't replace seals if (SchemaUtilities.IsComponentOfType(ecInstanceTemp, ClassNames.SEAL)) { continue; } count++; } ECInstanceList nozzleList = new ECInstanceList(); bool bHasFreeformNozzle = false; if (count == 0) { for (int i = 0; i < ecList.Count; i++) { IECInstance ecInstanceTemp = ecList[i] as IECInstance; if (ecInstanceTemp.ClassDefinition.Name == "NOZZLE") { IECPropertyValue propVal = ecInstanceTemp["TYPE_FOR_DATUM"]; if (propVal != null && propVal.StringValue == "Freeform") { bHasFreeformNozzle = true; nozzleList.Add(ecInstanceTemp); } } } } if (count == 0 && !bHasFreeformNozzle) { MechnanicalAPI.SendToMessageCenterD(DgnPlatformNET.OutputMessagePriority.Information, LocalizableStrings.NoComponentsSelectedinDgn); return; } for (int i = 0; i < ecList.Count; i++) { DgnUtilities dgnUtil = DgnUtilities.GetInstance(); IECInstance ecInst = ecList[i]; if (dgnUtil.IsECInstanceFromReferenceFile(ecInst) || dgnUtil.IsECInstanceReferencedOut(ecInst)) { MechnanicalAPI.SendToMessageCenterD(DgnPlatformNET.OutputMessagePriority.Information, LocalizableStrings.ReadonlyComps); return; } } if (s_ReplaceCompDialog == null) { if (nozzleList.Count <= 0) { s_ReplaceCompDialog = new DlgReplaceComponent(ecList, ReplaceDialogMode.SimpleReplace, true); s_ReplaceCompDialog.FormClosed += new FormClosedEventHandler(ReplaceCompDialog_FormClosed); } else { s_ReplaceCompDialog = new DlgReplaceComponent(nozzleList, ReplaceDialogMode.ChangeSpecSize, false); s_ReplaceCompDialog.FormClosed += new FormClosedEventHandler(ReplaceCompDialog_FormClosed); } } s_ReplaceCompDialog.Show(); }
/*------------------------------------------------------------------------------------**/ /// <summary> /// IsImportFileValidFormat /// </summary> /// <param name="fileName"></param> /// <param name="ecClass"></param> /// <returns></returns> /*--------------+---------------+---------------+---------------+---------------+------*/ private static bool IsImportFileValidFormat ( string fileName, IECClass ecClass ) { bool status = true; bool assoicationFound = false; bool instanceFound = false; int lineNumber = 0; ArrayList arr = SchemaUtilities.GetAssociatedItems(ecClass); bool lookForAssociations = (arr.Count > 1); System.IO.StreamReader sr = System.IO.File.OpenText(fileName); try { while (!sr.EndOfStream) { string lineRead = sr.ReadLine().Trim(); lineNumber++; if (string.IsNullOrEmpty(lineRead)) { continue; } string testString = lineRead.Replace("[Associations]", "|"); testString = testString.Replace("[InstanceData]", "|"); testString = testString.Replace("=", "|"); if (!testString.Contains("|")) { WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.InvalidString, lineRead, lineNumber), ""); status = false; break; } else if (lineRead == "[Associations]" && !lookForAssociations) { WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.NoAssociationRequired, lineNumber), ""); status = false; break; } else if (lineRead == "[InstanceData]" && lookForAssociations && !assoicationFound) { WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.AssociationsNotDefined, ecClass.Name, lineNumber), ""); status = false; break; } //Validate Associations if (lineRead == "[Associations]") { while (!sr.EndOfStream) { lineRead = sr.ReadLine().Trim(); lineNumber++; if (string.IsNullOrEmpty(lineRead)) { continue; } if (lineRead == "[InstanceData]") { break; } string[] strs = lineRead.Split(new char[] { '=' }); IECClass ecAssocateClass = SchemaUtilities.PlantSchema.GetClass(strs[0]); if (ecAssocateClass == null) { WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.InvalidAssociationClass, lineNumber), ""); status = false; break; } } assoicationFound = true; } if (status == false) { break; } //Validate Instance Data if (lineRead == "[InstanceData]") { while (!sr.EndOfStream) { lineRead = sr.ReadLine().Trim(); lineNumber++; if (lineRead == "[InstanceData]") { break; } if (lineRead == "[Associations]") { break; } if (string.IsNullOrEmpty(lineRead)) { continue; } string[] strs = lineRead.Split(new char[] { '=' }); IECProperty ecProp = ecClass[strs[0]]; if (ecProp == null) { WorkspaceUtilities.DisplayErrorMessage(string.Format(LocalizableStrings.InvalidPropertyName, lineNumber), ""); status = false; break; } } instanceFound = true; } if (status == false) { break; } } } finally { sr.Close(); } return(status && instanceFound); }
public bool FillAssociatedItems(bool isModifyTool) { ArrayList classRelationshipStrs = SchemaUtilities.GetAssociatedItems(_ClassDef); if (classRelationshipStrs.Count == 0) { return(false); } if (_bMultiInst) {//when editing associations of multiple instances, edit and delete options should not be available. this.optionDelete.Visible = false; this.optionEdit.Visible = false; //refresh/redraw the grid this.OnResize(new EventArgs()); } for (int i = 0; i < classRelationshipStrs.Count; i++) { string strData = classRelationshipStrs[i] as string; string[] strArr = strData.Split(new char[] { '|' }); IECClass ecAssociatedClass = SchemaUtilities.PlantSchema.GetClass(strArr[0]); int rowIndex = this.Rows.Add(); DataGridViewTextBoxCell itemTypeCell = this[s_WBSClassKey, rowIndex] as DataGridViewTextBoxCell; itemTypeCell.Value = ecAssociatedClass.DisplayLabel; //itemTypeCell.Tag = ecAssociatedClass; DataGridViewComboBoxCell itemInstanceCell = this[s_WBSInstanceKey, rowIndex] as DataGridViewComboBoxCell; //ArrayList arr = DgnUtilities.GetInstance().GetECInstanceDisplayLabelsFromDgn (strArr[0]); ECInstanceList arr = DgnUtilities.GetInstance().GetAllInstancesFromDgn(strArr[0]); IECRelationshipClass ecAssociatedRel = SchemaUtilities.PlantSchema.GetClass(strArr[1]) as IECRelationshipClass; // move class to 1st column tag, to start with, later changed itemInstanceCell.Tag = ecAssociatedClass; itemTypeCell.Tag = ecAssociatedRel; if (_bMultiInst) { itemInstanceCell.Items.Add(_cstr_Varies); } itemInstanceCell.Items.Add(LocalizableStrings.None); Dictionary <string, IECInstance> dropDownCache = new Dictionary <string, IECInstance> (); foreach (IECInstance returnedInstance in arr) //for (int j = 0; j < arr.Count; j++) { // insert only if this is not from a referenced file if (DgnUtilities.GetInstance().IsECInstanceFromReferenceFile(returnedInstance)) { continue; } string key = SchemaUtilities.GetDisplayNameForECInstance(returnedInstance, true); if (dropDownCache.ContainsKey(key)) { dropDownCache[key] = returnedInstance; } else { // insert dropDownCache.Add(key, returnedInstance); itemInstanceCell.Items.Add(key); } } if (dropDownCache.Count > 0) { itemInstanceCell.Tag = dropDownCache; } if (isModifyTool) { string strLastInstID = null; string key = ""; for (int j = 0; j < _instList.Count; j++) { IECInstance parentInstance = GetAssociatedItemFromInstance(_instList[j], ecAssociatedRel, ecAssociatedRel.Source.GetClasses()[0].Class); string strCurrInstID = ""; // If we have a parent instance, then we must be using an existing instance. We need to make sure we select the existing values. if (null != parentInstance) { key = SchemaUtilities.GetDisplayNameForECInstance(parentInstance, true); strCurrInstID = parentInstance.InstanceId; } else { key = LocalizableStrings.None; strCurrInstID = LocalizableStrings.None; } if (String.IsNullOrEmpty(strLastInstID)) { strLastInstID = strCurrInstID; } else { if (strCurrInstID != strLastInstID) { key = _cstr_Varies; break; } } } // end for loop itemInstanceCell.Value = key; } itemInstanceCell.Sorted = true; DataGridViewImageCell tempImageCell = this["optionAdd", rowIndex] as DataGridViewImageCell; tempImageCell.Tag = ecAssociatedClass; } if (!isModifyTool) { ArrayList AssociatonList = WorkspaceUtilities.GetSettings("Associations." + _ClassDef.Name); LoadSettings(AssociatonList, false); } return(true); }
private void OnCellMouseClick ( object sender, DataGridViewCellMouseEventArgs e ) { if (e.RowIndex == -1) { return; } if (e.ColumnIndex == 1) { this.BeginEdit(true); ComboBox comboBox = (ComboBox)this.EditingControl; if (null != comboBox) { comboBox.DroppedDown = true; } } if (e.ColumnIndex < AddButtonColumn) { return; } DgnUtilities dgnUtil = DgnUtilities.GetInstance(); IECClass ecClass = getECClassInformationForCurrentSelection(e.RowIndex); //this[ClassColumn, e.RowIndex].Tag as IECClass; IECRelationshipClass ecRelClass = getECRelationshipClassInformationForCurrentSelection(e.RowIndex); //this[ComboBoxColumn, e.RowIndex].Tag as IECRelationshipClass; DataGridViewComboBoxCell itemInstanceCell = this[s_WBSInstanceKey, e.RowIndex] as DataGridViewComboBoxCell; string strVal = this[s_WBSInstanceKey, e.RowIndex].Value as string; if (strVal == LocalizableStrings.None && (e.ColumnIndex != AddButtonColumn && e.ColumnIndex != BrowseButtonColumn)) { this[e.ColumnIndex, e.RowIndex].Selected = false; return; } //ADD/////////////////////////////////////////////////////////////////////////////////////////////////////////// if (e.ColumnIndex == AddButtonColumn) { // If we are connected to iModelHub we should acquire a a new tag for WBS ECInstanceDialog ecDlg = new ECInstanceDialog(ecClass.Name); ecDlg.ShowDialog(); //User didn't save the new instance if (!ecDlg.SavePressed) { return; } //We were not able to save the new instance if (!ecDlg.SaveData()) { return; } RefillItems(e.RowIndex, ecClass.Name); if (itemInstanceCell.Items.Count > 0) { itemInstanceCell.Value = SchemaUtilities.GetDisplayNameForECInstance(ecDlg.GetECInstance(), false); } } //EDIT////////////////////////////////////////////////////////////////////////////////////////////////////////// else if (e.ColumnIndex == EditButtonColumn) { IECInstance ecInst = this[e.ColumnIndex, e.RowIndex].Tag as IECInstance; if (ecInst == null) { MessageBox.Show(LocalizableStrings.NoEditDesc, LocalizableStrings.NoEditTitle, MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { IECInstance ecInstance = EditECInstance(ecInst); if (ecInstance == null) { return; } RefillItems(e.RowIndex, ecClass.Name); if (itemInstanceCell.Items.Count > 0) { itemInstanceCell.Value = SchemaUtilities.GetDisplayNameForECInstance(ecInstance, false); } _bInstanceModified = true; } } //DELETE//////////////////////////////////////////////////////////////////////////////////////////////////////// else if (e.ColumnIndex == DeleteButtonColumn) { IECInstance ecInst = this[e.ColumnIndex, e.RowIndex].Tag as IECInstance; if (ecInst == null) { MessageBox.Show(LocalizableStrings.NoDeleteDescRefOut, LocalizableStrings.NoDeleteTitle, MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { //.GetRelationshipInstances (ecClass.Name, _instance.ClassDefinition.Name, ecRelClass.Name, dgnUtil.GetDGNConnection()); ECInstanceList ecList = dgnUtil.GetRelatedInstances(ecInst, ecRelClass, _ClassDef, dgnUtil.GetDGNConnection()); if (ecList.Count > 0) { MessageBox.Show(string.Format(LocalizableStrings.NoDeleteDescAssocCompFound, itemInstanceCell.Value), LocalizableStrings.NoDeleteTitle, MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } if (MessageBox.Show(String.Format(LocalizableStrings.AreYouSureDelete, SchemaUtilities.GetDisplayNameForECInstance(ecInst, true)), String.Format(LocalizableStrings.DeleteInstanceTitle, ecInst.ClassDefinition.DisplayLabel), MessageBoxButtons.YesNo, MessageBoxIcon.Stop) == DialogResult.No) { return; } dgnUtil.DeleteECInstanceFromDgn(ecInst, dgnUtil.GetDGNConnection()); RefillItems(e.RowIndex, ecClass.Name); if (itemInstanceCell.Items.Count > 0) { itemInstanceCell.Value = itemInstanceCell.Items[0]; } else { itemInstanceCell.Value = null; } } _bInstanceModified = true; } //BROWSE//////////////////////////////////////////////////////////////////////////////////////////////////////// else if (e.ColumnIndex == BrowseButtonColumn) { IECInstance newEcinstance = ecClass.CreateInstance() as IECInstance; if (newEcinstance == null) { return; } object instance = dgnUtil.TagBrowser(newEcinstance, dgnUtil.AssoicatedItemsTagBrowserOverrides); if (instance == null || !(instance is IECInstance)) { return; } IECInstance selectedECInstance = instance as IECInstance; //CommonTools.BIMAdapter.BIMAdapter.ReleaseTag (newEcinstance); dgnUtil.CopyProperties(selectedECInstance, newEcinstance, false); //BusinessKeyUtility.Release (newEcinstance); BusinessKeyUtility.SetIsReserved(newEcinstance, true); dgnUtil.UpdateFunctionalGuidProperty(selectedECInstance, newEcinstance); dgnUtil.WriteECInstanceToDgn(newEcinstance, dgnUtil.GetDGNConnection()); //CommonTools.BIMAdapter //IECInstance inst = EditECInstance (ecInstance); //if(inst == null) // return; // inst = ecInstance; RefillItems(e.RowIndex, ecClass.Name); if (itemInstanceCell.Items.Count > 0) { itemInstanceCell.Value = SchemaUtilities.GetDisplayNameForECInstance(newEcinstance, false); } _bInstanceModified = true; } this[e.ColumnIndex, e.RowIndex].Selected = false; }