Двойной клик по блоку на чертеже.

Автор Тема: Двойной клик по блоку на чертеже.  (Прочитано 12162 раз)

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

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Здравствуйте.
Возник вопрос: почему-то один блок при двойном клике на нем открывает Enhanced Attribute Editor, а другой ( который автоматически генерится из базы данных при помощи .Net) в Edit Block Definitions. Хотелось бы понять, как сделать так,чтобы второй тоже открывался в Enhanced Attribute Editor.



Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Двойной клик по блоку на чертеже.
« Ответ #1 : 10-07-2015, 13:55:50 »
Это даже с программированием не связано)) Редактор атрибутов автоматом открывается, когда в блоке есть редактируемые атрибуты. Редактор блоков, соответственно, когда атрибутов нет

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Двойной клик по блоку на чертеже.
« Ответ #2 : 10-07-2015, 14:04:40 »
Это связано с программированием тем,что блок,где нет аттрибутов я создал руками при помощи программы).Но наверное не добавил.
Код - C# [Выбрать]
  1. DBObjectCollection ents = new DBObjectCollection();
  2. AttributeDefinition attr_sysname = new AttributeDefinition();
  3.             attr_sysname.Tag = "SYSNAME";
  4.             attr_sysname.TextString = "SYSNAME";
  5.             attr_sysname.Height = 1.8;
  6.             attr_sysname.Position = new Point3d(-6, height + 1, 0);
  7.             attr_sysname.Constant = true;
  8.             attr_sysname.LockPositionInBlock = true;
  9.             ents.Add(attr_sysname);

Пытался сделать так.Судя по всему я забыл записать это в таблицу блоков,так? Текст появляется и то,что это тег в итоге определяется


Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Двойной клик по блоку на чертеже.
« Ответ #4 : 10-07-2015, 14:35:36 »
А сначала создавалось полное описание блока (включая описания атрибутов) и потом его вставляли или сначала вставили, а описание атрибутов добавляли в описание блока после?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Двойной клик по блоку на чертеже.
« Ответ #5 : 10-07-2015, 14:44:51 »
Вот пример более подходящий - http://www.acadnetwork.com/index.php?topic=160.0

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Двойной клик по блоку на чертеже.
« Ответ #6 : 10-07-2015, 14:47:16 »
Я к тому, что может понадобится нечто типа _.attsync. Правда, насколько я помню, Андрей Бушман в свое время дооолго с ним воевал.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Двойной клик по блоку на чертеже.
« Ответ #7 : 10-07-2015, 15:27:54 »
Я более полно напишу код,будет понятно,что и как я делал)
Код - C# [Выбрать]
  1. BlockTableRecord btr = new BlockTableRecord();                    
  2.                     btr.Name = blkNameж
  3.                     bt.UpgradeOpen();
  4.                     Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen();
  5.                     ObjectId btrId = bt.Add(btr);
  6.                     tr.AddNewlyCreatedDBObject(btr, true);
  7.                     DBObjectCollection ents = SquareOfLines(length, height);
  8.                     foreach (Entity ent in ents)
  9.                     {
  10.  
  11.                         btr.AppendEntity(ent);
  12.                         tr.AddNewlyCreatedDBObject(ent, true);
  13.  
  14.                     }
  15.  
  16.  
  17.  private DBObjectCollection SquareOfLines(double length, double height)
  18.         {
  19.             Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  20.             Database db = doc.Database;
  21.             DBObjectCollection ents = new DBObjectCollection();
  22. AttributeDefinition attr_sysname = new AttributeDefinition();
  23.             attr_sysname.Tag = "SYSNAME";
  24.             attr_sysname.TextString = "SYSNAME";
  25.             attr_sysname.Height = 1.8;
  26.             attr_sysname.Position = new Point3d(-6, height + 1, 0);
  27.             attr_sysname.Constant = true;
  28.             attr_sysname.LockPositionInBlock = true;
  29.             ents.Add(attr_sysname);
  30.  
  31.             AttributeDefinition attr_manuf = new AttributeDefinition();
  32.             attr_manuf.Tag = "MANUFACTURER";
  33.             attr_manuf.Height = 1.8;
  34.             attr_manuf.Position = new Point3d(- length + 1, height -2, 0);
  35.             attr_manuf.TextString = manufacturer;
  36.             attr_manuf.Constant = true;
  37.             attr_manuf.LockPositionInBlock = true;
  38.             ents.Add(attr_manuf);
  39.            return ents;
  40.         }

Как-то так)

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Двойной клик по блоку на чертеже.
« Ответ #8 : 10-07-2015, 22:19:10 »
Вижу создание блока, но не вижу вставку блока с атрибутами.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Двойной клик по блоку на чертеже.
« Ответ #9 : 11-07-2015, 00:13:46 »
Создал по примеру атрибут, теперь открывается табличка нужная и все хорошо,НО.
При смене Value название все равно остается тем же самым. Тут тоже прописывается какой-то апдейт?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Двойной клик по блоку на чертеже.
« Ответ #10 : 11-07-2015, 00:22:48 »
При смене Value название все равно остается тем же самым.
А должно было измениться? Давай код. Только не обрывками. Тогда возможно будет понятно чего ты добиваешься.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Двойной клик по блоку на чертеже.
« Ответ #11 : 11-07-2015, 00:29:26 »
Название или значение?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн bender

  • ADN Club
  • **
  • Сообщений: 62
  • Карма: 4
Re: Двойной клик по блоку на чертеже.
« Ответ #12 : 11-07-2015, 01:06:45 »
attr_sysname.Constant = true;

?

Оффлайн DenisАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Двойной клик по блоку на чертеже.
« Ответ #13 : 12-07-2015, 16:36:08 »
attr_sysname.Constant = true;
Именно так,без него он вообще невидим.

Код следующий.
Код - C# [Выбрать]
  1. BlockTableRecord curSpace = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  2.                            BlockReference insert = new BlockReference(point, btrId);
  3.                            curSpace.AppendEntity(insert);
  4.                            insert.BlockUnit = UnitsValue.Millimeters;
  5.                            tr.AddNewlyCreatedDBObject(insert, true);
  6.                            AttributeDefinition attr_sysname = new AttributeDefinition();
  7.                            attr_sysname.Tag = "SYSNAME";
  8.                            attr_sysname.TextString = "SYSTEM";              
  9.                            attr_sysname.Height = 1.8;
  10.                            attr_sysname.Position = new Point3d(-6, height + 1, 0);
  11.                            attr_sysname.Constant = true;
  12.                            btr.AppendEntity(attr_sysname);
  13.                            tr.AddNewlyCreatedDBObject(attr_sysname, true);

При двойном нажатии на блок появляется таблица  Enhanced Attribute Editor,вижу тэг "SYSNAME", при попытке изменить его Value ничего не происходит,все равно видно только то, что записано здесь: attr_sysname.TextString = "SYSTEM"; 

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Двойной клик по блоку на чертеже.
« Ответ #14 : 12-07-2015, 16:52:40 »
Какой позор. Посмотри готовые примеры, ссылки на которые тебе приводили. Посмотри этот пример: http://adn-cis.org/sozdanie-bloka-s-mnogostrochnyim-opredeleniem-atributa.html
Ты не добавил атрибуты к вставке блока. Поэтому и не видишь их.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение