关于使用CIMSDK开发自定义实体时的成员变量传值问题

各位老师好。

我最近在学习CIMSDK开发ORD自定义实体的功能,遇到了一个成员变量传值的问题。

我参照官方教程定义了两个类用来描述一个多段线自定义实体:CIMManagedPolyLine和CIMManagedPolyLineCreator。

CIMManagedPolyLineCreator里面包含了一个CIMManagedPolyLine类型的成员变量。

CIMManagedPolyLine中我定义了一个成员变量用来记录多段线的各个顶点:public List<GeometryNET.DPoint3d> points;

然后,我在CIMManagedPolyLineCreator的OnDataButton函数中加上处理,当鼠标点击某处时,将坐标点加入到CIMManagedPolyLine的points成员变量:

        protected override bool OnDataButton(DgnButtonEvent ev)
        {
            if (m_points.Count < 10)
            {
                NotificationManager.OutputPrompt("Select a point of the line.");
                m_points.Add(ev.Point);
                m_cimManagedPolyLine.points.Add(ev.Point);
                pointNum++;
            }
            else
            {
                // m_cimManagedPolyLine.AddToModel(true);
                // EndDynamics();
                // OnRestartTool();
            }
            return true;
        }

在调试的时候,确定点数据是能够加入到points成员变量的:

但是,当我在CIMManagedPolyLineCreator的OnGeneratePresentation函数中去使用这个points中的值的时候,points确是一个null值:

现在还不知道具体的原因。望解答~

Parents
  • 我感觉这是一个基本的C# 编程问题吧?OnGeneratePresentation是属于CIMManagedPolyLineCreator,而你的points是属于CIMManagedPolyLine的,故你在CIMManagedPolyLineCreator中没有直接的成员变量(其实成员变量这个词是在C++中用的,C# 中可能应该叫做属性)points,而应该先取得CIMManagedPolyLine对象后再取得其下的points。



Reply
  • 我感觉这是一个基本的C# 编程问题吧?OnGeneratePresentation是属于CIMManagedPolyLineCreator,而你的points是属于CIMManagedPolyLine的,故你在CIMManagedPolyLineCreator中没有直接的成员变量(其实成员变量这个词是在C++中用的,C# 中可能应该叫做属性)points,而应该先取得CIMManagedPolyLine对象后再取得其下的points。



Children