private void ElementsForm_Load(object sender, EventArgs e) { NLogger.LogText("Entered ElementsForm_Load"); // Load either Revit Elements grid or Revit Families dropdownlist, depending on how the user wants to select elements in Revit file if (elStructureList != null && elStructureList.Count != 0) { // Populate the Element datagrid var dataSources = offsitePanelHandler.GetElementsDataGridSource(elStructureList); elementList = dataSources["Elements"]; offsitePanelHandler.FillGrid(dgElements, elementList); //DataGridAutoSize(dgElements); } else { var dataSource = offsitePanelHandler.GetRevitFamiliesList(); this.comboBoxRevitFamilies.SelectedIndexChanged -= new EventHandler(comboBoxRevitFamilies_SelectedIndexChanged); offsitePanelHandler.FillComboRevitFamTypes(comboBoxRevitFamilies, dataSource, "Name"); this.comboBoxRevitFamilies.SelectedIndexChanged += new EventHandler(comboBoxRevitFamilies_SelectedIndexChanged); comboBoxRevitFamilies.SelectedIndex = -1; // populate filtering drowdown lists //var dataSource = offsitePanelHandler.GetListFamilyTypeSource(RevitFamTypes); //offsitePanelHandler.FillComboRevitFamTypes(comboBoxRevitFamilyTypes, dataSource, "FamilyTypeName"); } NLogger.LogText("Exit ElementsForm_Load"); }
private void dgInvRevMapping_SelectionChanged(object sender, EventArgs e) { NLogger.LogText("Entered dgInvRevMapping_SelectionChanged"); var rowsCount = dgInvRevMapping.Rows.GetRowCount(DataGridViewElementStates.Selected); var inventorTemplatePath = txtInventorTemplatesPath.Text; if (rowsCount > 0) { var invTemplateFileName = dgInvRevMapping.SelectedRows[0].Cells["Inventor Template"].Value.ToString(); // Populate the Properties datagrid var dataSources = offsitePanelHandler.GetInvRevitParamsMappingDataGridSource(invTemplateFileName, inventorTemplatePath); var elementList = dataSources["ParamsMapping"]; offsitePanelHandler.FillGrid(dgParamsMapping, elementList); // Select the first row of the Param mapping grid by Default dgParamsMapping.ClearSelection(); if (dgParamsMapping.Rows.Count > 0) { dgParamsMapping.Rows[0].Selected = true; } var mappedParams = elementList.Where(l => !string.IsNullOrEmpty(l.RevitParamName)).Count(); lblNumbOfMappedParams.Text = mappedParams.ToString(); lblNumberOfParams.Text = elementList.Count.ToString(); } NLogger.LogText("Exit dgInvRevMapping_SelectionChanged"); }
/// <summary> /// Based on mode, it reset the Revit property, or return the selected one from shown popup /// </summary> /// <param name="mode"></param> /// <param name="revitFamily"></param> /// <param name="currentRefParam"></param> /// <param name="RevitUsedParams"></param> /// <returns></returns> private string GetRevitFamilyParameter(RevitFamilyHandling mode, string revitFamily, string currentRefParam, IList <string> RevitUsedParams) { NLogger.LogText("Entered GetRevitFamilyParameter"); string revitFamilyParam = ""; switch (mode) { case RevitFamilyHandling.ResetRevitFamily: revitFamilyParam = ""; break; case RevitFamilyHandling.SetRevitFamily: var revitFamiliesParamsSelectionPopup = new RevitFamiliesParametersSelectionPopup(revitFamily, runtimeElStructureList, RevitUsedParams); var result = revitFamiliesParamsSelectionPopup.ShowDialog(); // Update Mapping grids with data coming from popup or leave the original value if click on Cancel button if (result == DialogResult.OK) { // Update RevitInventorParameters mapping datagrid with Revit family Parameter selected in the popup revitFamilyParam = revitFamiliesParamsSelectionPopup.SelectedRevitFamilyParam; } else { revitFamilyParam = currentRefParam; } break; } NLogger.LogText("Exit GetRevitFamilyParameter"); return(revitFamilyParam); }
// Load list of Inventor Templates from user selected path, applying filter on files extension public List <FileInfo> GetInventorTemplates(string path) { NLogger.LogText("Entered GetInventorTemplates method with path {path}", path); List <FileInfo> inventorTemplates = null; List <string> fileExtensions = new List <string> { ".iam", ".ipt", ".zip" }; try { var g = Directory.EnumerateFiles(path).Select(p => new FileInfo(p)); NLogger.LogText("Retrieved Inventor files {InventorFiles}", g.ToList().Count.ToString()); inventorTemplates = g.Where(j => fileExtensions.Contains(j.Extension)).ToList(); NLogger.LogText("Filtered Inventor files {InventorFiles}", inventorTemplates.Count.ToString()); NLogger.LogText("Exit GetInventorTemplates method"); } catch (Exception ex) { NLogger.LogError($"Following error occurred in GetInventorTemplates: {ex}"); throw new UIRelevantException(LanguageHandler.GetString("msgBox_BIM360NotSync")); } return(inventorTemplates); }
// Retrieve Revit family types in Active document public IList <Element> GetRevitFamilyTypesInActiveDocument(RevitFamily famType) { NLogger.LogText("Entered GetRevitFamiliesInActiveDocument"); IList <Element> genModElements = null; try { Type RevitFamType = Type.GetType(famType.Type); var genModelTypeCollector = new FilteredElementCollector(doc); genModelTypeCollector.OfClass(RevitFamType); if (!string.IsNullOrEmpty(famType.Category)) { BuiltInCategory RevitFamilyCategory = (BuiltInCategory)Enum.Parse(typeof(BuiltInCategory), famType.Category, true); genModelTypeCollector.OfCategory(RevitFamilyCategory); } genModElements = genModelTypeCollector.ToElements(); } catch (Exception ex) { NLogger.LogError(ex); NLogger.LogText("Exit GetRevitFamiliesInActiveDocument with error"); throw (ex); } NLogger.LogText($"Extracted {genModElements.Count()} Families from Revit document"); NLogger.LogText("Exit GetRevitFamiliesInActiveDocument"); return(genModElements); }
private void comboBoxRevitFamilies_SelectedIndexChanged(object sender, EventArgs e) { NLogger.LogText("Enter comboBoxRevitFamilies_SelectedIndexChanged"); RevitFamily selectedFamily = (RevitFamily)comboBoxRevitFamilies.SelectedItem; if (selectedFamily != null) { // Reset other elements depending from the selection offsitePanelHandler.FillGrid(dgElements, null); offsitePanelHandler.FillGrid(dgParamsMapping, null); offsitePanelHandler.FillGrid(dgInvRevMapping, null); txtInventorTemplatesPath.Text = ""; offsitePanelHandler.ResetRevitInventorMappingInternalStructure(); ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = false; // Extract Revit family from revit document, based on selected xml configured element NLogger.LogText($"Revit family selected: {selectedFamily.Name}"); RevitFamTypes = offsitePanelHandler.GetRevitFamilyTypesInActiveDocument(selectedFamily); NLogger.LogText($"Retrieved: {RevitFamTypes.Count()} family types"); // populate filtering drowdown lists var dataSource = offsitePanelHandler.GetListFamilyTypeSource(RevitFamTypes, selectedFamily); this.comboBoxRevitFamilyTypes.SelectedIndexChanged -= new EventHandler(comboBoxRevitFamilyTypes_SelectedIndexChanged); offsitePanelHandler.FillComboRevitFamTypes(comboBoxRevitFamilyTypes, dataSource, "FamilyTypeName"); this.comboBoxRevitFamilyTypes.SelectedIndexChanged += new EventHandler(comboBoxRevitFamilyTypes_SelectedIndexChanged); } NLogger.LogText("Exit comboBoxRevitFamilies_SelectedIndexChanged"); }
// Find a list of element with given class, family type and category (optional). public IList <Element> FindInstancesOfType(Type targetType, ElementId idType, Nullable <BuiltInCategory> targetCategory = null) { NLogger.LogText("Entered FindInstancesOfType"); // narrow down to the elements of the given type and category var collector = new FilteredElementCollector(doc).OfClass(targetType); if (targetCategory.HasValue) { collector.OfCategory(targetCategory.Value); } // parse the collection for the given family type id using LINQ query here. var elems = from element in collector where element.get_Parameter(BuiltInParameter.SYMBOL_ID_PARAM). AsElementId().Equals(idType) select element; NLogger.LogText($"Found {elems.Count()} elements"); NLogger.LogText("Exit FindInstancesOfType"); // put the result as a list of element fo accessibility. return(elems.ToList()); }
// Extract from returned json the subfolder info internal string SetFolderStructure(ForgeRestResponse ret, string parentId, string folderName) { NLogger.LogText("Entered SetFolderStructure"); string topFolderId = ""; JObject res = JObject.Parse(ret.ResponseContent); var data = res.SelectTokens("$.data").Children(); foreach (var item in data) { var name = ((string)item.SelectToken("attributes.name")); if (name == folderName) { topFolderId = (string)item.SelectToken("id"); //bIM360DocsStructure.Hub.ProjectList.First(o => o.Id == parentId).TopFolder = new Folder { Id = topFolderId, Name = name }; bIM360DocsStructure1.BIM360DataRows1.Add(new BIM360DocsRowStructure { ParentId = parentId, Id = topFolderId, Name = name, Type = BIM360Type.Folder }); } } NLogger.LogText("Exit SetFolderStructure"); return(topFolderId); }
// Extract from returned json the project info internal string SetProjectStructure(ForgeRestResponse ret, string parentId) { NLogger.LogText("Entered SetProjectStructure"); string projectId = ""; JObject res = JObject.Parse(ret.ResponseContent); var data = res.SelectTokens("$.data").Children(); foreach (var item in data) { var name = ((string)item.SelectToken("attributes.name")); if (name == ConfigUtilities.GetProject()) { projectId = (string)item.SelectToken("id"); //bIM360DocsStructure.Hub.ProjectList = new List<Project> { new Project { Id = projectId, Name = name } }; bIM360DocsStructure1.BIM360DataRows1.Add(new BIM360DocsRowStructure { ParentId = parentId, Id = projectId, Name = name, Type = BIM360Type.Project }); } } NLogger.LogText("Exit SetProjectStructure"); return(projectId); }
// Handles the UI logic of the row selected + button click on the InventorRevit mapping grid private void HandleRowSelection(RevitFamilyHandling mode) { NLogger.LogText("Entered HandleRowSelection"); var invTemplRowCount = dgInvRevMapping.Rows.GetRowCount(DataGridViewElementStates.Selected); string invTemplateFileName = ""; int selectedRow = -1; if (invTemplRowCount == 1) { invTemplateFileName = dgInvRevMapping.SelectedRows[0].Cells["Inventor Template"].Value.ToString(); selectedRow = dgInvRevMapping.SelectedRows[0].Index; } else { //MessageBox.Show("You have to select one Inventor Template"); MessageBox.Show(LanguageHandler.GetString("msgBox_SelInvTemplate")); return; } // If zip file, cannot associate parameters var isZipFile = System.IO.Path.GetExtension(invTemplateFileName) == ".zip"; if (isZipFile) { //MessageBox.Show("Cannot map parameters for zip file"); MessageBox.Show(LanguageHandler.GetString("msgBox_ZipFileParamMap")); return; } // Set or reset Revit Family var selRevFamily = GetRevitFamily(mode); NLogger.LogText($"Selected Revit Family {selRevFamily}"); if (string.IsNullOrEmpty(selRevFamily)) { return; } var dataSource = offsitePanelHandler.RefreshInvRevitMappingDataGridSource(selRevFamily, invTemplateFileName); var elementList = dataSource["InvRevMapping"]; NLogger.LogText("Fill InventorRevitMapping grid"); offsitePanelHandler.FillGrid(dgInvRevMapping, elementList); NLogger.LogText("Set selected rows on InventorRevitMapping and ParametersMapping grids"); dgInvRevMapping.ClearSelection(); dgInvRevMapping.CurrentCell = dgInvRevMapping.Rows[selectedRow].Cells["Inventor Template"]; dgInvRevMapping.CurrentRow.Selected = false; dgInvRevMapping.Rows[selectedRow].Selected = true; dgParamsMapping.ClearSelection(); dgParamsMapping.Rows[0].Selected = true; NLogger.LogText("Exit HandleRowSelection"); }
private void btnSelectFromScope_Click(object sender, EventArgs e) { NLogger.LogText("Entered btnSelectFromScope_Click"); HandleRowSelection(RevitFamilyHandling.SetRevitFamily); NLogger.LogText("Exit btnSelectFromScope_Click"); }
private void btnRevitParametersSel_Click(object sender, EventArgs e) { NLogger.LogText("Entered btnRevitParametersSel_Click"); HandleRowSelectionParams(RevitFamilyHandling.SetRevitFamily); NLogger.LogText("Exit btnRevitParametersSel_Click"); }
// Clear Inventor - Revit parameters mapping for a selected row private void btnClearSelectedParamMapping_Click(object sender, EventArgs e) { NLogger.LogText("Enter btnClearSelectedParamMapping_Click"); HandleRowSelectionParams(RevitFamilyHandling.ResetRevitFamily); NLogger.LogText("Exit btnClearSelectedParamMapping_Click"); }
public static void HandleErrorInForgeResponse(string messageParam, ForgeRestResponse res) { NLogger.LogText($"Exit {messageParam} with Error"); var ex = new Exception($"Following error occurred: Response Content: {res.ResponseContent}; Response Error: {res.RetResponse.ErrorMessage}"); NLogger.LogError(ex); throw ex; }
public ForgeAuthenticator(string url, string key, string secret, string authScope) { NLogger.LogText("ForgeAuthenticator constructor"); Url = url; Key = key; Secret = secret; AuthScope = authScope; }
// Load or attach to Inventor Process public /*async Task*/ void StartInventorApplication() { NLogger.LogText("Entered StartInventorApplication"); try { try { NLogger.LogText("StartInventorApplication - Try to attach to an active Inventor process"); // Get active inventor object //await Task.Run(() => //{ m_InventorApplication = Marshal.GetActiveObject("Inventor.Application") as Inventor.Application; //}); NLogger.LogText("StartInventorApplication - Attached sucessfully to an active Inventor process"); } catch (COMException ex) { NLogger.LogText("StartInventorApplication - Error in attaching to the Inventor process"); NLogger.LogError(ex); try { NLogger.LogText("StartInventorApplication - Try to activate an Inventor process"); // If not, start a new instance Type invAppType = Type.GetTypeFromProgID("Inventor.Application"); //await Task.Run(() => //{ m_InventorApplication = (Application)Activator.CreateInstance(invAppType); m_InventorApplication.Visible = false; started = true; //}); NLogger.LogText("StartInventorApplication - Inventor process activated sucessfully"); } catch (Exception ex2) { NLogger.LogText("StartInventorApplication - Error in activating the Inventor process"); NLogger.LogError(ex2); } } } catch (Exception e) { NLogger.LogError(e); } }
public void CloseInventorProcess() { NLogger.LogText("Entered CloseInventorProcess"); if (started && m_InventorApplication != null) { m_InventorApplication.Quit(); NLogger.LogText("Inventor Process shut down"); } m_InventorApplication = null; NLogger.LogText("Exit CloseInventorProcess"); }
// Initialize the form and its elements public OffsiteForm(IList <ADSK.Element> elementStructureList, UIApplication uiapplication, RevitElementSelectionMode RevitselMode) { NLogger.LogText("Entered Offsite Form constructor"); InitializeComponent(); // Initialize Offsite Panel BL handler. // Here inventor process is started / attached to offsitePanelHandler = new OffsitePanelHandler(uiapplication); this.Size = new Size(1380, 800); selMode = RevitselMode; NLogger.LogText($"Selection mode: {selMode}"); // Check if selection mode is from Viewer or from Revit Families filter if (selMode == RevitElementSelectionMode.FromView) { var tempelStructureList = offsitePanelHandler.ProcessElements(elementStructureList); elStructureList = offsitePanelHandler.FilterElements(tempelStructureList); runtimeElStructureList = elStructureList; grBoxRevFamTypes.Visible = false; grBoxRevFamilies.Visible = false; btnSelectAllElements.Visible = false; btnUnselectAll.Visible = false; } else { grBoxRevFamTypes.Visible = true; grBoxRevFamilies.Visible = true; } // Set local BIM 360 folder as root path rootPath = Utility.GetInventorTemplateFolder(); // Utilities.GetBIM360RootPath(); folderBrowserDialogInventorTemplates.SelectedPath = rootPath; // Initialize data grids & combobox InitializeSOWGrid(dgElements); InitializeMappingGrid(dgInvRevMapping); InitializeParametersMappingGrid(dgParamsMapping); InitializeLanguage(); ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = false; //InitializeCombobox(comboBoxRevitFamilies); //InitializeCombobox(comboBoxRevitFamilyTypes); NLogger.LogText("Exit Offsite Form constructor"); }
// Extract all relevant information from selected elements and create an internal structure for passing parameters around public List <ElementStructure> ProcessElements(IList <Element> RevitElements) { NLogger.LogText("Entered ProcessElements"); elementStructureList.Clear(); // Extract information from received Revit elements foreach (var elem in RevitElements) { var elementOrderedParamsList = new List <ElementOrderedParameter>(); var elementTypeOrderedParamsList = new List <ElementOrderedParameter>(); var elementTypeSingleParamsList = new List <ElementOrderedParameter>(); elementOrderedParamsList = GetParameters(elem); // Extract the corresponding ElementType var elemTypeId = elem.GetTypeId(); ElementType elemType = (ElementType)doc.GetElement(elemTypeId); if (elemType == null) { throw new UIRelevantException(LanguageHandler.GetString("msgBox_SelElNoRevFam")); } elementTypeOrderedParamsList = GetParameters(elemType); elementTypeSingleParamsList.Add(new ElementOrderedParameter { ParameterName = BuiltInParameter.SYMBOL_FAMILY_AND_TYPE_NAMES_PARAM.ToString(), ParameterValue = GetSingleParameter(elemType, BuiltInParameter.SYMBOL_FAMILY_AND_TYPE_NAMES_PARAM) }); elementStructureList.Add(new ElementStructure { Element = elem, ElementType = elemType, ElementOrderedParameters = elementOrderedParamsList, ElementTypeOrderedParameters = elementTypeOrderedParamsList, ElementTypeSingleParameters = elementTypeSingleParamsList }); } NLogger.LogText("Exit ProcessElements"); return(elementStructureList); }
// Extract single parameter from element private string GetSingleParameter(Element el, BuiltInParameter parameter) { NLogger.LogText("Entered GetSingleParameter"); string parVal = ""; if (el != null) { var par = el.get_Parameter(parameter); parVal = Utility.ParameterToString(doc, par); } else { NLogger.LogText("Received Revit element family is null"); } NLogger.LogText("Exit GetSingleParameter"); return(parVal); }
/// <summary> /// Prepares Request and perform Async call to Forge /// </summary> /// <param name="path"></param> /// <param name="payload"></param> /// <param name="application"></param> /// <param name="method"></param> /// <returns></returns> public async Task <ForgeRestResponse> RequestAsync(string path, string payload, string application, Method method) { NLogger.LogText($"Entered RequestAsync with url: {Client.BaseUrl}{path}, method: {method.ToString()}, application: {application}"); if (!string.IsNullOrEmpty(payload)) { NLogger.LogText($"Entered RequestAsync with payload {payload}"); } RestRequest request = new RestRequest(path, method); request.AddParameter(application, payload, ParameterType.RequestBody); NLogger.LogText("Execute Async HTTP call"); IRestResponse response = await Client.ExecuteAsync(request); NLogger.LogText("Exit RequestAsync"); return(new ForgeRestResponse(response)); }
// Fill logs textbox with messages coming from background private void DaEvHandler_DACurrentStepHandler(object sender, string e) { NLogger.LogText("Entered DaEvHandler_DACurrentStepHandler"); // This construct is needed in order to access a Win Form control from a thread different from the UI thread BeginInvoke(new Action(() => { if (!string.IsNullOrWhiteSpace(richTextBoxLogs.Text)) { richTextBoxLogs.AppendText("\r\n" + e); } else { richTextBoxLogs.AppendText(e); } richTextBoxLogs.ScrollToCaret(); })); NLogger.LogText("Exit DaEvHandler_DACurrentStepHandler"); }
private void btnProcessElements_Click(object sender, EventArgs e) { NLogger.LogText("Enter btnProcessElements_Click"); var rowsCount = dgElements.Rows.GetRowCount(DataGridViewElementStates.Selected); // depending on Selection mode and if there are Revit selected elements in the grid, enable / disable tab ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = false; if (selMode == RevitElementSelectionMode.FromFilters) { if (rowsCount > 0) { // Retrieve from internal structure list only selected elements ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = true; tabControl1.SelectedTab = tabControl1.TabPages[tabName]; IList <string> selectedElementsIds = new List <string>(); foreach (DataGridViewRow row in dgElements.SelectedRows) { selectedElementsIds.Add(row.Cells[0].Value.ToString()); } runtimeElStructureList = elStructureList.Where(l => selectedElementsIds.Contains(l.Element.Id.ToString())).ToList(); } else { //MessageBox.Show("At least one Revit Element must be selected"); MessageBox.Show(LanguageHandler.GetString("msgBox_SelRevElement")); } } if (selMode == RevitElementSelectionMode.FromView) { ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = true; tabControl1.SelectedTab = tabControl1.TabPages[tabName]; } NLogger.LogText("Exit btnProcessElements_Click"); }
// extract parameters from element private List <ElementOrderedParameter> GetParameters(Element el) { NLogger.LogText("Entered GetParameters"); var elementParams = new List <ElementOrderedParameter>(); if (el != null) { var elParams = el.GetOrderedParameters(); // Extract all parameters for each element foreach (Parameter param in elParams) { string name = param.Definition.Name; bool transferParam = false; // Flag the parameter to be transferred to Inventor or not, based on a filtering file // TODO: MOVE FILTER OUTSIDE //if (revitFilterHandler.checkValue(name)) //{ // transferParam = true; //} var val = Utility.ParameterToString(doc, param); elementParams.Add(new ElementOrderedParameter { ParameterId = param.Id.IntegerValue, ParameterName = name, ParameterValue = val, TransferParam = transferParam }); } } else { NLogger.LogText("Received Revit element or its corresponding family is null"); } NLogger.LogText("Exit GetParameters"); return(elementParams); }
// Load the list of all Inventor files found at specified location and load them into grid private void btnBrowse_Click(object sender, EventArgs e) { NLogger.LogText("Entered btnBrowse_Click"); try { DialogResult result = folderBrowserDialogInventorTemplates.ShowDialog(); if (result == DialogResult.OK) { // Handle selected path invTemplFolder = folderBrowserDialogInventorTemplates.SelectedPath; //string selectedPath = rootPath ; txtInventorTemplatesPath.Text = invTemplFolder; // handle internal structure creation var dataSource = offsitePanelHandler.GetInvRevitMappingDataGridSource(invTemplFolder); var elementList = dataSource["InvRevMapping"]; NLogger.LogText("Fill InventorRevitMapping grid"); offsitePanelHandler.FillGrid(dgInvRevMapping, elementList); // Select first row of inventor - Revit mapping grid by default if (dgInvRevMapping.Rows.Count > 0) { dgInvRevMapping.ClearSelection(); dgInvRevMapping.Rows[0].Selected = true; } } if (result == DialogResult.Cancel) { } } catch (UIRelevantException ex) { MessageBox.Show(ex.Message); } NLogger.LogText("Exit btnBrowse_Click"); }
/// <summary> /// Prepares Request and perform Async call to Forge /// </summary> /// <param name="path"></param> /// <param name="payload"></param> /// <param name="method"></param> /// <returns></returns> public async Task <ForgeRestResponse> RequestAsync(string path, string payload, Method method) { NLogger.LogText($"Entered RequestAsync with url {Client.BaseUrl}{path}, method {method.ToString()}"); if (!string.IsNullOrEmpty(payload)) { var loggedPayload = Utility.HideTokenInJson(payload); NLogger.LogText($"Entered RequestAsync with payload {loggedPayload}"); } RestRequest request = new RestRequest(path, method); request.AddParameter("application/json", payload, ParameterType.RequestBody); NLogger.LogText("Execute Async HTTP call"); IRestResponse response = await Client.ExecuteAsync(request); NLogger.LogText("Exit RequestAsync"); return(new ForgeRestResponse(response)); }
protected ForgeClientHandler(string baseURL, string clientId, string clientSecret, string authScope) { NLogger.LogText("Entered ForgeClientHandler"); Uri baseUri = new Uri(baseURL); string domain = baseUri.GetLeftPart(UriPartial.Authority); bool isLocal = baseUri.Host.Equals("localhost", StringComparison.OrdinalIgnoreCase); Client = new RestClient(baseURL) { Authenticator = isLocal ? null : new ForgeAuthenticator(domain, clientId, clientSecret, authScope) }; //NLogger.LogText($"Set HTTP CLient timeout: {ConfigUtilities.GetAsyncHTTPCallWaitTime()} milliseconds"); NLogger.LogText($"Set HTTP CLient domain: {domain}"); NLogger.LogText($"Set HTTP CLient isLocal: {isLocal}"); //Client.Timeout = ConfigUtilities.GetAsyncHTTPCallWaitTime(); NLogger.LogText("Exit ForgeClientHandler"); }
private async void btnExportPropVals_Click(object sender, EventArgs e) { NLogger.LogText("Entered btnExportPropVals_Click"); // Check if at least one parameters mapping has been done var checkConsistency = offsitePanelHandler.CheckMappingConsistency(); if (!checkConsistency) { //MessageBox.Show("There are some missing mappings"); MessageBox.Show(LanguageHandler.GetString("msgBox_MissingMapp")); return; } // Disable the tab during DA workflow execution ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = false; ((System.Windows.Forms.Control)tabControl1.TabPages["TabSOW"]).Enabled = false; // Handle event and build json from Revit elements + Revit - Inventor mapping var daEvHandler = offsitePanelHandler.DaEventHandler; daEvHandler.DACurrentStepHandler += DaEvHandler_DACurrentStepHandler; var jsonParams = offsitePanelHandler.GetRevitPropertiesValues(runtimeElStructureList); // Call Design Automation Forge APIs via HTTP calls to trigger Inventor Cloud execution engine /*var ret = */ await offsitePanelHandler.RunDesignAutomation(jsonParams, invTemplFolder); //ret.Wait(); daEvHandler.DACurrentStepHandler -= DaEvHandler_DACurrentStepHandler; // Enable the tabs after DA workflow execution BeginInvoke(new Action(() => { ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = true; ((System.Windows.Forms.Control)tabControl1.TabPages["TabSOW"]).Enabled = true; })); NLogger.LogText("Exit btnExportPropVals_Click"); }
// Extract from returned json the hub info internal string SetHubStructure(ForgeRestResponse ret) { NLogger.LogText("Entered SetHubStructure"); string hubId = ""; string configuredHub = ConfigUtilities.GetHub(); NLogger.LogText("Parse ResponseContent"); JObject res = JObject.Parse(ret.ResponseContent); var data = res.SelectTokens("$.data").Children(); NLogger.LogText("Build bIM360DocsStructure1"); foreach (var item in data) { var name = ((string)item.SelectToken("attributes.name")) /*.Replace("\u200B", "")*/; if (name == configuredHub /*.Replace("\u200B", "")*/) { hubId = (string)item.SelectToken("id"); //bIM360DocsStructure.Hub = new Hub { Id = hubId, Name = name}; bIM360DocsStructure1.BIM360DataRows1.Add(new BIM360DocsRowStructure { Id = hubId, Name = name, Type = BIM360Type.Hub }); } } if (string.IsNullOrEmpty(hubId)) { throw new Exception($"The configured Hub '{configuredHub}' is not in the returned list"); } NLogger.LogText("Exit SetHubStructure"); return(hubId); }
private void comboBoxRevitFamilyTypes_SelectedIndexChanged(object sender, EventArgs e) { NLogger.LogText("Enter comboBoxRevitFamilies_SelectedIndexChanged"); ComboBoxRevitFamilyTypesSourceData selectedFamilyType = (ComboBoxRevitFamilyTypesSourceData)comboBoxRevitFamilyTypes.SelectedItem; if (selectedFamilyType != null) { offsitePanelHandler.FillGrid(dgElements, null); offsitePanelHandler.FillGrid(dgParamsMapping, null); offsitePanelHandler.FillGrid(dgInvRevMapping, null); txtInventorTemplatesPath.Text = ""; offsitePanelHandler.ResetRevitInventorMappingInternalStructure(); ((System.Windows.Forms.Control)tabControl1.TabPages[tabName]).Enabled = false; // Extract Revit family from revit document, based on selected xml configured element NLogger.LogText($"Revit family type selected: {selectedFamilyType.FamilyTypeName}"); Type famType = Type.GetType(selectedFamilyType.FamilyTypeInstance); //Type.GetType("Autodesk.Revit.DB.FamilyInstance,RevitAPI"); var filteredElements = offsitePanelHandler.FindInstancesOfType(famType, selectedFamilyType.IdType, selectedFamilyType.TargetCategory); var tempelStructureList = offsitePanelHandler.ProcessElements(filteredElements); elStructureList = offsitePanelHandler.FilterElements(tempelStructureList); NLogger.LogText($"Retrieved: {elStructureList.Count()} Revit elements"); // Populate the Element datagrid var dataSources = offsitePanelHandler.GetElementsDataGridSource(elStructureList); elementList = dataSources["Elements"]; offsitePanelHandler.FillGrid(dgElements, elementList); } NLogger.LogText("Exit comboBoxRevitFamilies_SelectedIndexChanged"); }