Code:
using NXOpen;
using NXOpen.Features;
using NXOpen.UF;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Test
{
public class Test
{
static UFSession ufSession = UFSession.GetUFSession();
public static void Main()
{
Session session = Session.GetSession();
Part workPart = session.Parts.Work;
Point3d headPoint3d = new Point3d(1, 2, 3);
Point3d headPointwcs3d = new Point3d();
headPointwcs3d = Abs2WCS(headPoint3d);
Point3d tailPoint3d = new Point3d(10,20,30);
Point3d tailPointwcs3d = new Point3d();
tailPointwcs3d = Abs2WCS(tailPoint3d);
var headPoint = workPart.Points.CreatePoint(headPointwcs3d);
var tailPoint = workPart.Points.CreatePoint(tailPointwcs3d);
AssociativeLine nullLine = null;
var associativeLineBuilder = workPart.BaseFeatures.CreateAssociativeLineBuilder(nullLine);
associativeLineBuilder.StartPointOptions = NXOpen.Features.AssociativeLineBuilder.StartOption.Point;
associativeLineBuilder.EndPointOptions = NXOpen.Features.AssociativeLineBuilder.EndOption.Point;
associativeLineBuilder.StartPoint.Value = headPoint;
associativeLineBuilder.EndPoint.Value = tailPoint;
associativeLineBuilder.Commit();
associativeLineBuilder.Destroy();
}
int GetUnloadOption(string dummy)
{
return System.Convert.ToInt32(NXOpen.Session.LibraryUnloadOption.AtTermination);
}
static Point3d Abs2WCS(Point3d inPt)
{
double[] inputArray = new double[3];
inputArray[0] = inPt.X;
inputArray[1] = inPt.Y;
inputArray[2] = inPt.Z;
double[] outputArray = new double[3];
ufSession.Csys.MapPoint(UFConstants.UF_CSYS_ROOT_COORDS, inputArray, UFConstants.UF_CSYS_ROOT_WCS_COORDS, outputArray);
Point3d outPt = new Point3d(outputArray[0], outputArray[1], outputArray[2]);
return outPt;
}
}
}