// Adds the number of empty nodes to the currently active node private void CreateNewNodes(LinkNode currentNode, int number) { for (int i = 0; i < number; i++) { LinkNode node = CreateEmptyNode(currentNode); currentNode.Nodes.Add(node); } for (int i = 0; i < -number; i++) { currentNode.Nodes.RemoveAt(currentNode.Nodes.Count - 1); } int itemsCount = CommonSwOperations.GetCount(Tree.Nodes); int itemHeight = 1 + itemsCount * Tree.ItemHeight; int min = 163; int max = 600; int height = MathOps.Envelope(itemHeight, min, max); Tree.Height = height; PMTree.Height = height; currentNode.ExpandAll(); }
// Beginning method for exporting the full package public void ExportRobot(bool exportSTL = true) { //Setting up the progress bar logger.Info("Beginning the export process"); int progressBarBound = CommonSwOperations.GetCount(URDFRobot.BaseLink); iSwApp.GetUserProgressBar(out progressBar); progressBar.Start(0, progressBarBound, "Creating package directories"); //Creating package directories logger.Info("Creating package directories with name " + PackageName + " and save path " + SavePath); URDFPackage package = new URDFPackage(PackageName, SavePath); package.CreateDirectories(); URDFRobot.Name = PackageName; string windowsURDFFileName = package.WindowsRobotsDirectory + URDFRobot.Name + ".urdf"; string windowsCSVFileName = package.WindowsRobotsDirectory + URDFRobot.Name + ".csv"; string windowsPackageXMLFileName = package.WindowsPackageDirectory + "package.xml"; //Create CMakeLists logger.Info("Creating CMakeLists.txt at " + package.WindowsCMakeLists); package.CreateCMakeLists(); //Create Config joint names, not sure how this is used... logger.Info("Creating joint names config at " + package.WindowsConfigYAML); package.CreateConfigYAML(URDFRobot.GetJointNames(false)); //Creating package.xml file logger.Info("Creating package.xml at " + windowsPackageXMLFileName); PackageXMLWriter packageXMLWriter = new PackageXMLWriter(windowsPackageXMLFileName); PackageXML packageXML = new PackageXML(PackageName); packageXML.WriteElement(packageXMLWriter); //Creating RVIZ launch file Rviz rviz = new Rviz(PackageName, URDFRobot.Name + ".urdf"); logger.Info("Creating RVIZ launch file in " + package.WindowsLaunchDirectory); rviz.WriteFiles(package.WindowsLaunchDirectory); //Creating Gazebo launch file Gazebo gazebo = new Gazebo(URDFRobot.Name, PackageName, URDFRobot.Name + ".urdf"); logger.Info("Creating Gazebo launch file in " + package.WindowsLaunchDirectory); gazebo.WriteFile(package.WindowsLaunchDirectory); //Customizing STL preferences to how I want them logger.Info("Saving existing STL preferences"); SaveUserPreferences(); logger.Info("Modifying STL preferences"); SetSTLExportPreferences(); //Saving part as STL mesh AssemblyDoc assyDoc = (AssemblyDoc)ActiveSWModel; List <string> hiddenComponents = CommonSwOperations.FindHiddenComponents(assyDoc.GetComponents(false)); logger.Info("Found " + hiddenComponents.Count + " hidden components " + String.Join(", ", hiddenComponents)); logger.Info("Hiding all components"); ActiveSWModel.Extension.SelectAll(); ActiveSWModel.HideComponent2(); bool success = false; try { logger.Info("Beginning individual files export"); ExportFiles(URDFRobot.BaseLink, package, 0, exportSTL); success = true; } catch (Exception e) { logger.Error("An exception was thrown attempting to export the URDF", e); } finally { logger.Info("Showing all components except previously hidden components"); CommonSwOperations.ShowAllComponents(ActiveSWModel, hiddenComponents); logger.Info("Resetting STL preferences"); ResetUserPreferences(); } if (!success) { MessageBox.Show("Exporting the URDF failed unexpectedly. Email your maintainer " + "with the log file found at " + Logger.GetFileName()); return; } logger.Info("Writing URDF file to " + windowsURDFFileName); URDFWriter uWriter = new URDFWriter(windowsURDFFileName); URDFRobot.WriteURDF(uWriter.writer); ImportExport.WriteRobotToCSV(URDFRobot, windowsCSVFileName); logger.Info("Copying log file"); CopyLogFile(package); logger.Info("Resetting STL preferences"); ResetUserPreferences(); progressBar.End(); }