public static OpenSTAAD Connect() { OpenSTAAD OSt = null; int count = 0; try { Type ostType = Type.GetTypeFromProgID("StaadPro.OpenSTAAD"); string clsid = ostType.GUID.ToString(); string targetName = String.Format("!{0}{1}{2}", "{", clsid, "}").ToUpper(); List <Helpers.RunningObjectInfo> runningObj = Helpers.GetRunningObjectsList(); foreach (Helpers.RunningObjectInfo item in runningObj) { string candidateName = item.Name.ToUpper(); if (candidateName.StartsWith(targetName)) { OSt = item.Value as OpenSTAAD; OpenSTAAD weh = item.Value as OpenSTAAD; count++; } } if (OSt == null) { Hashtable objTab = Helpers.GetRunningObjHash(); IDictionaryEnumerator rotEnum = objTab.GetEnumerator(); while (rotEnum.MoveNext()) { string candidateName = ((string)rotEnum.Key).ToUpper(); // OSt = Marshal.BindToMoniker(candidateName) as OpenSTAAD; } } } catch (Exception ex) { Console.WriteLine("> StaadMain.cs: " + ex.ToString().Substring(0, 34)); } // return (count > 1); return(OSt); }
public StaadModel(OpenSTAAD openStaad) { this.Init(true); this.StaadWrapper = new StaadModelWrapper(openStaad); }
public StaadWrapper(OpenSTAAD Staad) { this.main = Staad; }
public StaadModel(OpenSTAAD Staad) { this.InialiseModel(); this.Staad = new StaadWrapper(Staad); }
public static OpenSTAAD GetSTAADUIInterface(string staadFilename) { OpenSTAAD osObject = null; try { Type type = Type.GetTypeFromProgID("StaadPro.OpenSTAAD"); string clsid = type.GUID.ToString(); string lookUpCandidateName = String.Format("!{0}{1}{2}", "{", clsid, "}").ToUpper(); Hashtable runningObjects = GetRunningObjectTable(); IDictionaryEnumerator rotEnumerator = runningObjects.GetEnumerator(); while (rotEnumerator.MoveNext()) { string candidateName = ((string)rotEnumerator.Key).ToUpper(); // check if its a valid STAAD file string extStr = Path.GetExtension(candidateName); if (extStr != null) { if (!String.IsNullOrEmpty(extStr)) { if (extStr == ".STD") { if (String.Compare(staadFilename.ToUpper(), candidateName.ToUpper()) == 0) { // we have a std file opened, but this can be opened by other applications also, // we need to get the staadobject to see if it is opened by STAAD osObject = System.Runtime.InteropServices.Marshal.BindToMoniker(candidateName) as OpenSTAAD; if (osObject != null) { return(osObject); } } } } } if (candidateName.StartsWith(lookUpCandidateName)) { osObject = rotEnumerator.Value as OpenSTAAD; if (osObject != null) { // get staad filename string lookupStaadFilename = ""; bool includeFullPath = true; Object oArg1 = lookupStaadFilename as object; Object oArg2 = includeFullPath as object; osObject.GetSTAADFile(ref oArg1, oArg2); lookupStaadFilename = oArg1 as string; // if (String.Compare(staadFilename.ToUpper(), lookupStaadFilename.ToUpper()) == 0) { return(osObject); } } } } // alternative 2 //OpenSTAAD osObject = System.Runtime.InteropServices.Marshal.BindToMoniker(staadFileName); } catch (COMException) { throw; } return(null); }
public StaadModelWrapper(OpenSTAAD Staad) { this.StaadInstance = Staad; }