public static Snap.NX.NXObject GetViewBorder(EdmDraw.ViewBorderType borderType, NXOpen.Drawings.DraftingView view) { Snap.NX.NXObject result = null; Snap.Position viewCenterPoint = view.GetDrawingReferencePoint(); var viewBorderSize = view.GetBorderSize(); switch (borderType) { case EdmDraw.ViewBorderType.Right: { Snap.Position xLeft = viewCenterPoint; xLeft.X += viewBorderSize.X / 2; xLeft.Y += viewBorderSize.Y / 2; Snap.Position xRight = viewCenterPoint; xRight.X += viewBorderSize.X / 2; xRight.Y -= viewBorderSize.Y / 2; result = CreateNxObject <Snap.NX.Line>(() => { return(Snap.Create.Line(xLeft, xRight)); }, view.Tag, false); break; } case EdmDraw.ViewBorderType.Top: { Snap.Position xLeft = viewCenterPoint; xLeft.X -= viewBorderSize.X / 2; xLeft.Y += viewBorderSize.Y / 2; Snap.Position xRight = viewCenterPoint; xRight.X += viewBorderSize.X / 2; xRight.Y += viewBorderSize.Y / 2; result = CreateNxObject <Snap.NX.Line>(() => { return(Snap.Create.Line(xLeft, xRight)); }, view.Tag, false); break; } } return(result); }
protected override Snap.NX.Face GetTopFace() { var faceDirection = BaseFace.GetFaceDirection(); var faces = ElecBody.Faces.ToList(); var topFace = faces.Where(u => u.IsHasAttr(ELEC_BASE_BOTTOM_FACE)).FirstOrDefault(); if (topFace == null) { var topFaces = faces.Where(u => u.ObjectSubType == Snap.NX.ObjectTypes.SubType.FacePlane).Where(u => SnapEx.Helper.Equals(-faceDirection, u.GetFaceDirection())).ToList(); topFace = topFaces.FirstOrDefault(); if (topFaces.Count > 1) { var basePlane = BaseFace as Snap.NX.Face.Plane; var baseOrigin = basePlane.Geometry.Origin; var baseFaceBox = BaseFace.Box; var baseCenterPoint = new Snap.Position((baseFaceBox.MaxX + baseFaceBox.MinX) / 2, (baseFaceBox.MaxY + baseFaceBox.MinY) / 2, (baseFaceBox.MaxZ + baseFaceBox.MinZ) / 2); topFaces.ForEach(u => { var uBox = u.Box; var uCenterPoint = new Snap.Position((uBox.MaxX + uBox.MinX) / 2, (uBox.MaxY + uBox.MinY) / 2, (uBox.MaxZ + uBox.MinZ) / 2); if (SnapEx.Helper.Equals(u.GetFaceDirection(), Snap.Vector.Unit(uCenterPoint - baseCenterPoint), SnapEx.Helper.Tolerance)) { topFace = u; return; } }); } } TopFace = topFace; return(topFace); }
/// <summary> /// 获取对角线 /// </summary> static Snap.NX.Line GetDiagonalLine(Snap.NX.Body body, out Snap.NX.Face baseFace) { Snap.NX.Line result = null; var workPart = Snap.Globals.WorkPart; var box = body.Box; var p2 = new Snap.Position((box.MaxX + box.MinX) / 2, (box.MaxY + box.MinY) / 2); var lines = new List <NXOpen.NXObject>(); if (!string.IsNullOrEmpty(body.Name)) { lines = workPart.NXOpenPart.Layers.GetAllObjectsOnLayer(body.Layer).Where(l => l is NXOpen.Line).ToList(); lines.ToList().ForEach(u => { Snap.NX.Line line = u as NXOpen.Line; bool isRemove = true; if (Snap.Compute.Distance(line, body) < SnapEx.Helper.Tolerance) { var p1 = (line.StartPoint + line.EndPoint) / 2; p2.Z = p1.Z; if (SnapEx.Helper.Equals(p1, p2, SnapEx.Helper.Tolerance)) { isRemove = false; } } if (isRemove) { lines.Remove(u); } }); } GetBaseFace(body, Enumerable.Select(lines, u => Snap.NX.Line.Wrap(u.Tag)).ToList(), out baseFace, out result); return(result); }
public static Snap.Position?GetElecMidPosition(Snap.NX.Part workPart, Snap.NX.Body body) { Snap.Position?result = null; var point = GetElecMidPointInPart(workPart, body); if (point == null) { var name = GetStringAttribute(body, SnapEx.EactConstString.EACT_ELECT_GROUP); if (!string.IsNullOrEmpty(name)) { if (body.NXOpenBody.OwningComponent != null && body.OwningComponent.Prototype != null) { var part = body.OwningComponent.Prototype; Snap.NX.Point oldPoint = GetElecMidPointInPart(part, body); if (oldPoint != null) { var oldPosition = new Snap.Position(oldPoint.X, oldPoint.Y, oldPoint.Z); var vCom = Snap.Vector.Unit(body.OwningComponent.Orientation.AxisZ); var v2 = new Snap.Vector(oldPosition); Snap.Position newPosition = body.OwningComponent.Position - (vCom + v2); result = newPosition; } } } } else { result = point.Position; } return(result); }
/// <summary> /// 获取对角线 /// </summary> Snap.NX.Line GetDiagonalLine(Snap.NX.Body body) { Snap.NX.Line result = null; var workPart = Snap.Globals.WorkPart; var box = body.Box; var p2 = new Snap.Position((box.MaxX + box.MinX) / 2, (box.MaxY + box.MinY) / 2); if (!string.IsNullOrEmpty(body.Name)) { var lines = workPart.NXOpenPart.Layers.GetAllObjectsOnLayer(body.Layer).Where(l => l is NXOpen.Line).ToList(); lines.ForEach(u => { Snap.NX.Line line = u as NXOpen.Line; var p1 = (line.StartPoint + line.EndPoint) / 2; p2.Z = p1.Z; if (SnapEx.Helper.Equals(p1, p2, JYElecHelper._tolerance)) { result = line; return; } }); } return(result); }
/// <summary> /// 创建注释 /// </summary> public static NXOpen.Tag CreateNode(string text, Snap.Position origin) { var result = NXOpen.Tag.Null; if (!EDMTableInfo.IsHasChinese(text)) { var theUFSession = NXOpen.UF.UFSession.GetUFSession(); theUFSession.Drf.CreateNote(1, new string[] { text }, origin.Array, 0, out result); } else { Session theSession = Session.GetSession(); Part workPart = theSession.Parts.Work; Part displayPart = theSession.Parts.Display; NXOpen.Annotations.SimpleDraftingAid nullAnnotations_SimpleDraftingAid = null; NXOpen.Annotations.DraftingNoteBuilder draftingNoteBuilder1; draftingNoteBuilder1 = workPart.Annotations.CreateDraftingNoteBuilder(nullAnnotations_SimpleDraftingAid); draftingNoteBuilder1.Origin.OriginPoint = origin; draftingNoteBuilder1.Origin.Anchor = NXOpen.Annotations.OriginBuilder.AlignmentPosition.MidCenter; draftingNoteBuilder1.Text.SetEditorText(new string[] { text }); var obj = draftingNoteBuilder1.Commit() as NXOpen.Annotations.Note; draftingNoteBuilder1.Destroy(); result = obj == null ? NXOpen.Tag.Null : obj.Tag; } return(result); }
/// <summary> /// 创建标签 /// </summary> public static NXOpen.Tag CreateLabel(string text, Snap.Position origin, Snap.Position pos, NXOpen.Tag view, NXOpen.Tag objectTag) { NXOpen.Tag result = NXOpen.Tag.Null; var theUFSession = NXOpen.UF.UFSession.GetUFSession(); NXOpen.UF.UFDrf.Object object1 = new NXOpen.UF.UFDrf.Object(); object1.object_tag = objectTag; object1.object_view_tag = view; object1.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object1.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; theUFSession.Drf.CreateLabel(1, new string[] { text }, origin.Array, NXOpen.UF.UFDrf.LeaderAttachType.LeaderAttachObject, ref object1, pos.Array, out result); var eData = new DraftingEnvironmentData(); var mpi = eData.mpi; var mpr = eData.mpr; theUFSession.Drf.AskObjectPreferences(result, eData.mpi, eData.mpr, out eData.radiusValue, out eData.diameterValue); mpi[1] = 1; mpi[9] = 1; mpi[10] = 2; mpi[11] = 4; mpi[29] = 1; mpi[39] = 1; mpi[94] = 0; mpr[9] = 3.0; mpr[10] = 0.001; theUFSession.Drf.SetObjectPreferences(result, eData.mpi, eData.mpr, eData.radiusValue, eData.diameterValue); return(result); }
/// <summary> /// 创建ID符号 /// </summary> public static NXOpen.Tag CreateIdSymbol(string text, Snap.Position origin, Snap.Position pos, NXOpen.Tag view, NXOpen.Tag objectTag) { var theUFSession = NXOpen.UF.UFSession.GetUFSession(); var dd = new NXOpen.UF.UFDrf.SymbolPreferences(); theUFSession.Drf.AskSymbolPreferences(ref dd); dd.id_symbol_size = 6; theUFSession.Drf.SetSymbolPreferences(ref dd); NXOpen.UF.UFDrf.Object object1 = new NXOpen.UF.UFDrf.Object(); object1.object_tag = objectTag; object1.object_view_tag = view; object1.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object1.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; var result = NXOpen.Tag.Null; theUFSession.Drf.CreateIdSymbol(NXOpen.UF.UFDrf.IdSymbolType.SymCircle, text, "", origin.Array, NXOpen.UF.UFDrf.LeaderMode.WithLeader, NXOpen.UF.UFDrf.LeaderAttachType.LeaderAttachObject, ref object1, pos.Array, out result ); return(result); }
public static bool Equals(Snap.Position v1, Snap.Position v2, double tolerance) { if (Math.Abs((v1.X - v2.X)) < tolerance && Math.Abs((v1.Y - v2.Y)) < tolerance && Math.Abs((v1.Z - v2.Z)) < tolerance) { return(true); } return(false); }
/// <summary> /// 创建注释 /// </summary> public static NXOpen.Tag CreateNode(string text, Snap.Position origin) { var theUFSession = NXOpen.UF.UFSession.GetUFSession(); var result = NXOpen.Tag.Null; theUFSession.Drf.CreateNote(1, new string[] { text }, origin.Array, 0, out result); return(result); }
/// <summary> /// 创建对勾 /// </summary> public static void CreateTick(Snap.Position pos) { var dis = 3; var vector1 = Snap.Vector.Unit(new Snap.Vector(-1, 1, 0)); var vector2 = Snap.Vector.Unit(new Snap.Vector(1, 1, 0)); CreateNxObject(() => { return(Snap.Create.Line(pos, pos + dis * vector1)); }, NXOpen.Tag.Null, false).IsHidden = false; CreateNxObject(() => { return(Snap.Create.Line(pos, pos + (dis * 1.5) * vector2)); }, NXOpen.Tag.Null, false).IsHidden = false; }
public static Snap.Position MapModelToDrawing(NXOpen.Tag viewTag, Snap.Position pos) { var tempMap = new double[] { 0, 0 }; var ufSession = NXOpen.UF.UFSession.GetUFSession(); ufSession.View.MapModelToDrawing(viewTag, pos.Array, tempMap); var originPointMTD = tempMap.ToArray(); return(new Snap.Position(originPointMTD[0], originPointMTD[1])); }
/// <summary> /// 设置非切削移动区域起点 /// </summary> public static void SetRegionStartPoints(NXOpen.Tag operTag, Snap.Position pos) { var oper = NXOpen.Utilities.NXObjectManager.Get(operTag) as NXOpen.CAM.Operation; var workPart = NXOpen.Session.GetSession().Parts.Work; var cavityMillingBuilder1 = workPart.CAMSetup.CAMOperationCollection.CreatePlanarMillingBuilder(oper); var point = workPart.Points.CreatePoint(pos); cavityMillingBuilder1.NonCuttingBuilder.SetRegionStartPoints(new Point[] { point }); cavityMillingBuilder1.Commit(); cavityMillingBuilder1.Destroy(); }
public static void WriteLine(Snap.Position[] myPositionArray, int paddedWidth = 20) { int length = myPositionArray.Length; for (int i = 0; i < length; i++) { Snap.Position position = myPositionArray[i]; Write(position.ToString().PadRight(paddedWidth)); } Write("\n"); }
/// <summary> /// 创建智能曲线 /// </summary> public static NXOpen.Tag Create_SO_Curve(Snap.Position pos, Snap.Position pos1) { NXOpen.Tag result; var workPart = NXOpen.Session.GetSession().Parts.Work; var pointLst = new List <NXOpen.Tag>(); pointLst.Add(Create_SO_Point(pos)); pointLst.Add(Create_SO_Point(pos1)); ufSession.So.CreateLineTwoPoints(workPart.Tag, NXOpen.UF.UFSo.UpdateOption.UpdateAfterModeling, pointLst.ToArray(), out result); ufSession.So.SetVisibilityOption(result, NXOpen.UF.UFSo.VisibilityOption.Invisible); return(result); }
/// <summary> /// 获取对角线 /// </summary> static Snap.NX.Line GetDiagonalLine(Snap.NX.Body body, out Snap.NX.Face baseFace) { Snap.NX.Line result = null; baseFace = null; var workPart = Snap.Globals.WorkPart; var box = body.Box; var p2 = new Snap.Position((box.MaxX + box.MinX) / 2, (box.MaxY + box.MinY) / 2, (box.MaxZ + box.MinZ) / 2); var lines = new List <Snap.NX.Line>(); if (!string.IsNullOrEmpty(body.Name)) { lines = workPart.NXOpenPart.Layers.GetAllObjectsOnLayer(body.Layer).ToArray().Where(u => u is NXOpen.Line).Select(u => Snap.NX.Line.Wrap(u.Tag)).ToList(); foreach (var line in lines.ToList()) { if (!Entry.Instance.IsDistinguishSideElec) { var p1 = (line.StartPoint + line.EndPoint) / 2; var tempVec = p1 - p2; var tempOri = Snap.Globals.Wcs.Orientation.AxisZ; if (( SnapEx.Helper.Equals(tempVec, tempOri, SnapEx.Helper.Tolerance) || SnapEx.Helper.Equals(tempVec, -tempOri, SnapEx.Helper.Tolerance) || SnapEx.Helper.Equals(p1, p2, SnapEx.Helper.Tolerance) ) && Snap.Compute.Distance(line, body) < SnapEx.Helper.Tolerance ) { } else { lines.Remove(line); } } else { if (Snap.Compute.Distance(line, body) < SnapEx.Helper.Tolerance) { } else { lines.Remove(line); } } } } if (lines.Count > 0) { GetBaseFace(body, lines, out baseFace, out result); } return(result); }
public static void WriteLine(Snap.Position[,] myPositionArray, int paddedWidth = 20) { int length = myPositionArray.GetLength(0); int num2 = myPositionArray.GetLength(1); for (int i = 0; i < length; i++) { for (int j = 0; j < num2; j++) { Snap.Position position = myPositionArray[i, j]; Write(position.ToString().PadRight(paddedWidth)); } Write("\n"); } }
public List <AB> GetABList(Snap.Position p, Snap.Vector pV) { var list = GetABList(); list = Business.OrderProbeDataAB(list, p, pV); var tempList = list.Where(u => u.A == 0 && u.B == 0).ToList(); tempList.ForEach(u => { list.Remove(u); }); tempList.ForEach(u => { list.Insert(0, u); }); return(list); }
/// <summary> /// 创建智能点 /// </summary> public static NXOpen.Tag Create_SO_Point(Snap.Position pos) { NXOpen.Tag result; var scalarDoubleLst = new List <NXOpen.Tag>(); NXOpen.Tag scalarDouble; var workPart = NXOpen.Session.GetSession().Parts.Work; ufSession.So.CreateScalarDouble(workPart.Tag, NXOpen.UF.UFSo.UpdateOption.UpdateAfterModeling, pos.X, out scalarDouble); scalarDoubleLst.Add(scalarDouble); ufSession.So.CreateScalarDouble(workPart.Tag, NXOpen.UF.UFSo.UpdateOption.UpdateAfterModeling, pos.Y, out scalarDouble); scalarDoubleLst.Add(scalarDouble); ufSession.So.CreateScalarDouble(workPart.Tag, NXOpen.UF.UFSo.UpdateOption.UpdateAfterModeling, pos.Z, out scalarDouble); scalarDoubleLst.Add(scalarDouble); ufSession.So.CreatePoint3Scalars(workPart.Tag, NXOpen.UF.UFSo.UpdateOption.UpdateAfterModeling, scalarDoubleLst.ToArray(), out result); return(result); }
/// <summary> /// 设置加工底面 /// </summary> public static void SetCutFloor(NXOpen.Tag operTag, Snap.Position origin, NXOpen.Tag faceTag = NXOpen.Tag.Null) { NXOpen.Tag result; if (NXOpen.Tag.Null == faceTag) { var identity = Snap.Orientation.Identity; NXOpen.Tag xforms; ufSession.So.CreateXformDoubles(Snap.Globals.WorkPart.NXOpenTag, NXOpen.UF.UFSo.UpdateOption.UpdateWithinModeling, origin.Array, identity.AxisX.Array, identity.AxisY.Array, 1, out xforms); result = xforms; } else { result = faceTag; } ufSession.Param.SetTagValue(operTag, NXOpen.UF.UFConstants.UF_PARAM_FLOOR, result); }
/// <summary> /// 设置边界 /// </summary> public static void SetBoundary(Snap.Position origin, NXOpen.Tag faceTag, NXOpen.UF.CamGeomType camGeomType, NXOpen.Tag operTag, NXOpen.UF.CamMaterialSide materialSide) { SetBoundaryByFace(faceTag, camGeomType, operTag, materialSide); IntPtr[] Boundaries; int count; ufSession.Cambnd.AskBoundaries(operTag, camGeomType, out count, out Boundaries); for (int i = 0; i < count; i++) { NXOpen.Matrix3x3 identity = Snap.Orientation.Identity; ufSession.Cambnd.SetBoundaryPlane(Boundaries[i], origin.Array, new double[] { identity.Xx, identity.Xy, identity.Xz , identity.Yx, identity.Yy, identity.Yz , identity.Zx, identity.Zy, identity.Zz }); } }
/// <summary> /// 设置边界 /// </summary> public void SetBoundary(ElecManage.Electrode electrode) { List <NXOpen.Tag> peripheral = new List <NXOpen.Tag>(); var box3d = electrode.ElecBody.Box; var p1 = new Snap.Position(box3d.MinX, box3d.MaxY, box3d.MaxZ); var p2 = new Snap.Position(box3d.MinX, box3d.MinY, box3d.MaxZ); var p3 = new Snap.Position(box3d.MaxX, box3d.MinY, box3d.MaxZ); var p4 = new Snap.Position(box3d.MaxX, box3d.MaxY, box3d.MaxZ); var workPart = NXOpen.Session.GetSession().Parts.Work; peripheral.Add(Helper.Create_SO_Curve(p1, p2)); peripheral.Add(Helper.Create_SO_Curve(p2, p3)); peripheral.Add(Helper.Create_SO_Curve(p3, p4)); peripheral.Add(Helper.Create_SO_Curve(p4, p1)); Helper.SetBoundaryByCurves( peripheral.ToList() , NXOpen.UF.CamGeomType.CamBlank, OperTag, NXOpen.UF.CamMaterialSide.CamMaterialSideInLeft); }
/// <summary> /// 获取基准角 /// </summary> public static Snap.NX.Face GetBaseCornerFace(Snap.Position startPoint, Snap.Position endPoint, Snap.NX.Body body) { Snap.NX.Face result = null; Snap.Position basePoint = (startPoint + endPoint) / 2; Snap.NX.Face baseFace = GetBaseFace(startPoint, endPoint, body); var faces = body.Faces.ToList(); if (baseFace != null) { faces.Remove(baseFace); var baseFaceDir = new Snap.Orientation(baseFace.GetFaceDirection()); var tempFaces = new List <Snap.NX.Face>(); faces.Where(u => u.ObjectSubType == Snap.NX.ObjectTypes.SubType.FacePlane).ToList().ForEach(u => { var director = u.GetFaceDirection(); var angle = Snap.Vector.Angle(baseFaceDir.AxisX, director); if (Math.Abs(angle - 45) < _tolerance || Math.Abs(angle - 135) < _tolerance ) { tempFaces.Add(u); } }); if (tempFaces.Count > 1) { tempFaces.RemoveAll(u => u.Box.MaxZ <= basePoint.Z); } if (tempFaces.Count > 0) { result = tempFaces.FirstOrDefault(); } } return(result); }
/// <summary> /// 获取所有的电极头部面 /// </summary> protected static List <Snap.NX.Face> GetElecHeadFaces(List <Snap.NX.Face> faces, Snap.NX.Face baseFace, out List <Snap.NX.Face> sideFaces) { var headFaces = new List <Snap.NX.Face>(); var tempSideFaces = new List <Snap.NX.Face>(); if (baseFace != null) { //头部面 var allFace = faces.ToList(); var baseFaceBoxUV = baseFace.BoxUV; var elecBasePos = baseFace.Position((baseFaceBoxUV.MinU + baseFaceBoxUV.MaxU) / 2, (baseFaceBoxUV.MinV + baseFaceBoxUV.MaxV) / 2); allFace.RemoveAll(u => u.NXOpenTag == baseFace.NXOpenTag); var faceDirection = baseFace.GetFaceDirection(); var plane = new Snap.Geom.Surface.Plane(elecBasePos, faceDirection); allFace.ToList().ForEach(u => { try { var uv = u.BoxEx(); var cneterPoint = new Snap.Position((uv.MaxX + uv.MinX) / 2, (uv.MaxY + uv.MinY) / 2, (uv.MaxZ + uv.MinZ) / 2); var resullt = Snap.Compute.ClosestPoints(cneterPoint, plane); var dir = Snap.Vector.Unit(resullt.Point1 - resullt.Point2); if (SnapEx.Helper.Equals(dir, faceDirection)) { headFaces.Add(u); } else if (u.ObjectSubType == Snap.NX.ObjectTypes.SubType.FacePlane && SnapEx.Helper.Equals(dir, -faceDirection)) { tempSideFaces.Add(u); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }); } sideFaces = tempSideFaces; return(headFaces); }
public static Snap.NX.Point GetElecMidPoint(Snap.NX.Part workPart, Snap.NX.Body body) { var point = GetElecMidPointInPart(workPart, body); if (point == null) { var name = GetStringAttribute(body, SnapEx.EactConstString.EACT_ELECT_GROUP); if (!string.IsNullOrEmpty(name)) { if (body.NXOpenBody.OwningComponent != null && body.OwningComponent.Prototype != null) { var part = body.OwningComponent.Prototype; Snap.NX.Point oldPoint = GetElecMidPointInPart(part, body); if (oldPoint != null) { SnapEx.Create.ExtractObject(new List <NXOpen.NXObject> { oldPoint }, workPart.FullPath, false, false); oldPoint = GetElecMidPointInPart(workPart, body); if (oldPoint != null) { var oldPosition = new Snap.Position(oldPoint.X, oldPoint.Y, oldPoint.Z); var vCom = Snap.Vector.Unit(body.OwningComponent.Orientation.AxisZ); var v2 = new Snap.Vector(oldPosition); Snap.Position newPosition = body.OwningComponent.Position - (vCom + v2); oldPoint.X = newPosition.X; oldPoint.Y = newPosition.Y; oldPoint.Z = newPosition.Z; point = oldPoint; } } } } } else { point = point.Copy(); } return(point); }
/// <summary> /// 获取基准面 /// </summary> public static Snap.NX.Face GetBaseFace(Snap.Position startPoint, Snap.Position endPoint, Snap.NX.Body body) { Snap.Position basePoint = (startPoint + endPoint) / 2; Snap.NX.Face baseFace = null; var faces = body.Faces.ToList(); faces.ForEach(u => { var box = u.BoxUV; var p1 = u.Position((box.MinU + box.MaxU) / 2, (box.MaxV + box.MinV) / 2); if (SnapEx.Helper.Equals(p1, basePoint, _tolerance)) { baseFace = u; return; } }); return(baseFace); }
/// <summary> /// 创建表格 /// </summary> public static void CreateTabnot(Snap.Position origin, int rowCount, int columnCount, double columnWidth, double rowHeight) { var workPart = Snap.Globals.WorkPart.NXOpenPart; var theUFSession = NXOpen.UF.UFSession.GetUFSession(); var tabnot = theUFSession.Tabnot; //var section_prefs = new NXOpen.UF.UFTabnot.SectionPrefs(); //theUFSession.Tabnot.AskDefaultSectionPrefs(out section_prefs); //section_prefs.border_width = 60; //var tabular_note = NXOpen.Tag.Null; //theUFSession.Tabnot.Create(ref section_prefs, origin.Array, out tabular_note); //var tabel=NXOpen.Utilities.NXObjectManager.Get(tabular_note) as NXOpen.Annotations.Table; var tableSectionBuilder1 = workPart.Annotations.TableSections.CreateTableSectionBuilder(null); tableSectionBuilder1.NumberOfRows = rowCount; tableSectionBuilder1.NumberOfColumns = columnCount; tableSectionBuilder1.ColumnWidth = columnWidth; tableSectionBuilder1.RowHeight = rowHeight; tableSectionBuilder1.Origin.OriginPoint = origin; tableSectionBuilder1.Commit(); tableSectionBuilder1.Destroy(); }
/// <summary> /// 获取象限类型 /// </summary> public static QuadrantType GetQuadrantType(Snap.Position position, Snap.Position center, Snap.Orientation orientation) { QuadrantType type = QuadrantType.First; var x = position.X - center.X; var y = position.Y - center.Y; if (x > 0 && y > 0) //第一象限 { type = QuadrantType.First; } else if (x < 0 && y > 0) //第二象限 { type = QuadrantType.Second; } else if (x < 0 && y < 0) //第三象限 { type = QuadrantType.Three; } else //第四象限 { type = QuadrantType.Four; } return(type); }
public static void WriteLine(Snap.Position myPosition) { Write(myPosition.ToString()); Write("\n"); }
void FrmTool_Load(object sender, EventArgs e) { var theSession = NXOpen.Session.GetSession(); var workPart = theSession.Parts.Work; if (workPart == null) { MessageBox.Show("未打开部件!"); Close(); return; } var list = new List <JYElecInfo>(); Snap.Globals.WorkPart.Bodies.ToList().ForEach(u => { if (JYElecHelper.IsElec(u) && !string.IsNullOrEmpty(u.Name)) { var lines = new List <Snap.NX.Line>(); var allObjects = workPart.Layers.GetAllObjectsOnLayer(u.Layer).Where(l => l is NXOpen.Line).ToList(); var box = u.Box; var p2 = new Snap.Position((box.MaxX + u.Box.MinX) / 2, (box.MaxY + box.MinY) / 2, 0); allObjects.ForEach(a => { Snap.NX.Line l = a as NXOpen.Line; var p1 = (l.StartPoint + l.EndPoint) / 2; p2.Z = p1.Z; if (SnapEx.Helper.Equals(p1, p2, JYElecHelper._tolerance)) { lines.Add(l); return; } }); var basePoint = new Snap.Position(); if (lines.Count > 0) { var line = lines.First(); basePoint = (line.StartPoint + line.EndPoint) / 2; } var mainElec = list.FirstOrDefault(m => m.ElecName == u.Name); if (mainElec == null) { mainElec = new JYElecInfo(); mainElec.ElecName = u.Name; mainElec.ELEC_FINISH_NUMBER = (int)JYElecHelper.GetAttrValue(u, JYElecConst.ELEC_FINISH_NUMBER); mainElec.ELEC_MIDDLE_NUMBER = (int)JYElecHelper.GetAttrValue(u, JYElecConst.ELEC_MIDDLE_NUMBER); mainElec.ELEC_ROUGH_NUMBER = (int)JYElecHelper.GetAttrValue(u, JYElecConst.ELEC_ROUGH_NUMBER); mainElec.ELEC_FINISH_SPACE = (double)JYElecHelper.GetAttrValue(u, JYElecConst.ELEC_FINISH_SPACE); mainElec.ELEC_MIDDLE_SPACE = (double)JYElecHelper.GetAttrValue(u, JYElecConst.ELEC_MIDDLE_SPACE); mainElec.ELEC_ROUGH_SPACE = (double)JYElecHelper.GetAttrValue(u, JYElecConst.ELEC_ROUGH_SPACE); list.Add(mainElec); } if (lines.Count > 0) { var pInfo = mainElec.PositioningInfos.FirstOrDefault(); var info = new JYPositioningInfo(); info.X = basePoint.X; info.Y = basePoint.Y; info.Z = basePoint.Z; info.NXObjects.Add(u); info.NXObjects.Add(lines.FirstOrDefault().NXOpenLine); var infoStartPoint = lines.First().StartPoint; var infoEndPoint = lines.First().EndPoint; info.Lines.Add(infoStartPoint); info.Lines.Add(infoEndPoint); info.FaceDir = JYElecHelper.GetBaseFace(lines.First().StartPoint, lines.First().EndPoint, u).GetFaceDirection(); if (pInfo != null) { var startPoint = pInfo.Lines.First(); var endPoint = pInfo.Lines.Last(); info.Rotation = Snap.Vector.Angle(endPoint - startPoint, infoStartPoint - infoEndPoint); } mainElec.PositioningInfos.Add(info); } } }); gridControl1.DataSource = list; ; }