Vector3D ParseScale(string scale, ZoneShape shape) { string[] values = scale.Split(new char[] { ',' }); if (shape == ZoneShape.Sphere && values.Length > 0) { double tempScale = ParseDouble(values[0], 1); return(new Vector3D(tempScale, tempScale, tempScale) / 1000); } else if (shape == ZoneShape.Cylinder && values.Length > 1) { double tempScale1 = ParseDouble(values[0], 1); double tempScale2 = ParseDouble(values[1], 1); return(new Vector3D(tempScale1, tempScale2, tempScale1) / 1000); } else if (values.Length > 2) { double tempScale1 = ParseDouble(values[0], 1); double tempScale2 = ParseDouble(values[1], 1); double tempScale3 = ParseDouble(values[2], 1); return(new Vector3D(tempScale1, tempScale3, tempScale2) / 1000); } return(new Vector3D(1, 1, 1)); }
public void CreateFromEmdElement(IXEP_EmdElement elem) { XEP_BaseEmdFile.CheckName(elem.Name, XEP_EmdNames.s_KeyStirrupZone); Clear(); foreach (var item in elem.Elements) { if (item.Name == XEP_EmdNames.s_KeyStirrup) { IXEP_EmdStirrupData stirrupData = XEP_EmdFactrory.CreateEmdStirrupData(); stirrupData.CreateFromEmdElement(item); Stirrups.Add(stirrupData); } else if (item.Name == XEP_EmdNames.s_KeyStirrupZoneShape) { ZoneShape.CreateFromEmdElement(item); } else { throw new InvalidOperationException("Invalid element in stirrup zone, element name: " + item.Name); } } ZoneID = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneID).GetIntValue(); Material = elem.GetAttribute(XEP_EmdFileConstants.s_RefAttributEmdTag + XEP_EmdNames.s_KeyStirrupZoneMaterial).Value; ZoneBeg = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneZoneBeg).GetDoubleValue(); ZoneEnd = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneZoneEnd).GetDoubleValue(); IsAutoCutsCalc = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneIsAutoCutsCalc).GetIntValue(); NumCutUser = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneNumCutUser).GetIntValue(); Position = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZonePosition).Value; Coeff = elem.GetAttribute(XEP_EmdNames.s_KeyStirrupZoneCoef).GetDoubleValue(); }
public void CreateFrom(IXEP_StirrupZoneIO zoneInput, double sectionPos, string matName, double zoneBeg, double zoneEnd, int zoneID) { ZoneID = zoneID; Material = matName; ZoneBeg = zoneBeg; ZoneEnd = zoneEnd; IsAutoCutsCalc = 1; NumCutUser = zoneInput.NumCut; Position = XEP_EmdNames.s_Value_ZonePosCurrent; Coeff = 4.0; ZoneShape.CreateFrom(zoneInput.Shapes); CreateStirrups(zoneInput, sectionPos); }
public IXEP_EmdElement CreateEmdElement() { IXEP_EmdElement elem = XEP_EmdFactrory.CreateEmdElement(); elem.Name = XEP_EmdNames.s_KeyStirrupZone; foreach (var item in Stirrups) { elem.Elements.Add(item.CreateEmdElement()); } elem.Elements.Add(ZoneShape.CreateEmdElement()); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZoneID, ZoneID.ToString())); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdFileConstants.s_RefAttributEmdTag + XEP_EmdNames.s_KeyStirrupZoneMaterial, Material)); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZoneZoneBeg, ZoneBeg.ToString())); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZoneZoneEnd, ZoneEnd.ToString())); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZoneIsAutoCutsCalc, IsAutoCutsCalc.ToString())); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZoneNumCutUser, NumCutUser.ToString())); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZonePosition, Position)); elem.AddAttribute(XEP_EmdFactrory.CreateEmdAttribute(XEP_EmdNames.s_KeyStirrupZoneCoef, Coeff.ToString())); return(elem); }
public IXEP_StirrupZoneIO Create(double sectionPos) { IXEP_StirrupZoneIO zoneInput = XEP_EmdFactrory.CreateStirrupZoneIO(); zoneInput.Shapes = ZoneShape.Create(); zoneInput.NumCut = NumCutUser; IXEP_EmdStirrupData nearestStirrup = FindNearestStirrup(sectionPos); if (nearestStirrup == null) { zoneInput.Spacing = 0.0; zoneInput.StirrupDiameter = 0.0; } else { zoneInput.Spacing = nearestStirrup.Dss; zoneInput.StirrupDiameter = nearestStirrup.D; } return(zoneInput); }
void SetValues(ContentBase content, TableBlock block) { string positionString = "0,0,0"; string rotationString = "0,0,0"; string shapeString = "box"; string scaleString = "1,1,1"; //get transformation of content foreach (EditorINIOption option in block.Block.Options) { if (option.Values.Count > 0) { switch (option.Name.ToLower()) { case "pos": positionString = option.Values[0].Value.ToString(); break; case "rotate": rotationString = option.Values[0].Value.ToString(); break; case "shape": shapeString = option.Values[0].Value.ToString(); break; case "size": scaleString = option.Values[0].Value.ToString(); break; } } } Vector3D position = ParsePosition(positionString); Rotation3D rotation; Vector3D scale; //set content values if (block.ObjectType == ContentType.Zone) { ZoneShape shape = ParseShape(shapeString); scale = ParseScale(scaleString, shape); rotation = ParseRotation(rotationString, shape == ZoneShape.Cylinder); ((Zone)content).Shape = shape; } else if (block.ObjectType == ContentType.LightSource) { scale = new Vector3D(1, 1, 1); rotation = ParseRotation(rotationString, false); } else { scale = new Vector3D(block.Archtype.Radius, block.Archtype.Radius, block.Archtype.Radius) / 1000; rotation = ParseRotation(rotationString, false); } content.SetDisplay(position, rotation, scale); if (selectedContent == content) { //update selection if changed content is selected SetSelectedContent(content); } }