本文整理汇总了C#中XYZ.Subtract方法的典型用法代码示例。如果您正苦于以下问题:C# XYZ.Subtract方法的具体用法?C# XYZ.Subtract怎么用?C# XYZ.Subtract使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XYZ
的用法示例。
在下文中一共展示了XYZ.Subtract方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BuildOrientation3D
/// <summary>
/// Build Orientation3D object for eye point and a target point
/// </summary>
/// <param name="eyePoint"></param>
/// <param name="target"></param>
/// <returns></returns>
protected static ViewOrientation3D BuildOrientation3D(XYZ eyePoint, XYZ target)
{
var globalUp = XYZ.BasisZ;
var direction = target.Subtract(eyePoint);
var up = direction.CrossProduct(globalUp).CrossProduct(direction);
return new ViewOrientation3D(eyePoint, up, direction);
}
示例2: ModifyObjects
//.........这里部分代码省略.........
}
}
else if (hostBehavior == 0)
{
for (int i = 0; i < existingObjects.Count; i++)
{
RevitObject obj = existingObjects[i];
fi = doc.GetElement(existingElems[i]) as FamilyInstance;
// Change the family and symbol if necessary
if (fi != null && (fi.Symbol.Family.Name != symbol.Family.Name || fi.Symbol.Name != symbol.Name))
{
try
{
fi.Symbol = symbol;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
try
{
// Move family
origin = new XYZ(UnitUtils.ConvertToInternalUnits(obj.Origin.X, lengthDUT), UnitUtils.ConvertToInternalUnits(obj.Origin.Y, lengthDUT), UnitUtils.ConvertToInternalUnits(obj.Origin.Z, lengthDUT));
if (fi != null)
{
LocationPoint lp = fi.Location as LocationPoint;
if (lp != null)
{
XYZ oldLoc = lp.Point;
XYZ translation = origin.Subtract(oldLoc);
ElementTransformUtils.MoveElement(doc, fi.Id, translation);
}
}
}
catch (Exception ex)
{
TaskDialog.Show("Error", ex.Message);
}
// Rotate
if (obj.Orientation != null)
{
if (Math.Round(Math.Abs(obj.Orientation.Z - 0), 10) < double.Epsilon)
{
XYZ orientation = fi.FacingOrientation;
orientation = orientation.Multiply(-1);
XYZ incomingOrientation = new XYZ(obj.Orientation.X, obj.Orientation.Y, obj.Orientation.Z);
XYZ normalVector = new XYZ(0, -1, 0);
double currentAngle = 0;
if (orientation.X < 0 && orientation.Y < 0)
{
currentAngle = (2 * Math.PI) - normalVector.AngleTo(orientation);
}
else if (orientation.Y == 0 && orientation.X < 0)
{
currentAngle = 1.5 * Math.PI;
}
else if (orientation.X < 0)
{
currentAngle = (Math.PI - normalVector.AngleTo(orientation)) + Math.PI;
}
示例3: CreateObjects
//.........这里部分代码省略.........
sb.SetVendorId("LMNA");
// Create the field to store the data in the family
FieldBuilder guidFB = sb.AddSimpleField("InstanceID", typeof(string));
guidFB.SetDocumentation("Component instance GUID from Grasshopper");
// Create a filed to store the run number
FieldBuilder runIDFB = sb.AddSimpleField("RunID", typeof(int));
runIDFB.SetDocumentation("RunID for when multiple runs are created from the same data");
// Create a field to store the GH component nickname.
FieldBuilder nickNameFB = sb.AddSimpleField("NickName", typeof(string));
nickNameFB.SetDocumentation("Component NickName from Grasshopper");
sb.SetSchemaName("LMNAInstanceGUID");
instanceSchema = sb.Finish();
}
try
{
foreach (RevitObject obj in revitObjects)
{
FamilyInstance fi = AdaptiveComponentInstanceUtils.CreateAdaptiveComponentInstance(doc, symbol);
IList<ElementId> placePointIds = new List<ElementId>();
placePointIds = AdaptiveComponentInstanceUtils.GetInstancePlacementPointElementRefIds(fi);
for (int ptNum = 0; ptNum < obj.AdaptivePoints.Count; ptNum++)
{
try
{
ReferencePoint rp = doc.GetElement(placePointIds[ptNum]) as ReferencePoint;
XYZ pt = new XYZ(UnitUtils.ConvertToInternalUnits(obj.AdaptivePoints[ptNum].X, lengthDUT), UnitUtils.ConvertToInternalUnits(obj.AdaptivePoints[ptNum].Y, lengthDUT), UnitUtils.ConvertToInternalUnits(obj.AdaptivePoints[ptNum].Z, lengthDUT));
if (rp != null)
{
XYZ vector = pt.Subtract(rp.Position);
ElementTransformUtils.MoveElement(doc, rp.Id, vector);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
// Assign the parameters
SetParameters(fi, obj.Parameters, doc);
// Assign the GH InstanceGuid
AssignGuid(fi, uniqueId, instanceSchema, runId, nickName);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
t.Commit();
}
}
}
#endregion