PromptSelectionResult выдает ERROR

Автор Тема: PromptSelectionResult выдает ERROR  (Прочитано 6095 раз)

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

Оффлайн sash-2007Автор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: -1
PromptSelectionResult выдает ERROR
« : 10-10-2018, 09:56:30 »
Здравствуйте
подскажите пожалуйста по каким причинам   

 
Код - C# [Выбрать]
  1. PromptSelectionResult selRes = ed.SelectWindow(point1, point2);

selRes  содержит  ERROR
« Последнее редактирование: 10-10-2018, 12:37:06 от Александр Ривилис »

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Re: PromptSelectionResult выдает ERROR
« Ответ #1 : 10-10-2018, 11:47:56 »
selRes  содержит  ERROR
без подробностей не угадать, напиши что значит "содержит ошибки"?
не компилируется, вылетает в процессе работы с ошибкой, или в selRes ошибочные данные?

Функция работает в пределах экрана, ты произвел зуммирование экрана перед запуском функции?

Отмечено как Решение sash-2007 10-10-2018, 13:21:30

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: PromptSelectionResult выдает ERROR
« Ответ #2 : 10-10-2018, 12:40:09 »
Здравствуйте
подскажите пожалуйста по каким причинам   

 
Код - C# [Выбрать]
  1. PromptSelectionResult selRes = ed.SelectWindow(point1, point2);

selRes  содержит  ERROR
1. Прочитай у меня в подписи о правиле форматирования кода на форуме и соблюдай его.
2. point1 и point2 - это точки в ПСК (UCS). Если они за пределами видимой области или в рамку ничего не попадает, то будет ERROR
3. Если ed.SelectXXX запускается из контекста приложения (например, из немодального окна или палитры), то будет ERROR.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sash-2007Автор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: -1
Re: PromptSelectionResult выдает ERROR
« Ответ #3 : 10-10-2018, 12:46:48 »
программа   для парсинга  файла  .nc1  (текла)
в автокад (2010)

