Переменные меняются, но....

Автор bajik, 13.08.09, 17:54:54

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

bajik

переменные используются в размерах, с помощью программы они меняются, но фрагмент остается преждними, в чем моя ошибка?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Kompas6API5;
using KAPITypes;
using Kompas6Constants;



namespace Kompas
{
    public partial class Form1 : Form
    {
        private KompasObject kompas;
        private string buf;
        private ksDocument3D doc3D;
        private ksDocument2D doc2D;
        private ksSpcDocument docSpc;
        private ksDocumentTxt docTxt;
        private ksVariable par;
        private ksDynamicArray doc2Var;

        public Form1()
        {
            InitializeComponent();
        }

        private void btnLoadFile_Click(object sender, EventArgs e)
        {
            if (kompas == null)
            {
                Type t = Type.GetTypeFromProgID("KOMPAS.Application.5");
                kompas = (KompasObject)Activator.CreateInstance(t);
            }
           
            if (kompas != null)
            {
                kompas.Visible = true;
                kompas.ActivateControllerAPI();
            }

            if (kompas != null)
            {
                openFileDialog1.Filter = "Чертежи(*.cdw)|*.cdw|Фрагменты(*.frw)|*.frw|Модели(*.m3d)|*.m3d|Сборки(*.a3d)|*.a3d|Спецификации(*.spw)|*.spw";
                if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
                {
                    FileNameTB.Text = openFileDialog1.FileName.ToString();

                    int type = kompas.ksGetDocumentTypeByName(openFileDialog1.FileName);
                    switch (type)
                    {
                        case (int)DocType.lt_DocPart3D:         //3d документы
                        case (int)DocType.lt_DocAssemble3D:
                            doc3D = (ksDocument3D)kompas.Document3D();
                            if (doc3D != null)
                            {
                                doc3D.Open(openFileDialog1.FileName, false);
                                if (doc3D.IsDetail())
                                {
                                    kompas.ksError("Текущий документ должен быть сборкой");
                                    return;
                                }
                                ksPart part = (ksPart)doc3D.GetPart(0);
                                if (part != null)
                                {
                                    ksVariableCollection varCol = (ksVariableCollection)part.VariableCollection();
                                    if (varCol != null)
                                    {
                                        ksVariable var = (ksVariable)kompas.GetParamStruct((short)StructType2DEnum.ko_VariableParam);
                                        if (var == null)
                                            return;
                                        for (int i = 0; i < varCol.GetCount(); i++)
                                        {
                                            var = (ksVariable)varCol.GetByIndex(i);
                                            buf = string.Format("Номер переменной {0}\nИмя переменной {1}\nЗначение переменной {2}\nКомментарий {3}", i, var.name, var.value, var.note);
                                            kompas.ksMessage(buf);
                                            if (i == 0)
                                            {
                                                var.note = "qwerty";
                                                double d = 0;
                                                kompas.ksReadDouble("Введи переменную", 10, 0, 100, ref d);
                                                var.value = d;
                                            }
                                        }

                                        for (int j = 0; j < varCol.GetCount(); j++)
                                        {
                                            // просмотр изменненных переменных
                                            var = (ksVariable)varCol.GetByIndex(j);
                                            buf = string.Format("Номер переменной {0}\nИмя переменной {1}\nЗначение переменной {2}\nКомментарий {3}", j, var.name, var.value, var.note);
                                            kompas.ksMessage(buf);
                                        }
                                        part.RebuildModel();   // перестроение модели
                                    }
                                }
                            }   
                            break;
                        case (int)DocType.lt_DocSheetStandart:   //2d документы
                        case (int)DocType.lt_DocFragment:
                            doc2D = (ksDocument2D)kompas.Document2D();
                            if (doc2D != null)
                            {
                                doc2D.ksOpenDocument(openFileDialog1.FileName, false);
                                doc2Var = (ksDynamicArray)doc2D.ksGetDocVariableArray(0);
                                for (int i = 0; i < doc2Var.ksGetArrayCount(); i++)
                                {
                                    par = (ksVariable)kompas.GetParamStruct((short)StructType2DEnum.ko_VariableParam);
                                    doc2Var.ksGetArrayItem(i, par);
                                    if (par.name == "ML")
                                        MLtb.Text = par.value.ToString();
                                    if (par.name == "MV")
                                        MVtb.Text = par.value.ToString();
                                    if (par.name == "K")
                                        Ktb.Text = par.value.ToString();
                                }
                            }
                            break;
                        case (int)DocType.lt_DocSpc:            //спецификации
                            docSpc = (ksSpcDocument)kompas.SpcDocument();
                            if (docSpc != null)
                                docSpc.ksOpenDocument(openFileDialog1.FileName, 0);
                            break;
                        case (int)DocType.lt_DocTxtStandart:      //текстовые документы
                            docTxt = (ksDocumentTxt)kompas.DocumentTxt();
                            if (docTxt != null)
                                docTxt.ksOpenDocument(openFileDialog1.FileName, 0);
                            break;
                    }
                    int err = kompas.ksReturnResult();
                    if (err != 0)
                        kompas.ksResultNULL();
                }
            }
            else
            {
                MessageBox.Show(this, "Объект не захвачен", "Сообщение");
            }
        }
   
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < doc2Var.ksGetArrayCount(); i++)
            {
                par = (ksVariable)kompas.GetParamStruct((short)StructType2DEnum.ko_VariableParam);
                doc2Var.ksGetArrayItem(i, par);
                if (par.name == "ML")
                    par.value = Convert.ToInt32(MLtb.Text);
                if (par.name == "MV")
                    par.value = Convert.ToInt32(MVtb.Text);
                if (par.name == "K")
                    par.value = Convert.ToInt32(Ktb.Text);
                doc2Var.ksSetArrayItem(i, par);
            }
            doc2D.ksSetDocVariableArray(0, doc2Var, false);
           
        }

    }
}

KonstrSerg

Попробуй
doc2D.ksSetDocVariableArray(doc2D.reference, doc2Var, false);