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

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

@Maik812 К сожалению, задача повисла((( надо продолжить, есть другие проекты, которые отнимают много времени. Вы как то разделяете детали, сборки, уникальность деталей или обще кол-во дет. в сборке? 

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


5 часов назад, Redinskiy сказал:

Вы как то разделяете детали, сборки, уникальность деталей или обще кол-во дет. в сборке? 

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

так что общее количество деталий.

обычно так. но все же от прожекта зависит.

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

Если речь о сложности и трудоемкости, то количество деталей и их композиция в сборке не всегда ее характеризует. 7000 одинаковых деталей, выполненных массивом, это одна деталь. В оценке "производительности по проекту" (кстати, производительности кого/чего?) трудозатраты в большей степени определяются количеством связей, количеством и трудоемкостью "изготовления" уникальных деталей. Вообще говоря, подобные задачи стоит решать методом "весовых коэффициентов", но это отдельная история.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

Вечер добрый!

Копаюсь в SW API в районе штриховок.

Подскажите, как по FaceHach получить Component ?

Пытаюсь через FaceHatch -> Face -> GetFeature() -> GetEntity() -> GetComponent() , но получаю Null еще на  уровне Feature.

Как я понимаю что FaceHatch  создаются SW специально на сечениях, вспомогательных видах с сечениями и т.д., но поверхностями компонента не являются. Как их связать с компонентом ?

 

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, nicomed сказал:

Пытаюсь через FaceHatch -> Face -> GetFeature() -> GetEntity() -> GetComponent() , но получаю Null еще на  уровне Feature

Здесь пишут, что Feature лишний в цепочке 

How to get the component from a selected face (... | SOLIDWORKS Forums

 

Ссылка на сообщение
Поделиться на других сайтах
54 минуты назад, Kir95 сказал:

Здесь пишут, что Feature лишний в цепочке 

How to get the component from a selected face (... | SOLIDWORKS Forums

 

По хелпу у IFace2 нет интерфейса GetEntity(), а есть? GetFeature(). А, главное, у "них" разговор про просто выделенную face. С ней проблем нет, все работает. Проблемка именно с FaceHatch.

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

Доброго утра!

Уточняющие вводные к предыдущему вопросу:

На чертеже выбираем вид:

View view = swSelMgr.GetSelectedObject6(1, 0) as SolidWorks.Interop.sldworks.View;

Из вида выбираем заштрихованные поверхности (FaceHatch):

foreach (FaceHatch fh in view.GetFaceHatches())

Далее идем по такой цепочке методов (все работает, по крайней мере имена feature начитываются корректно):

                    Face2 face = h.Face;
                    Body2 body = face.GetBody();
                    Feature feature = body.GetFeatures()[0];

Далее привожу Entity entity = feature as Entity;

Получаю компонент: Component2 comp = entity.GetComponent(); - и тут появляется null.

Где я не прав ?

 

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, nicomed сказал:

Доброго утра!

Уточняющие вводные к предыдущему вопросу:

На чертеже выбираем вид:

View view = swSelMgr.GetSelectedObject6(1, 0) as SolidWorks.Interop.sldworks.View;

Из вида выбираем заштрихованные поверхности (FaceHatch):

foreach (FaceHatch fh in view.GetFaceHatches())

Далее идем по такой цепочке методов (все работает, по крайней мере имена feature начитываются корректно):

                    Face2 face = h.Face;
                    Body2 body = face.GetBody();
                    Feature feature = body.GetFeatures()[0];

Далее привожу Entity entity = feature as Entity;

Получаю компонент: Component2 comp = entity.GetComponent(); - и тут появляется null.

Где я не прав ?

 

А выделенные имена переменных - разные, это так и должно быть?

Изменено пользователем brigval
Ссылка на сообщение
Поделиться на других сайтах

.. это ошибка  в сообщении, решил сделать имена понятнее и не везде откорректировал ...

надо читать : Face2 face = fh.Face;

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, nicomed сказал:

Доброго утра!

Уточняющие вводные к предыдущему вопросу:

На чертеже выбираем вид:

View view = swSelMgr.GetSelectedObject6(1, 0) as SolidWorks.Interop.sldworks.View;

Из вида выбираем заштрихованные поверхности (FaceHatch):

foreach (FaceHatch fh in view.GetFaceHatches())

Далее идем по такой цепочке методов (все работает, по крайней мере имена feature начитываются корректно):

                    Face2 face = h.Face;
                    Body2 body = face.GetBody();
                    Feature feature = body.GetFeatures()[0];

Далее привожу Entity entity = feature as Entity;

Получаю компонент: Component2 comp = entity.GetComponent(); - и тут появляется null.

Где я не прав ?

 

А какая цель этого кода?

Изменено пользователем Shvg
Ссылка на сообщение
Поделиться на других сайтах

Ну ..., если глобально, то, подозреваю, изобретение очередного велосипеда, ибо "патентный поиск аналогов" не производил.

... а конкретнее, есть мысль попробовать приведение штриховок на видах в порядок с учетом того,  что некоторые подсборки могут быть сварные (т.е.  детали штрихуются одинаково), а некоторые обычные, т.е. штриховка каждой детали своя.

На данном этапе хочу получить компонент, которому принадлежит заштрихованная грань отображенная в разрезе.

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, nicomed сказал:

Ну ..., если глобально, то, подозреваю, изобретение очередного велосипеда, ибо "патентный поиск аналогов" не производил.

... а конкретнее, есть мысль попробовать приведение штриховок на видах в порядок с учетом того,  что некоторые подсборки могут быть сварные (т.е.  детали штрихуются одинаково), а некоторые обычные, т.е. штриховка каждой детали своя.

На данном этапе хочу получить компонент, которому принадлежит заштрихованная грань отображенная в разрезе.

Парадокс заключается в том, что когда вы мышкой выделите грань на виде, то можете получить ссылку на компонент, а иначе нет. Этот "велосипед" я катал много лет назад, не получилось. У меня была задача, чтобы штриховка компонента была одной на всех видах.

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

Мне вот это место не понятно

Цитата

Далее привожу Entity entity = feature as Entity;

 

Правда, в хелпе не смотрел и код не пробовал.

Но по идее, на вскидку

entity - это линия на виде, а

feature - это узел в дереве...

 

В одном случае feature это Feature, а в другом - Entity

Может в этом причина?

Изменено пользователем brigval
Ссылка на сообщение
Поделиться на других сайтах

 

3 минуты назад, Shvg сказал:

Парадокс заключается в том, что когда вы мышкой выделите грань на виде, то можете получить ссылку на компонент, а иначе нет. Этот "велосипед" я катал много лет назад, не получилось. У меня была задача, чтобы штриховка компонента была одной на всех видах.

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

12 минут назад, brigval сказал:

Мне вот это место не понятно

 

Правда, в хелпе не смотрел и код не пробовал.

Но по идее, на вскидку

entity - это линия на виде, а

feature - это узел в дереве...

 

В одном случае feature это Feature, а в другом - Entity

Может в этом причина?

По хелпу ТЫЦ кастовать Feature в Entity можно.

Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, nicomed сказал:

 

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

По хелпу ТЫЦ кастовать Feature в Entity можно.

А проверять типы не пробовали? После присвоения

Цитата

 

 ' Get type through entity interface
    Debug.Print "Entity type as defined in swSelectType_e: " & swEntity.GetType
    Debug.Assert (swEntity.GetType = swSelectType_e.swSelBODYFEATURES)

    ' Get type through feature interface
    ' Feature inherits from Entity, so will actually call Entity::GetType
    Debug.Print "Entity type as defined in swSelectType_e: " & swFeature.GetType
    Debug.Assert (swFeature.GetType = swSelectType_e.swSelBODYFEATURES)

 

 

Ссылка на сообщение
Поделиться на других сайтах
13 минут назад, nicomed сказал:

 

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

Честно говоря, не помню. Возникла проблема назначить нужную штриховку компоненту на данном виде. Такой функции в API SW я тогда не нашел. Сейчас ее тоже как нет. Я просто устанавливал штриховку вручную и заносил ее данные в файл, а когда мышкой тыкал в компонент на другом виде, то мне моя программа показывала, что штриховка занесена и ее параметры и я устанавливал эти данные штриховки в этом виде.

Ссылка на сообщение
Поделиться на других сайтах
49 минут назад, Shvg сказал:

Далее привожу Entity entity = feature as Entity;

На С не программирую, но просто интересно. То что выделил, так и должно быть?

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, brigval сказал:

На С не программирую, но просто интересно. То что выделил, так и должно быть?

Официальную версию не скажу, ибо сам начинающий самоучка, но такая запись работает, как и :

Entity entity = (Entity) feature;

Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, nicomed сказал:

Официальную версию не скажу, ибо сам начинающий самоучка, но такая запись работает, как и :

Entity entity = (Entity) feature;

Спасибо.

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

Посмотрел малость.

Когда вы выходите на Body, то как бы заходите внутрь детали и просматриваете Features детали.

Изнутри детали компонент сборки не получить, на верх не выйти.

Поэтому Entity.GetComponent будет всегда Null

Чтобы Entity выдал компонент сборки, изображенной на виде, этот Entity должен быть примитивом (линией, поверхностью, вершиной или swViewEntityType_SilhouetteEdge), видимым на виде чертежа.

Поэтому, задача может быть такой - от штриховки перейти к примитивам вида.

Как это выполнить пока не понятно.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...