Сборки. Устранение ошибки перестроения и сопряжений при удалении деталей.

Автор Vitalij Lysanov, 17.10.16, 10:34:24

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

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

Vitalij Lysanov


Пример сборки из трех деталей:
       Удаляем вторую деталь.
       Вставляем вторую деталь.
       Третья деталь установилась на место второй, и наоборот.



Предложение для конструкторов. Не удалять детали, а скрывать.

При программировании видно, что детали идут по номерам, определяемым по порядку построения деталей.
Предложение. Оставить за деталью номер, и не занимать номер новой деталью.

Тогда:
        Удаляем вторую деталь.
        Третья на своем месте.
        Сопряжения остались.
        Вставляем вторую деталь, и находим ей свое место.

Сопряжения сейчас также идут по номерам в сборке.





IgorT

Перечитал пять раз. Слова понимаю, смыл не улавливаю. Чувствую себя тупым.

semenkontorovskij

Поле чудес ))) Отгадал все буквы , но не отгадал слово...

Тут отгадал все слова, но не отгадал предложения...

СВ

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



Vitalij Lysanov



Я больше переживаю не за новую деталь, которую сопрягать, а за сотню деталей, которая идет за второй деталью.


Если деталь скрывать, номера сохраняются.


Что рисовать? Взять в сборку три детали, вторую удалить и вторую вставить.

sanyabin

А масса сохраняется если деталь скрывать? В чертеже потом тоже скрывать?
Кто-то еще понял в чем суть предложения?
или Вы хотите такие циферки как в Солиде?

Vitalij Lysanov

До массы еще не добрался.

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


Есть ошибка.

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

Сопряжения это тоже программа, и она работает с номерами деталей в сборке, иначе не было бы вопросов по сбою сопряжений. 

Для конструктора цифры не нужны, это внутренние цифры для программ Компаса.
Для конструктора, достаточно скрыть, а не удалить, и сопряжения будут на месте.

sanyabin

Да проектируйте нормально, и не будет никаких сбоев.
Для спецификации тоже нужно для 2ой детали ( скрытой) не создавать ОС, а для 2ой детали, вставленной еще раз, нужно создавать ОС?
И всё таки вернемся к массе. И если таких деталей в сборке не 3, а 393, то какие из них скрывать, а какие нет?
А если завтра конструктор уволится? Кому это разгребать?

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

sanyabin

Цитата: Vitalij Lysanov от 17.10.16, 11:38:40
Для конструктора, достаточно скрыть, а не удалить, и сопряжения будут на месте.

а для программиста, в данном случае, это получится говнокодить.

+ Благодарностей: 1

Vitalij Lysanov


Конкретные примеры для координат, это просто.

Например программа вида:
    iPart = Kompas6API5.ksPart(doc3d.GetPart(0))     
    iplac = Kompas6API5.ksPlacement(iPart.GetPlacement())            # ksPlacement
    x=y=z=0
    ok,x,y,z = iplac.GetOrigin(x, y, z)
     iplac.SetOrigin(0, 0, 100)
    iPart.SetPlacement(iplac)
    iPart.UpdatePlacement()
    iPart.Update()

    iPart = Kompas6API5.ksPart(doc3d.GetPart(1))    
    iplac = Kompas6API5.ksPlacement(iPart.GetPlacement())            # ksPlacement
    x=y=z=0
    ok,x,y,z = iplac.GetOrigin(x, y, z)
    iplac.SetOrigin(0, 0, 200)
    iPart.SetPlacement(iplac)
    iPart.UpdatePlacement()
    iPart.Update()

    iPart = Kompas6API5.ksPart(doc3d.GetPart(2))     
    iplac = Kompas6API5.ksPlacement(iPart.GetPlacement())            # ksPlacement
    x=y=z=0
    ok,x,y,z = iplac.GetOrigin(x, y, z)
    iplac.SetOrigin(0, 110, 300)
    iPart.SetPlacement(iplac)
    iPart.UpdatePlacement()
    iPart.Update()

Даст ошибку при изменении порядка деталей в дереве.

Пример на сопряжения нужно строить.

Про массу?

Из рекомендаций к предложениям:
... способ решения не указывать.

Работа с программы, это одно.
А если сопряжения привязаны к номеру детали, это другое.

Будем строить пример сбоя сопряжений при изменении порядка деталей в дереве.
 

IgorT

В до чего дошло... канструхтароф кодами пугають...
В разделе Моделирования так нет не выражаться! (почти как у классика)

Тема для предложений, но вроде конструкторами - разработчикам, т.к. кода который приведёт к ошибкам много и не всегда это ошибки приложения, тем более данным способом 99.99% конструкторов пользоваться не будут, если Вы нашли ошибку в API, то лучше на прямую писать в СТП, хотя API имеет, как минимум 3 решения: экспорт из DLL, API5 и API7.

Сопряжение - это ни разу не координаты. Это дифференциальное уравнение, описывающее взаимодействие сопрягаемых граней.

Ё

Цитата: Vitalij Lysanov от 17.10.16, 11:38:40
До массы еще не добрался.

На форуме много тем про сбой сопряжений при изменении сборки.


Так сбои-то проистекают от МНОГОЗНАЧНОСТИ решений систем уравнений!

Короче: "АСКОН"! Дайте Виталию какое-нибудь ответственное задание! А то он весь Форум в озадаченность введЁт... Когда до "массы" доберЁтся! (Так-то, привязывай все компоненты к СК, если предполагаешь замены...)

KrissKross

Тогда получайте компонент сборки по имени, а не по номеру

IParts7::Part


Компонент, заданный по индексу или по имени.

Тип данных – указатель на интерфейс IPart7.

Синтаксис Automation:

Part = iObject.Part (Index)

Part = iObject.GetPart (Index)

Входные параметры:
Index (Variant)
VT_BSTR - имя компонента,
VT_I4 - индекс компонента

Компонент, заданный по индексу или по имени.