Перейти к публикации

Сокращённые и погашенные компоненты


hztp_serg

Рекомендованные сообщения

Раскрывая рекурсивно состав сборки нужно решать сокращённые компонеты, поскольку попытка получить указатель на сокращённый компонент возвращает NULL. С помощью товарищей по форуму решаю эту проблему так:

IModelDoc2 *swModelDoc=NULL;

	IConfiguration *swCfg=NULL;

	IDispatch *pDispatch;

	long Suppression, lError;

	BSTR Path;

	hres = pComponent->GetPathName(&Path);

	pComponent->GetSuppression(&Suppression);

	if ( Suppression != 2 )

	{

		pComponent->SetSuppression2(2, &lError);

	}

	hres = pComponent->GetModelDoc(&pDispatch);

	pDispatch->QueryInterface(&swModelDoc);

	pComponent->get_ReferencedConfiguration(&ConfigName);

	swModelDoc->IGetConfigurationByName(ConfigName, &swCfg);
почему-то этот кусок кода очень замедляет процес раскрытия сборки. Может можно как-то оптимизировать?

Ещё задача стоит в том, чтобы не показывать погашенные компоненты. Приблизительный вариант решения у меня есть, но я не уверн что он правельный:

VARIANT_BOOL bSupp;

	pComponent->IsSuppressed(&bSupp);

	if ( bSupp = TRUE )

	{

		return 0

	}
или может можно определить погашен ли компонент по результату функции pComponent->GetSuppression(&Suppression)? Большое спасибо!
Ссылка на сообщение
Поделиться на других сайтах


...............

почему-то этот кусок кода очень замедляет процес раскрытия сборки. Может можно как-то оптимизировать?

А зачем в цикле решать каждый комонент? Все это можно сделать в начале кода на уровне верхней сборки.

long docType;

	hres = swModel->GetType(&docType);

	if(docType != swDocASSEMBLY)

	{

		BSTR strMessage = L"Функция работает только с документом сборки!";

		swApp->SendMsgToUser2(strMessage, swMbInformation, swMbOk, &lResult);

		return;		

	}

	

	IAssemblyDoc *swAssembly = NULL;

	hres = swModel->QueryInterface(IID_IAssemblyDoc, (void**)&swAssembly);	

		

	long countLightWeight;

	hres = swAssembly->GetLightWeightComponentCount(&countLightWeight); // определяем кол-во сокращенных компонентов

	

	if(countLightWeight > 0)

	{

		VARIANT_BOOL retval = TRUE;

		swAssembly->ResolveAllLightweight(&retval); // если они есть, то решаем их

	}
А еще можно возложить на пользователя выбор, по какому сценарию должна читаться сборка, вызвав какое нибудь диалоговое окно. Лично я, сделал так. (см. рис)

Ещё задача стоит в том, чтобы не показывать погашенные компоненты. Приблизительный вариант решения у меня есть, но я не уверн что он правельный:

VARIANT_BOOL bSupp;

	pComponent->IsSuppressed(&bSupp);

	if ( bSupp = TRUE )

	{

		return 0

	}
или может можно определить погашен ли компонент по результату функции pComponent->GetSuppression(&Suppression)? Большое спасибо!
Если пользователь, решил все компоненты, смысла в вызове функции GetSuppression, я не вижу, достаточно и IsSupression. Другое дело, когда он оставил компоненты сокращенными. Ведь есть задачи, которые решаются на уровне компонента, а не на уровне модели. Например простой подсчет деталей. Там вызов функции GetModelDoc() и не нужен.

post-3876-1261152556_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Greenston
      Привет! По идее, реально. Ведь 800 цикл аналог мазаковского, хоть и выглядит немного по-другому. Но лучше править с фануковского поста, проще. Пример трансформации Мазака: G68.2 X15.1027 Y-26.1587 Z-32.4463 I30.0 J55.0 K-90.0 G53.1
    • Greenston
      с большой долей вероятности надо править постпроцессор. Стойку такую не слыхал даже)
    • Мрачный
      Прям как дети... https://hh.ru/vacancy/95765023 Joymechanix, Москва, Калужская, улица Бутлерова, 17Б от 1 300 до 2 000 $ на руки
    • mactepnew
      Так я конкретно расписал, что мне не понравилось. Вам всерьез нравится панель измерений? Например то, что нужно каждый раз выбирать направление измерения, если выбрана плоская поверхность и точка.  И два меню настроек тоже нравятся?  А, есть же еще третье. Где две команды: И несколько меню свойств объекта - это тоже нормально? Settings, Edit, Edit text и Properties. Хотя у Крео тоже их два... Или то, что в эскизе может быть избыток ограничений, которое NX может поначалу игнорировать, а в какой-то момент сам отменить какие-то из них и сделать из эскиза каля-маля. Крео такого не позволяет. Кнопка Create persistent relations регулярно отключается сама по себе. А как вручную удалить одно из ограничений я так и не понял. NX пишет: click to relax. Кликал всеми семью кнопками со всеми комбинациями Shift, Ctrl и Alt - оно не удаляется.    Да, к Крео у меня тоже были претензии поначалу, но всё равно он раз в 10 быстрее и намного дружественнее. В NX можно перенести размеры из 3D на чертеж?    Простите, если это уже оффтоп, но просто вот эта кривая логика ломает мне мозг.
    • Greenston
      в 2016-2017 версии FC было доступно много постов (потом их убрали). Их можно найти +- тут: \Program Files\Delcam\FeatureCAM 2016\Posts\Mill\5-Axis В том числе и на дмг. Ну без гарантий, канеш
    • Alexey8107
      Да, я написал При этом, после сбоя не помогает возврат в реф. А если задать систему координат заготовки то корректоры на инструмент становятся неверными. Возможно бред, но примерно так и есть. С другими станками такой проблемы нет. А с этим почему то каждый раз.
    • BSV1
      Еще забыли сообщить, где такое счастье расположено и как туды написАть.    ЗЫ И еще бы поменьше пионерского задора.
    • Greenston
      @Beliko у Вас пост написан на 2 канала (видимо, на 2 револьверные головы). Каждый канал чаще всего постпроцессируется в отдельный файл уп (но бывает и в один файл, как на Окумах). Надо либо пост править в 1 канал, либо искать одноканальный пост. И вообще лучше сначала спросить, на станке 1 револьверная голова?
    • maxx2000
      @ANT0N1DZE держи недостающее, выбери на свой вкус 
    • IgP
      Я прямо противоположного мнения. Это говорят те кто начинает в нём работать сами(без фундаментального обучения), после другого CADa. Но потом у них мнение меняется на противоположное. Этим заявлением, вы меня сильно огорчили (Слышал я как Windchill работает, и видел ваши вопросы выше - они меня повергали в ступор ..) а дальше то вы чего понаписали ... бред, вчера начали - увидели и давай помои поливать ... ну, флаг вам в руки ... про CAD продукты от отечественных разработчиков, просто намекну ...
×
×
  • Создать...