示例#1
0
 private void ShowHelp(TextWriter writer, ModeParser specifiedMode = null)
 {
     writer.WriteLine($"Canvas {GetVersion()} {Illumina.Shared.Version.VersionInfo.AssemblyCopyright}");
     writer.WriteLine();
     string modeName = specifiedMode?.Name ?? "[MODE]";
     if (specifiedMode != null)
     {
         writer.WriteLine($"{specifiedMode.Name} - {specifiedMode.Description}");
         writer.WriteLine();
     }
     writer.WriteLine($"Usage: Canvas.exe {modeName} [OPTIONS]+");
     writer.WriteLine();
     if (specifiedMode == null)
     {
         writer.WriteLine("Available modes:");
         foreach (var mode in _modeParsers.Values)
         {
             writer.WriteLine($"\t{mode.Name} - {mode.Description}");
         }
         writer.WriteLine();
     }
     writer.WriteLine("Options:");
     if (specifiedMode != null)
     {
         specifiedMode.ShowHelp(writer);
     }
     BaseOptionsParser.ShowHelp(writer);
 }
示例#2
0
        private bool HandleBaseOptions(BaseOptions baseOptions, TextWriter writer, ModeParser specifiedMode = null)
        {
            if (baseOptions.ShowHelp)
            {
                ShowHelp(writer, specifiedMode);
                return true;
            }

            if (baseOptions.ShowVersion)
            {
                ShowVersion(writer);
                return true;
            }
            return false;
        }
    public override void OnImportAsset(AssetImportContext ctx)
    {
        var lines = File.ReadAllLines(ctx.assetPath);

        int modeCoordinates    = 0;
        int maxModeCoordinates = 0;

        var coordParser = new CoordinateParser();
        var modeParser  = new ModeParser();

        MoleculeDefinition molecule = new MoleculeDefinition();

        foreach (var line in lines)
        {
            coordParser.ParseLine(molecule, line);

            modeParser.ParseLine(molecule, line);

            if (molecule.VibrationalModes.Count > 0)
            {
                var regexBond = " ! R\\d+ +R\\((\\d+),(\\d+)\\)";
                var match     = Regex.Match(line, regexBond);
                if (match.Success)
                {
                    var atom1 = int.Parse(match.Groups [1].Value) - 1;
                    var atom2 = int.Parse(match.Groups [2].Value) - 1;
                    molecule.Bonds.Add(new BondDefinition()
                    {
                        AtomIndex1 = atom1, AtomIndex2 = atom2
                    });
                }
            }
        }

        ctx.AddObjectToAsset("Data", molecule);
        ctx.SetMainObject(molecule);
    }