Код - C# [Выбрать]
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. using Autodesk.AutoCAD.ApplicationServices;
  11. using Autodesk.AutoCAD.DatabaseServices;
  12. using Autodesk.AutoCAD.EditorInput;
  13. using Autodesk.AutoCAD.Runtime;
  14. using Autodesk.AutoCAD.Geometry;
  15.  
  16.  
  17.  
  18.     public partial class WindowSetting : Form
  19.     {
  20.         public WindowSetting()
  21.         {
  22.             InitializeComponent();
  23.         }
  24.  
  25.         Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocumen;
  26.         Database acCurDb = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
  27.         Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
  28.  
  29.  
  30.        
  31.         private void button1_Click(object sender, EventArgs e)
  32.         {
  33.             string filepath = "";
  34.  
  35.             OpenFileDialog OPF = new OpenFileDialog();
  36.             if (OPF.ShowDialog() == DialogResult.OK)
  37.             {
  38.                 filepath = OPF.FileName;
  39.  
  40.                 string s = System.IO.File.ReadAllText(filepath);
  41.  
  42.                 int poz1 = s.IndexOf("AK\r\n  v");
  43.                 string Text_v = s.Substring(0,  poz1);
  44.  
  45.                 string[] words = Text_v.Split(new char[] { '\n' });
  46.  
  47.                 double dlinna =  Convert.ToDouble(words[10].Trim());
  48.                 double peremichka = Convert.ToDouble(words[11].Trim());
  49.                 double polka = Convert.ToDouble(words[12].Trim());
  50.  
  51.                 #region risovanie balki
  52.                 using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  53.                 {
  54.                     // Открытие таблицы Блоков для чтения
  55.                     BlockTable acBlkTbl;
  56.                     acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
  57.                                                   OpenMode.ForRead) as BlockTable;
  58.  
  59.                     // Открытие записи таблицы БЛоков для записи
  60.                     BlockTableRecord acBlkTblRec;
  61.                     acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  62.                                                     OpenMode.ForWrite) as BlockTableRecord;
  63.  
  64.                             // polka nijnya    
  65.  
  66.                     Line acLine1 = new Line();
  67.                     acLine1.SetDatabaseDefaults();
  68.                     acLine1.StartPoint = new Point3d(0.0, 0.0, 0.0);
  69.                     acLine1.EndPoint = new Point3d(0.0, polka, 0.0);
  70.                     acBlkTblRec.AppendEntity(acLine1);
  71.                     acTrans.AddNewlyCreatedDBObject(acLine1, true);
  72.  
  73.  
  74.                     Line acLine2 = new Line();
  75.                     acLine2.SetDatabaseDefaults();
  76.                     acLine2.StartPoint = new Point3d(0, polka, 0.0);
  77.                     acLine2.EndPoint = new Point3d(dlinna, polka, 0.0);
  78.                     acBlkTblRec.AppendEntity(acLine2);
  79.                     acTrans.AddNewlyCreatedDBObject(acLine2, true);
  80.  
  81.  
  82.  
  83.  
  84.                     Line acLine3 = new Line();
  85.                     acLine3.SetDatabaseDefaults();
  86.                     acLine3.StartPoint = new Point3d(dlinna, polka, 0.0);
  87.                     acLine3.EndPoint = new Point3d(dlinna, 0.0, 0.0);
  88.                     acBlkTblRec.AppendEntity(acLine3);
  89.                     acTrans.AddNewlyCreatedDBObject(acLine3, true);
  90.  
  91.  
  92.                     Line acLine4 = new Line();
  93.                     acLine4.SetDatabaseDefaults();
  94.                     acLine4.StartPoint = new Point3d(dlinna, 0.0, 0.0);
  95.                     acLine4.EndPoint = new Point3d(0.0,0.0, 0.0);
  96.                     acBlkTblRec.AppendEntity(acLine4);
  97.                     acTrans.AddNewlyCreatedDBObject(acLine4, true);
  98.  
  99.                         // peremichka
  100.  
  101.                     Line acLine5 = new Line();
  102.                     acLine5.SetDatabaseDefaults();
  103.                     acLine5.StartPoint = new Point3d(0,polka + 500, 0.0);
  104.                     acLine5.EndPoint = new Point3d(0, polka + 500 + peremichka, 0.0);
  105.                     acBlkTblRec.AppendEntity(acLine5);
  106.                     acTrans.AddNewlyCreatedDBObject(acLine5, true);
  107.  
  108.  
  109.  
  110.                     Line acLine6 = new Line();
  111.                     acLine6.SetDatabaseDefaults();
  112.                     acLine6.StartPoint = new Point3d(0, polka + 500 + peremichka, 0.0);
  113.                     acLine6.EndPoint = new Point3d(dlinna, polka + 500 + peremichka, 0.0);
  114.                     acBlkTblRec.AppendEntity(acLine6);
  115.                     acTrans.AddNewlyCreatedDBObject(acLine6, true);
  116.  
  117.  
  118.  
  119.  
  120.                     Line acLine7 = new Line();
  121.                     acLine7.SetDatabaseDefaults();
  122.                     acLine7.StartPoint = new Point3d(dlinna, polka + 500 + peremichka, 0.0);
  123.                     acLine7.EndPoint = new Point3d(dlinna, polka + 500 , 0.0);
  124.                     acBlkTblRec.AppendEntity(acLine7);
  125.                     acTrans.AddNewlyCreatedDBObject(acLine7, true);
  126.  
  127.  
  128.  
  129.                     Line acLine8 = new Line();
  130.                     acLine8.SetDatabaseDefaults();
  131.                     acLine8.StartPoint = new Point3d(dlinna, polka + 500, 0.0);
  132.                     acLine8.EndPoint = new Point3d(0.0, polka + 500, 0.0);
  133.                     acBlkTblRec.AppendEntity(acLine8);
  134.                     acTrans.AddNewlyCreatedDBObject(acLine8, true);
  135.  
  136.  
  137.                             // polka verhnya
  138.  
  139.                     Line acLine9 = new Line();
  140.                     acLine9.SetDatabaseDefaults();
  141.                     acLine9.StartPoint = new Point3d(0.0, (polka + peremichka + 1000), 0.0);
  142.                     acLine9.EndPoint = new Point3d(0.0, (polka + peremichka + 1000) + polka, 0.0);
  143.                     acBlkTblRec.AppendEntity(acLine9);
  144.                     acTrans.AddNewlyCreatedDBObject(acLine9, true);
  145.  
  146.  
  147.                     Line acLine10 = new Line();
  148.                     acLine10.SetDatabaseDefaults();
  149.                     acLine10.StartPoint = new Point3d(0.0, (polka + peremichka + 1000) + polka, 0.0);
  150.                     acLine10.EndPoint = new Point3d(dlinna, (polka + peremichka + 1000) + polka, 0.0);
  151.                     acBlkTblRec.AppendEntity(acLine10);
  152.                     acTrans.AddNewlyCreatedDBObject(acLine10, true);
  153.  
  154.                     Line acLine11 = new Line();
  155.                     acLine11.SetDatabaseDefaults();
  156.                     acLine11.StartPoint = new Point3d(dlinna, (polka + peremichka + 1000) + polka, 0.0);
  157.                     acLine11.EndPoint = new Point3d(dlinna, (polka + peremichka + 1000) , 0.0);
  158.                     acBlkTblRec.AppendEntity(acLine11);
  159.                     acTrans.AddNewlyCreatedDBObject(acLine11, true);
  160.  
  161.  
  162.  
  163.                     Line acLine12 = new Line();
  164.                     acLine12.SetDatabaseDefaults();
  165.                     acLine12.StartPoint = new Point3d(dlinna, (polka + peremichka + 1000), 0.0);
  166.                     acLine12.EndPoint = new Point3d(0.0, (polka + peremichka + 1000), 0.0);
  167.                     acBlkTblRec.AppendEntity(acLine12);
  168.                     acTrans.AddNewlyCreatedDBObject(acLine12, true);
  169.  
  170.                     acTrans.Commit();
  171.                 }
  172.  
  173.  
  174.                 ed.UpdateScreen();
  175.                 #endregion
  176.  
  177.                  poz1 = s.IndexOf("BO\r\n");
  178.                int   poz2 = s.IndexOf("EN\r\n");
  179.                string Text2 = s.Substring(poz1, poz2 - poz1);
  180.  
  181.                string[] stroki = Text2.Split(new char[] { '\n' });
  182.  
  183.                #region  search "  o  "
  184.                for (int i =0; i < stroki.Length ;i++ )
  185.                {
  186.                    if (stroki[i].StartsWith("  o  "))
  187.                    {
  188.                        string strokaO = stroki[i];
  189.  
  190.                        strokaO = strokaO.Replace("s", "");
  191.                        strokaO = strokaO.Replace("o", "");
  192.                        strokaO = strokaO.Replace("v", "");
  193.                        strokaO = strokaO.Replace("u", "");
  194.                        strokaO = strokaO.Replace("\r", "");
  195.  
  196.                        string[] koord = strokaO.Split(new char[] { ' ' });
  197.                        List<string> numbers = new List<string>() { };
  198.  
  199.                        for (int k = 0; k < koord.Length; k++ )
  200.                        {
  201.                            if (koord[k] != "" )
  202.                            {
  203.                                numbers.Add(koord[k]);
  204.                            }
  205.                        }
  206.  
  207.  
  208.                        double x = Convert.ToDouble(numbers[0].Trim());
  209.                        double y = Convert.ToDouble(numbers[1].Trim());
  210.                        double diam = Convert.ToDouble(numbers[2].Trim());
  211.  
  212.                        using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  213.                        {
  214.                            // Открытие таблицы Блоков для чтения
  215.                            BlockTable acBlkTbl;
  216.                            acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
  217.                                                          OpenMode.ForRead) as BlockTable;
  218.  
  219.                            // Открытие записи таблицы БЛоков для записи
  220.                            BlockTableRecord acBlkTblRec;
  221.                            acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  222.                                                            OpenMode.ForWrite) as BlockTableRecord;
  223.  
  224.                          
  225.                            Circle cir = new Circle();
  226.                            cir.SetDatabaseDefaults();
  227.                            cir.Center = new Point3d(x, y + 1000 + polka + peremichka, 0.0);
  228.                            cir.Radius = diam / 2;
  229.                            acBlkTblRec.AppendEntity(cir);
  230.                            acTrans.AddNewlyCreatedDBObject(cir, true);
  231.  
  232.                            acTrans.Commit();
  233.                        }
  234.  
  235.  
  236.                    }
  237.  
  238.                }
  239.                #endregion
  240.  
  241.                #region search "  u  "
  242.                for (int i = 0; i < stroki.Length; i++)
  243.                {
  244.                    if (stroki[i].StartsWith("  u  "))
  245.                    {
  246.                        string strokaO = stroki[i];
  247.  
  248.                        strokaO = strokaO.Replace("s", "");
  249.                        strokaO = strokaO.Replace("o", "");
  250.                        strokaO = strokaO.Replace("v", "");
  251.                        strokaO = strokaO.Replace("u", "");
  252.                        strokaO = strokaO.Replace("\r", "");
  253.  
  254.                        string[] koord = strokaO.Split(new char[] { ' ' });
  255.                        List<string> numbers = new List<string>() { };
  256.  
  257.                        for (int k = 0; k < koord.Length; k++)
  258.                        {
  259.                            if (koord[k] != "")
  260.                            {
  261.                                numbers.Add(koord[k]);
  262.                            }
  263.                        }
  264.  
  265.  
  266.                        double x = Convert.ToDouble(numbers[0].Trim());
  267.                        double y = Convert.ToDouble(numbers[1].Trim());
  268.                        double diam = Convert.ToDouble(numbers[2].Trim());
  269.  
  270.                        using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  271.                        {
  272.                            // Открытие таблицы Блоков для чтения
  273.                            BlockTable acBlkTbl;
  274.                            acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
  275.                                                          OpenMode.ForRead) as BlockTable;
  276.  
  277.                            // Открытие записи таблицы БЛоков для записи
  278.                            BlockTableRecord acBlkTblRec;
  279.                            acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  280.                                                            OpenMode.ForWrite) as BlockTableRecord;
  281.  
  282.  
  283.                            Circle cir = new Circle();
  284.                            cir.SetDatabaseDefaults();
  285.                            cir.Center = new Point3d(x, y, 0.0);
  286.                            cir.Radius = diam / 2;
  287.                            acBlkTblRec.AppendEntity(cir);
  288.                            acTrans.AddNewlyCreatedDBObject(cir, true);
  289.  
  290.                            acTrans.Commit();
  291.                        }
  292.  
  293.  
  294.                    }
  295.  
  296.                }
  297.                #endregion
  298.  
  299.                #region search  "  v  "
  300.  
  301.                for (int i = 0; i < stroki.Length; i++)
  302.                {
  303.                    if (stroki[i].StartsWith("  v  "))
  304.                    {
  305.                        string strokaO = stroki[i];
  306.  
  307.                        strokaO = strokaO.Replace("s", "");
  308.                        strokaO = strokaO.Replace("o", "");
  309.                        strokaO = strokaO.Replace("v", "");
  310.                        strokaO = strokaO.Replace("u", "");
  311.                        strokaO = strokaO.Replace("\r", "");
  312.  
  313.                        string[] koord = strokaO.Split(new char[] { ' ' });
  314.                        List<string> numbers = new List<string>() { };
  315.  
  316.                        for (int k = 0; k < koord.Length; k++)
  317.                        {
  318.                            if (koord[k] != "")
  319.                            {
  320.                                numbers.Add(koord[k]);
  321.                            }
  322.                        }
  323.  
  324.  
  325.                        double x = Convert.ToDouble(numbers[0].Trim());
  326.                        double y = Convert.ToDouble(numbers[1].Trim());
  327.                        double diam = Convert.ToDouble(numbers[2].Trim());
  328.  
  329.                        using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  330.                        {
  331.                            // Открытие таблицы Блоков для чтения
  332.                            BlockTable acBlkTbl;
  333.                            acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
  334.                                                          OpenMode.ForRead) as BlockTable;
  335.  
  336.                            // Открытие записи таблицы БЛоков для записи
  337.                            BlockTableRecord acBlkTblRec;
  338.                            acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
  339.                                                            OpenMode.ForWrite) as BlockTableRecord;
  340.  
  341.  
  342.                            Circle cir = new Circle();
  343.                            cir.SetDatabaseDefaults();
  344.                            cir.Center = new Point3d(x, y+500+polka, 0.0);
  345.                            cir.Radius = diam / 2;
  346.                            acBlkTblRec.AppendEntity(cir);
  347.                            acTrans.AddNewlyCreatedDBObject(cir, true);
  348.  
  349.                            acTrans.Commit();
  350.                        }
  351.  
  352.  
  353.                    }
  354.  
  355.                }
  356.                 #endregion
  357.  
  358.              
  359.              
  360.  
  361.                double pripuskBalki =  Convert.ToDouble(pripusk.Text.Trim());
  362.                int kolichestvoRazbienii = (int)(pripuskBalki / 0.1);
  363.                double DlinnaStart = dlinna / kolichestvoRazbienii;
  364.  
  365.  
  366.                ed.UpdateScreen();
  367.  
  368.              
  369.  
  370.                using (Transaction tr = acCurDb.TransactionManager.StartTransaction())
  371.                {
  372.                    Point3d point1 = new Point3d(4320.0, -350.0, 0.0);
  373.                    Point3d point2 = new Point3d(4780.0, 1900.0, 0.0);
  374.  
  375.                    PromptSelectionResult selRes = ed.SelectWindow(point1, point2);    
  376.                    // здесь selRes содержит ERROR
  377.  
  378.  
  379.                    if (selRes.Status != PromptStatus.OK)
  380.                    {
  381.                        ed.WriteMessage("\nError!\n");
  382.                        return;
  383.                    }
  384.  
  385. }
  386.          }
  387.  
  388.            
  389.  
  390.  
  391.         }
  392.  
  393.  
  394.     }
  395.  
  396.  
  397.  

