UG创建最大边界盒
Posted wangxingzhou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG创建最大边界盒相关的知识,希望对你有一定的参考价值。
1 using System;
2 using NXOpen;
3 using NXOpen.UF;
4 using System.Windows.Forms;
5
6 public class NXJournal
7 {
8 public static void Main(string[] args)
9 {
10 NXOpen.Session theSession = NXOpen.Session.GetSession();
11 NXOpen.Part workPart = theSession.Parts.Work;
12 NXOpen.Part displayPart = theSession.Parts.Display;
13 UI theUI = UI.GetUI();
14 UFSession theUfSession = UFSession.GetUFSession();
15
16
17 //第一种方法
18
19 TaggedObject tag;
20 Point3d point3d;
21
22 ////选择对象
23 theUI.SelectionManager.SelectTaggedObject("选择对象", "创建边界盒", Selection.SelectionScope.WorkPartAndOccurrence, false, true, out tag, out point3d);
24
25 ////获取对象的最大对角点
26 ////是以绝对坐标获取的最大外围,如果坐标摆斜了创建的方块就不对.
27 //double[] outlinePoint = new double[6];
28 //NXOpen.UF.UFSession.GetUFSession().Modl.AskBoundingBox(tag.Tag, outlinePoint);
29
30 ////创建一个点
31 //Point point = theSession.Parts.Work.Points.CreatePoint(new Point3d(outlinePoint[0], outlinePoint[1], outlinePoint[2]));
32 ////Point point_1 = theSession.Parts.Work.Points.CreatePoint(new Point3d(box[3], box[4], box[5]));
33
34 ////创建点特征(真正的创建)
35 //NXOpen.Features.Feature pointFeature = null;
36 //NXOpen.Features.PointFeatureBuilder pointFeatureBuilder = theSession.Parts.Work.BaseFeatures.CreatePointFeatureBuilder(pointFeature);
37 //pointFeatureBuilder.Point = point;
38 //pointFeatureBuilder.Commit();
39 //pointFeatureBuilder.Destroy();
40
41 //////创建最大外围盒
42 ////NXOpen.Features.Block block = null;
43 ////NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder;
44 ////blockFeatureBuilder = theSession.Parts.Work.Features.CreateBlockFeatureBuilder(block);
45
46 ////blockFeatureBuilder.SetTwoDiagonalPoints
47 //// (new Point3d(outlinePoint[0], outlinePoint[1], outlinePoint[2]), new Point3d(outlinePoint[3], outlinePoint[4], outlinePoint[5]));
48
49 ////block = (NXOpen.Features.Block)blockFeatureBuilder.Commit();
50 ////blockFeatureBuilder.Destroy();
51
52 //////设置块的名称
53 ////block.SetName("rrr");
54 //////取消或设置高亮
55 ////NXOpen.UF.UFSession.GetUFSession().Disp.SetHighlight(tag.Tag, 0);
56
57
58 //第二种方法
59 //按wcs坐标系
60 Tag UFWcs;//
61 NXOpen.UF.UFSession.GetUFSession().Csys.AskWcs(out UFWcs);
62 Tag wcs = theSession.Parts.Work.WCS.CoordinateSystem.Tag;
63
64 bool expand = true;
65 double[] min_corner = new double[3]; //角落点
66 double[,] directions = new double[3,3];//方向
67 double[] distances = new double[3];//xyz最大距离
68 NXOpen.UF.UFSession.GetUFSession().Modl.AskBoundingBoxAligned
69 (tag.Tag, wcs, expand, min_corner, directions, distances);
70
71
72 //创建最大外围盒
73 NXOpen.Features.Block block = null;
74 NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder;
75 blockFeatureBuilder = theSession.Parts.Work.Features.CreateBlockFeatureBuilder(block);
76
77 blockFeatureBuilder.SetOriginAndLengths
78 (new Point3d(min_corner[0], min_corner[1], min_corner[2]),
79 distances[0].ToString(), distances[1].ToString(), distances[2].ToString());
80
81 block = (NXOpen.Features.Block)blockFeatureBuilder.Commit();
82 blockFeatureBuilder.Destroy();
83
84
85 //取消或设置高亮
86 NXOpen.UF.UFSession.GetUFSession().Disp.SetHighlight(tag.Tag, 0);
87
88
89 //第3种方法
90
91 // NXOpen.UF.UFSession.GetUFSession().Modl.AskBoundingBoxExact(tag.Tag,theSession.Parts.Work.WCS.Tag,)
92
93 }
94 public static int GetUnloadOption(string dummy) { return (int)NXOpen.Session.LibraryUnloadOption.Immediately; }
95 }
以上是关于UG创建最大边界盒的主要内容,如果未能解决你的问题,请参考以下文章
UG中通过API如何在装配环境下获取组件的包容盒(bounding box)