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

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

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

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

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

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

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

Получить вид чертежа - развертка для листового тела.

Автор IgorRUtver, 01.11.13, 12:24:42

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

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

IgorRUtver

О, с процессами еще не работал, когда натыкался на них в sdk думал, что они только для чтения. Спасибо большое за мастерский тык! Все корректно работает :o:

GkmSoft

Спасибо!

Наш плагин тоже умеет создавать анимацию гибки листовых тел (сохранять анимацию в 3D PDF).
Но, из-за проблем выше пришлось отключить эту опцию.
Попробуем Ваш метод, если сработает, то включим

Крайслер78

Здравствуйте.
Помогите разобраться с созданием ассоциативного вида для получение развертки с помощью API7. 
Есть 3d модель листовой детали ( путь к ней Patch_). Необходимо создать чертеж развертки. Для этого открываю 3D модель, разгибаю, сохраняю результат. Создаю 2d документ, создаю ассоциативный вид , выставляю свойства ( в том числе и assView.Unfold = true;) , а в результате в чертеж вставляется не развернутый вид, а assView.Unfold  остается в состоянии false.
Подскажите в чем моя ошибка? И как получить вид с разверткой листового тела?

        private void EditModel(string Patch_)
        {
            //используем API  - 7-ой версии
            Kompas6API7._Application My7Komp = (_Application)kompas.ksGetApplication7();
            // откроем документ
            KompasDocument doc1 = (KompasDocument)(My7Komp.Documents).Open(Patch_);
            if (doc1 != null)
            {
                if (My7Komp.IsKompasCommandCheck(40794) == 0) //разогнуть но нужно вызывать на детале
                {
                    My7Komp.ExecuteKompasCommand(40794, false);
                }
            }
            doc1.Close(DocumentCloseOptions.kdSaveChanges);

              IKompasDocument  pDocument = (KompasDocument)(My7Komp.Documents).Add(DocumentTypeEnum.ksDocumentDrawing,true);
              IKompasDocument2D pKompasDocument2D = (IKompasDocument2D)pDocument;
              IViewsAndLayersManager pViewsAndLayersManager = pKompasDocument2D.ViewsAndLayersManager;
              IViews pViews = pViewsAndLayersManager.Views;
              IView pView =pViews.Add(LtViewType.vt_Arbitrary);
              if (pView != null)
              { 
                  IAssociationView assView = (IAssociationView) pView;
                  if (assView != null)
                    {
                    assView.SourceFileName = Patch_;
                    assView.Angle = 0;
                    assView.X = 0;
                    assView.Y = 0;
                    assView.BendLinesVisible = false;
                    assView.BreakLinesVisible = false;
                    assView.HiddenLinesVisible = false;

                    assView.VisibleLinesStyle = (int)ksCurveStyleEnum.ksCSNormal;
                    assView.Unfold = true;
                    assView.Scale = 1;
                    assView.Name = "User view";
                    assView.ProjectionName="#спереди";     
                    assView.Update();
                    pView.Update();
                    kompas.ksMessage("assView.Unfold=" + assView.Unfold.ToString());
                    }
              }

        }


Крайслер78

Здравствуйте. 
Я видел что этот вопрос несколько раз уже подымался на форуме в темах (например здесь
Цитата: Sabahs от 01.11.13, 12:45:41
Как вариант, открыть файл, получить указатель на листовое тело, установить свойство разогнуть и сделать вид с разогнутого состояния. Для этого вроде всё есть в API7. 
)
но не где я не нашел ответа- как это сделать?  Помогите разобраться . Если для работы Unfold  нужно указать еще какие-нибудь свойства, то подскажите каких не хватает в моем коде? Если код не верен полностью , то подскажите с какой стороны подступиться к решению проблемы. 
Вы пишите
Цитата: Sabahs от 01.11.13, 12:45:41
Как вариант, открыть файл, получить указатель на листовое тело, установить свойство разогнуть и сделать вид с разогнутого состояния. Для этого вроде всё есть в API7. 
, но как сделать вид с разогнутого тела мне не понятно.  Я вроде так и сделал (только без указателя на листовое тело), но ничего не получилось. Помогите пожалуйста  разобраться.

Вы, PS - читали, Вы запустили внутреннюю команду разогнуть, сохранили и закрыли документ, т.е. поставили его в подвешенное состояние, а я думаю нужно сначала после этого получить развёртку, затем можно и закрыть.
PS. Могу ошибаться, как и все люди.
+ Благодарностей: 1

Крайслер78


ТрындецЪ

Работаю с развёрткой листовых тел, и вот какая проблема нарисовалась.
Среди деталей попадаются такие, у которых не настроены параметры развёртки. И мне нужно выявить это программно.
Если работать с деталью в видимом режиме, то достаточно проверить доступна ли команда "Развертка"  - iApplication.IsKompasCommandEnable(40794). Если недоступна (False), то развёртка не настроена.
Но если работать в невидимом режиме, то iApplication.IsKompasCommandEnable(40794) возвращает True.
Как быть в этом случае?
И вообще, как настроить параметры развёртки программно (указать неподвижную грань/плоскость и все сгибы)? Не нашёл в SDK.

ТрындецЪ

#28
С первым вопросом сам разобрался:
iViewProjectionCollection = iDocument3D.GetViewProjectionCollection()
iViewProjection = iViewProjectionCollection.GetByName (u"Развертка", True, False)
Если развертка не настроена, то проекции тоже не будет и iViewProjection вернётся None

Upd: Как оказалось и этот метод не даёт 100% гарантии.
Попадаются детали с исполнениями, у которых в каком-то исполнении не настроены параметры развёртки, но коллекция видов у исполнений общая и вид "Развёртка" есть у всех, если хотя бы у одного исполнения настроена развёртка.