по команде в автокаде открывается окошко
там  поле ввода припуска и кнопка для открытия файла .nc1
nc1 - это файл  с балкой
припуск задается для усадки балки от сварки (например 2 мм)

далее прорисовываем в автокаде балку( полка+ перемычка+ полка)
далее рисуем отверстия в зависимости от того где они расположены

далее нужно дать припуск на балку
хотел воспользоваться  рамкой выделения ed.SelectWindow(point1, point2); 
выделить все что в рамке и переместить все вправо.

это можно сделать через цикл

но  выделить рамкой не получается
   PromptSelectionResult selRes = ed.SelectWindow(point1, point2);   
selRes содержит ERROR
программа завершается

точки point1 , point2  взял просто для примера
                   


« Последнее редактирование: 10-10-2018, 14:34:36 от Александр Ривилис »

Оффлайн sash-2007Автор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: -1
Re: PromptSelectionResult выдает ERROR
« Ответ #4 : 10-10-2018, 13:21:10 »
Вот я балда , вторая точка за пределами видимого  экрана оказалась
Спасибо за помощь)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: PromptSelectionResult выдает ERROR
« Ответ #5 : 10-10-2018, 13:34:20 »
sash-2007,
Второе предупреждение по поводу правила форматирования кода. Надеюсь, что третьего не будет!
« Последнее редактирование: 10-10-2018, 14:35:10 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение