大家好,今天要介绍ug二次开发过程中的一个叫超级点的控件,这个控件有一些和大家之前使用的不太一样的地方,看了这篇文章会节省很多自己去研究的时间。
超级点控件如上图所示,
在使用过程中,大家可能习惯通过下面的方式,获取选中内容的Tag值:
TaggedObject[] taggeds = SelectPoints.GetSelectedObjects();
但是会发现获取的值永远都是一个,无论选择了多少内容,这个可能是官方在设计这个控件的时候就和其他控件设计的不一样,所以无法通过上面的方法获取想要的内容。
下面直接讲如何获取里面所有点位:
int S= theUI.SelectionManager.GetNumSelectedObjects();
for (int i = 0; i < S; i++)
{
TaggedObject tagged = theUI.SelectionManager.GetSelectedTaggedObject(i);
Debug.Print(tagged.Tag+ tagged.GetType().ToString());
double[] pointdata = new double[3];
theUfSession.Curve.AskPointData(tagged.Tag, pointdata);
Debug.Print(pointdata[0]+"+"+ pointdata[1]+ "+" + pointdata[2]);
}
首先要知道几个方法的意思:
(1)theUI.SelectionManager.GetNumSelectedObjects(),这个方法表示获取选中对象的数量。
(2)theUfSession.Curve.AskPointData()这个方法的含义如下所示:
Defined in: uf_curve.h
Overview
Returns the coordinates for the specified object identifier of a point.
Environment
Internal and External
Required License(s)
gateway
int UF_CURVE_ask_point_data
(
tag_t point,
double point_coords [ 3 ]
)
tag_t | point | Input | Object identifier of point to inquire about |
double | point_coords [ 3 ] | Output | Coordinates of point in absolute space |
表示通过输入点位的Tag值,返回一个该点位对应的坐标值。
通过上面的程序,大家就可以获取到所有想要的点位,也就解决了这个非常重要的问题了。
今天要介绍的就是这么多,我们下篇文章再见。