Не вижу модель

Автор Alekzander, 02.07.21, 11:13:38

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

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

Alekzander

Кстати да, будет оказия (а с Компасом она будет 100%) надо попробовать.

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

YNA

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

Vitalij Lysanov

https://forum.ascon.ru/index.php?topic=35820.msg286822#msg286822
Тут есть программа:




# -*- coding: utf-8 -*-
#|sbbbbbbb

import pythoncom
from win32com.client import Dispatch, gencache

import LDefin2D
import MiscellaneousHelpers as MH

#  Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
MH.iKompasObject  = kompas_object

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication  = application


Documents = application.Documents
#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
iDocument3D = kompas_object.ActiveDocument3D()

import pythoncom
from win32com.client import Dispatch, gencache

    #Получить интерфейсы API 7 КОМПАС
def get_kompas_api7():
            module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
            api = module.IKompasAPIObject(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(module.IKompasAPIObject.CLSID, pythoncom.IID_IDispatch))
            const = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0)
            return module, api, const.constants


module_7, api_7, const_7 = get_kompas_api7()
app = api_7.Application
doc = module_7.IKompasDocument3D(app.ActiveDocument) #Активная сборка
topPart = doc.TopPart
parts = topPart.Parts

ko=parts.Count



for nom in range(ko):

        iPart1 = iDocument3D.GetPart(nom)


        iplac1 = iPart1.GetPlacement()

        x=y=z=0
        ok,x,y,z = iplac1.GetOrigin(x, y, z)
        print (nom+1,"\t\t",x,"\t\t",y,"\t\t",z)


        xk=x
        yk=y
        zk=z





        ok,x,y,z=iplac1.GetAxis(x, y, z,0)
        print
        print (ok,x-xk,y-yk,z-zk)


        ok,x,y,z=iplac1.GetAxis(x, y, z,1)
        print (ok,x-xk,y-yk,z-zk)

        ok,x,y,z=iplac1.GetAxis(x, y, z,2)
        print (ok,x-xk,y-yk,z-zk)
        print("_______")
        print("")
        print("")



print("__________________")


for nn in range(1,ko+1,1):
    iPart1 = iDocument3D.GetPart(-1)


    iplac1 = iPart1.GetPlacement()
    dd=iPart1.GetFeature()
    iFeatureCollection = dd.SubFeatureCollection(False, False)
    iFeature = iFeatureCollection.GetByIndex(nn)

    ils1=iFeature.GetObject()
    print (nn,ils1.name)</source>




Выдает на сборке:


>>>
1        0.0        0.0        0.0
True 1.0 0.0 0.0
True 0.0 1.0 0.0
True 0.0 0.0 1.0
_______


2        -2.334903092828659e+17        6.518886141017892e+17        30.0
True 0.0 0.0 0.0
True 0.0 0.0 0.0
True 0.0 0.0 1.0
_______


__________________
1 Деталь
2 Деталь
>>>






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


 https://docs.google.com/document/d/1rjQyS7nj60jKDtY2St0q5bcv4wSwMO-csMQJkD8Skbw/edit?usp=sharing

тут это уже разбирали.

Можно рекомендовать отправить этот файл ...

Чтобы наконец отслеживали оси перед попыткой отображения

 



Это все поправимо, заменить оси и координаты




Alekzander

Цитата: YNA от 27.08.21, 12:30:10Вот, порылся по сусекам и нашёл подходящий пример. В приложенной сборке всего две детали, но увидеть их невозможно ибо там расстояния измеряются миллиардами километров!  :-)))

Я отключил фиксацию первой детали и для второй детали наложил совпадение начал координат ее и сборки
Одно единственное сопряжение деталей не помешало и сборка стала нормально отображаться

У меня же все детали были сопряжены до плюсиков и уехать никуда не могли. Где-то Компас начинал считать математику и где-то у него концы с концами не сходились...

YNA

По поводу начала координат, ориентации осей и т. п. тут всё правильно. Есть в Компасе нерешённые задачи (ну например как не решена ещё зададача движения 3-х и более гравитирующих тел  :)  ).
Вот примерное объяснение.
В детали построен эскиз и по нему создана плоскость (см. рис). Этой плоскостью отсекаем часть детали. Тут всё нормально, можно её миллион раз открывать и ни чего не случится. Теперь вставляем эту деталь в сборку.
При неудачной ориентации детали в сборке направление отрезания может неожиданно самопроизвольно перевернуться и будет дастиш катастрофиш.
В самом худшем случае этот переворот направления нормали может произойти только через несколько перезагрузок программы или вставки в сборку какой ни будь "неудачной" детали.
В этом примере отрезание плоскостью только частный случай из всевозможных бед, к которым может приводить такой кувырок направления нормали.  :(((

Alekzander

Цитата: YNA от 27.08.21, 14:36:47Есть в Компасе нерешённые задачи:(((

Категорически согласен! Но не столько же...

beginner

Цитата: YNA от 27.08.21, 14:36:47При неудачной ориентации детали в сборке направление отрезания может неожиданно самопроизвольно перевернуться
Вот бы увидеть эту "неудачную" ориентацию...

IgorT

Наблюдал подобное. Несколько раз. В самый неподходящий момент оно переворачивалось ни с того ни с сего!
Потом с помощью чьей-то матери вертал в зад. Развлекуха ещё там. Оно нам ещё надо?