SwitchAttachment(string cloneName, string revitYear) { var clone = PyRevit.GetRegisteredClone(cloneName); if (revitYear != null) { int revitYearNumber = 0; if (int.TryParse(revitYear, out revitYearNumber)) { var attachment = PyRevit.GetAttached(revitYearNumber); if (attachment != null) { if (attachment.Engine != null) { PyRevit.Attach(attachment.Product.ProductYear, clone, engineVer: attachment.Engine.Version, allUsers: attachment.AllUsers); } else { throw new pyRevitException( string.Format("Can not determine attachment engine for Revit \"{0}\"", revitYear) ); } } else { throw new pyRevitException( string.Format("Can not determine existing attachment for Revit \"{0}\"", revitYear) ); } } else { throw new pyRevitException(string.Format("Invalid Revit year \"{0}\"", revitYear)); } } else { // read current attachments and reattach using the same config with the new clone foreach (var attachment in PyRevit.GetAttachments()) { if (attachment.Engine != null) { PyRevit.Attach( attachment.Product.ProductYear, clone, engineVer: attachment.Engine.Version, allUsers: attachment.AllUsers); } else { throw new pyRevitException("Can not determine attachment engine."); } } } }
AttachClone(string cloneName, bool latest, bool dynamoSafe, string engineVersion, string revitYear, bool installed, bool attached, bool allUsers) { var clone = PyRevit.GetRegisteredClone(cloneName); // grab engine version int engineVer = 0; int.TryParse(engineVersion, out engineVer); if (latest) { logger.Debug("Attaching on latest engine..."); var latestCloneEngine = clone.GetEngines().Where(x => x.Runtime).OrderByDescending(x => x.Version).First(); logger.Debug(string.Format("Latest engine: {0}", latestCloneEngine)); if (latestCloneEngine != null) { engineVer = latestCloneEngine.Version; } else { throw new pyRevitException("Can not determine latest runtime engine for this clone."); } } else if (dynamoSafe) { logger.Debug("Attaching on dynamo-safe engine"); engineVer = PyRevitConsts.ConfigsDynamoCompatibleEnginerVer; } // decide targets revits to attach to int revitYearNumber = 0; if (installed) { foreach (var revit in RevitProduct.ListInstalledProducts()) { PyRevit.Attach(revit.ProductYear, clone, engineVer: engineVer, allUsers: allUsers); } } else if (attached) { foreach (var attachment in PyRevit.GetAttachments()) { PyRevit.Attach(attachment.Product.ProductYear, clone, engineVer: engineVer, allUsers: allUsers); } } else if (int.TryParse(revitYear, out revitYearNumber)) { PyRevit.Attach(revitYearNumber, clone, engineVer: engineVer, allUsers: allUsers); } }
AttachClone(string cloneName, bool latest, bool dynamoSafe, string engineVersion, string revitYear, bool installed, bool attached, bool allUsers) { var clone = PyRevit.GetRegisteredClone(cloneName); // grab engine version int engineVer = 0; int.TryParse(engineVersion, out engineVer); if (latest) { engineVer = 0; } else if (dynamoSafe) { engineVer = PyRevitConsts.ConfigsDynamoCompatibleEnginerVer; } // decide targets revits to attach to int revitYearNumber = 0; if (installed) { foreach (var revit in RevitProduct.ListInstalledProducts()) { PyRevit.Attach(revit.ProductYear, clone, engineVer: engineVer, allUsers: allUsers); } } else if (attached) { foreach (var attachment in PyRevit.GetAttachments()) { PyRevit.Attach(attachment.Product.ProductYear, clone, engineVer: engineVer, allUsers: allUsers); } } else if (int.TryParse(revitYear, out revitYearNumber)) { PyRevit.Attach(revitYearNumber, clone, engineVer: engineVer, allUsers: allUsers); } }