代码之家  ›  专栏  ›  技术社区  ›  Jerry

带有AutoCAD的.NET接口-SetXData错误

  •  1
  • Jerry  · 技术社区  · 15 年前

    Example Test:

        public AcadEntity getAcadEntity()
        {
            /// ... Basic code to return a single AutoCAD entity...
        }
    
        private void btnTagItem_Click(object sender, EventArgs e)
        {
            AcadEntity ent = getAcadEntity();
    
            short[] xDataType;
            string[] xDataStrings;
    
            DrawingXData xData = new DrawingXData();
    
            xData.field1 = "Some Text Goes here";
            xData.field2 = 1;
            xData.field3 = 100;
            xData.field4 = 1509.2;
            xData.field5 = "More Text";
    
            BuildXData("AutoCad_App_Name", xData, out xDataType, out xDataStrings);
    
            ent.SetXData(xDataType, xDataStrings); // This line crashes.
        }
    
        private void BuildXData(string applicationName, DrawingXData xData, 
            out short[] xDataType, out string[] xDataStrings)
        {
            List<short> dataTypes = new List<short>();
            List<string> dataStrings = new List<string>();
    
            /// Code types...
            /// 1000 == String up to 255 bytes
            /// 1001 == Application Name
    
            // Set Applicaiton Name
            dataTypes.Add(1001); dataStrings.Add(applicationName);
    
            // Set Application Data
            dataTypes.Add(1000); dataStrings.Add(xData.field1.ToString());
            dataTypes.Add(1000); dataStrings.Add(xData.field2.ToString());
            dataTypes.Add(1000); dataStrings.Add(xData.field3.ToString());
            dataTypes.Add(1000); dataStrings.Add(xData.field4.ToString());
            dataTypes.Add(1000); dataStrings.Add(xData.field5.ToString());
    
            // ... etc.
    
            xDataType = dataTypes.ToArray();
            xDataStrings = dataStrings.ToArray();
        }
    

    错误代码(如果这有帮助的话)是-2145320939。

    我发布这篇文章的主要原因是,在一个非常旧的VB6应用程序中,相同的代码可以正常工作。我被难住了。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Jay Riggs    15 年前

    错误消息告诉您对方法SetXData的调用中的一种或两种数据类型不正确。

    我个人对您尝试执行的操作没有经验,但我建议将xDataStrings的数据类型更改为对象数组:

    object[] xDataStrings;
    

    退房 this thread 在autodesk论坛上。NET代码示例已发布,可能会对您有所帮助。