• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Почему Kompas теряет грани если в координатах есть 0

Автор DimonD, 11.10.04, 17:39:20

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

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

DimonD

У меня маленькая проблема Kompas 6+ теряет грани я задау X Y Z
и если имеется 0 хоть в какойто координате то иногда пишет что грань не найдена ЧТО  мне делать !?
кто знает вчем проблема подскажите плиз

Ноль, не всегда бывает ноль не плохо бы фрагменнт кода глянуть.

DimonD

вот чтото вроде такого

 ksEntityCollection *Face =
        (ksEntityCollection*)Eskiz->part->EntityCollection(o3d_face);

  ksEntity * entInc =  (ksEntity*)Eskiz->part->NewEntity(o3d_incline);
  if ( entInc )
  {
     ksInclineDefinition * Inc =
        (ksInclineDefinition*)entInc->GetDefinition();
     if ( Inc )
     {
         Face->SelectByPoint(X,Y,Z);
         Inc->SetPlane(Face->First()/* Arr->GetByIndex(0)*/);
         Inc->set_angle(Ang);
         ksEntityCollection * Array = (ksEntityCollection *)Inc->FaceArray();
       for ( int i = 0; i GetCount(); i++ )
        Array->Add(EdgeFase->GetByIndex(i)) ;
       entInc->Create()
}}
если что пиши или по асе

Метод SelectByPoint, как написано в справке для Компас V7 «данная функция временно не работает для формообразующих элементов (элементов выдавливания, вращения, по сечениям)», что должно быть актуально и для К6+.  
Возможно, остается несколько объектов в массиве Face после вызова Face->SelectByPoint(X,Y,Z); хотя я могу и ошибаться т.к. надо это проверить.
Всегда с уважением Борис.

DimonD

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

DimonD

а дайте мне ваше мыло :-)
я примерчик отправлю

Мыло есть на http://www.mariupolsapr.narod.ru проблема в том, что я работаю Delphi поэтому 100% результата обещать не могу.
Всегда с уважением Борис.

Здравствуйте!
Протестировал Вашу библиотеку, из 150 запусков все были 100% успешны т.ч. ищите проблему в другом месте.

DimonD

Здрастуйте
большое Вам спасиба
еще парочка маленьких вопросиков этот проэкт уклонял все 4 грани
и установлен у Вас 2-й сурвис пак дла компас 6+
Жду ответа

DimonD

А можна еще узнать у вас какая версия kompas 6 или 6+
и ОС


DimonD

У меня тоже такое ПО но почемуто при многократном запуске пропадает две грани :-(
незнаю что и делать
может что-что посоветуете
заранее спасиба

Здравствуйте!

Подскажите как вы получаете EdgeFase именно из этой переменной теряются грани, в приведенном Вами фрагменте кода я не нашел где этот интерфейс заполняется.

DimonD

Здрастуйте
EdgeFace это масив ksEntityCollection
где хранятся грани и ребра а потом при необходимости они одтуда достаются, а заполняю я отдельно гранями и ребрами
вот фрагмент заполнения Edge
 if (!EdgeFase)
    {
    EdgeFase = (ksEntityCollection*)Esk->part->EntityCollection(o3d_entity);
    EdgeFase->clear();
    }
 ksEntityCollection* TempEntity = (ksEntityCollection*)
                Esk->part->EntityCollection(o3d_edge);
  bool res = TempEntity->SelectByPoint(x, y, z);
   int count = TempEntity->GetCount();
      if ( count && res  ) return EdgeFase->Add(TempEntity->Last());
 return 0;

Здравствуйте!

С приведенным Вами кодом библиотека работает правильно, когда теряет грани,  я проверил да действительно теряются грани, которые не проходят bool res = TempEntity->SelectByPoint(x, y, z); где X=Y=Z=0 если я правильно понял. Данная строчка ksEntityCollection* TempEntity = (ksEntityCollection*)
Esk->part->EntityCollection(o3d_edge); тоже не понятно для операции нужны грани, а не ребра, зачем усложнять себе задачу, фильтруя несколько разных типов.
Ошибка в последнем приведенном Вами фрагменте, Вам нужно получить все грани и подумать, как из них определить те, которые необходимы для операции.

Всегда с уважением Борис.

DimonD

Здрастуйте
я немного ошибся здесь вместо O3d_edge стоит O3d_face
это я немного нетот код скопировал я писидел еще поразбирался и понял что те грани где есть 0 все строится и плоскость определяется а если там нет 0 тто они как- то по теории вероятности то берутся то нет я такого незамечал в 5.11 а в 6+ вот такая проблема и незнаю что и делать вроде грани определяются и в масив заносятся и берутся оттуда а при создании операции теряются :-(

DimonD

А на счет получить все грани была такая идея но тоже столкнулся с проблемой при получении масива граней все хорошо но при выборе грани по индексу  при многократном запуске получается он тоже их на рандом берет из зи того что мы железно задаем например первый елемент масива, а он заносит их в в разной очередноси и получается путаница вот из за етого я и отказался от такого метода

Здравствуйте!

Если можно пришлите полный код библиотеки  файла TEST.RTW, что Вы мне присылали по почте, чтобы иметь полную картину  только без самой библиотеки RTW чтобы лишние килограммы не качать.

Всегда с уважением Борис.

DimonD

Здраствуйте
Может мы както по асе поговорим
а то у нас инет неочень быстрый
я весь пример немогу прислать а только куски кода
Я вас занес в список контактов

Здравствуйте!

Я бы пообжался, но на заводе где я работаю ОАО «ММК им. Ильича» интернет нет, а из дома я в трубу вылечу.

Мне весь код и не нужен, только часть присвоения значений X,Y,Z.