/// <summary> /// 创建垂直尺寸 /// </summary> public static NXOpen.Tag CreatePerpendicularDim(NXOpen.Tag draw_view_tag, NXOpen.Tag o1, NXOpen.Tag o2, Snap.Position origin) { var theUFSession = NXOpen.UF.UFSession.GetUFSession(); NXOpen.UF.UFDrf.Object object1 = new NXOpen.UF.UFDrf.Object(); object1.object_tag = o1; object1.object_view_tag = draw_view_tag; object1.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object1.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; NXOpen.UF.UFDrf.Object object2 = new NXOpen.UF.UFDrf.Object(); object2.object_tag = o2; object2.object_view_tag = draw_view_tag; object2.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object2.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; NXOpen.UF.UFDrf.Text text = new NXOpen.UF.UFDrf.Text(); NXOpen.Tag result; theUFSession.Drf.CreatePerpendicularDim(ref object1, ref object2, ref text, new double[] { origin.X, origin.Y, 0 }, out result); var environmentData = new DraftingEnvironmentData(); theUFSession.Drf.AskObjectPreferences(result, environmentData.mpi, environmentData.mpr, out environmentData.radiusValue, out environmentData.diameterValue); environmentData.mpi[9] = 3; theUFSession.Drf.SetObjectPreferences(result, environmentData.mpi, environmentData.mpr, environmentData.radiusValue, environmentData.diameterValue); return(result); }
public void Test(DrawingSheet ds) { var workPart = Snap.Globals.WorkPart; var baseView = CreateTextView(ds, workPart.NXOpenPart.ModelingViews.FindObject("FRONT").Tag, new Snap.Position(110, 140)); var point = workPart.Points.FirstOrDefault(); var theUFSession = NXOpen.UF.UFSession.GetUFSession(); //创建坐标标注的原点 NXOpen.UF.UFDrf.Object object1 = new NXOpen.UF.UFDrf.Object(); object1.object_tag = point.NXOpenTag; object1.object_view_tag = baseView; object1.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object1.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; var orginTag = NXOpen.Tag.Null; theUFSession.Drf.CreateOrdorigin(ref object1, 1, 1, 2, "test", out orginTag); //创建坐标标注的尺寸边缘(留边) NXOpen.UF.UFDrf.Object object2 = new NXOpen.UF.UFDrf.Object(); Tag top = Tag.Null; theUFSession.Obj.CycleByName("TOPEDGE", ref top); object2.object_tag = top; object2.object_view_tag = baseView; object2.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object2.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; var marginTag = NXOpen.Tag.Null; theUFSession.Drf.CreateOrdmargin(1, orginTag, ref object2, null, null, 0, out marginTag); NXOpen.UF.UFDrf.Object object3 = new NXOpen.UF.UFDrf.Object(); object3.object_tag = point.NXOpenTag; object3.object_view_tag = baseView; object3.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object3.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; NXOpen.UF.UFDrf.Text text = new NXOpen.UF.UFDrf.Text(); double[] origin3d = { 10, 10, 0 }; NXOpen.Tag result; theUFSession.Drf.CreateOrddimension(marginTag, 1, ref object3, 0, 50, ref text, 2, origin3d, out result); }
/// <summary> /// 创建坐标尺寸 /// </summary> static NXOpen.Tag CreateOrddimension(int type, NXOpen.Tag baseView, NXOpen.Tag originObj, NXOpen.Tag marginObj, NXOpen.Tag dimensionObj, double dAngle = 0, double dDistance = 50, Snap.Position?origin = null) { var theUFSession = NXOpen.UF.UFSession.GetUFSession(); //创建坐标标注的原点 NXOpen.UF.UFDrf.Object object1 = new NXOpen.UF.UFDrf.Object(); object1.object_tag = originObj; object1.object_view_tag = baseView; object1.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object1.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; var orginTag = NXOpen.Tag.Null; theUFSession.Drf.CreateOrdorigin(ref object1, 1, 1, 2, "test", out orginTag); //创建坐标标注的尺寸边缘(留边) NXOpen.UF.UFDrf.Object object2 = new NXOpen.UF.UFDrf.Object(); object2.object_tag = marginObj; object2.object_view_tag = baseView; object2.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object2.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; var marginTag = NXOpen.Tag.Null; theUFSession.Drf.CreateOrdmargin(type, orginTag, ref object2, null, null, 0, out marginTag); NXOpen.UF.UFDrf.Object object3 = new NXOpen.UF.UFDrf.Object(); object3.object_tag = dimensionObj; object3.object_view_tag = baseView; object3.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object3.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; NXOpen.UF.UFDrf.Text text = new NXOpen.UF.UFDrf.Text(); double[] origin3d = (origin ?? Snap.Position.Origin).Array; NXOpen.Tag result; theUFSession.Drf.CreateOrddimension(marginTag, type, ref object3, dAngle, dDistance, ref text, 2, origin3d, out result); return(result); }
/// <summary> /// 创建垂直尺寸 /// </summary> public static NXOpen.Tag CreatePerpendicularDim(NXOpen.Tag draw_view_tag, NXOpen.Tag o1, NXOpen.Tag o2, Snap.Position origin) { var theUFSession = NXOpen.UF.UFSession.GetUFSession(); NXOpen.UF.UFDrf.Object object1 = new NXOpen.UF.UFDrf.Object(); object1.object_tag = o1; object1.object_view_tag = draw_view_tag; object1.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object1.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; NXOpen.UF.UFDrf.Object object2 = new NXOpen.UF.UFDrf.Object(); object2.object_tag = o2; object2.object_view_tag = draw_view_tag; object2.object_assoc_type = NXOpen.UF.UFDrf.AssocType.EndPoint; object2.object_assoc_modifier = NXOpen.UF.UFConstants.UF_DRF_first_end_point; NXOpen.UF.UFDrf.Text text = new NXOpen.UF.UFDrf.Text(); NXOpen.Tag result; theUFSession.Drf.CreatePerpendicularDim(ref object1, ref object2, ref text, new double[] { origin.X, origin.Y, 0 }, out result); return(result); }