Jump to content

Новичок в API


streamdown

Recommended Posts

streamdown

Добрый день.

Подскажите пожалуйста, как посмотреть логи подключения библиотеки к Компасу?

По совету интернетов, собрал "Step2" из SDK. Но при подключении к Компасу - ругань.

Скрытый текст

K62pEDY7QO.png

Через панельку ActiveX тоже не работает. Хотя там в списке библиотека есть

Удалил библиотеку из конфигурации.

Попробовал просто добавить через ActiveX - ошибка и список пуст.

Edited by streamdown
Link to post
Share on other sites


UnPinned posts
46 минут назад, streamdown сказал:

А вы попробуйте туда подсунуть part7

Фрагмент перебора массива с элементами сборки

Dim docKomp7 As KompasAPI7.Documents= gAppAccess7.Documents 'интерфейс документов

Dim nP As KompasAPI7.Part7

For z = 0 To UBound(mPartSBexALL) 'UBound(mPartSBex)
            nP = mPartSBexALL(z) ' mPartSBex(z)
            nK = sbMod.InstanceCount(nP)
            ReDim Preserve masPartALL(masPartALL.GetUpperBound(0) + 1)
            masPartALL(masPartALL.GetUpperBound(0)) = nP
            nFeat = nP
            propKeep = nP 'для чтения свойств
            Dim mKomp As Object = propMn.GetProperties(docKomp7.Item(nP.FileName))
            Dim sTyp As String = readPropKMP(mKomp, 20, "Раздел спецификации")
            If sTyp Is Nothing Then
                If nP.Standard Then sTyp = "Стандартные изделия" Else sTyp = "Детали" 'не всегда раздел присвоен явно в компасе
            End If
            Dim sNumber As String = readPropKMP(mKomp, 4)

.....

 

  • Нравится 1
Link to post
Share on other sites
streamdown
44 минуты назад, kvin сказал:

readPropKMP(mKomp, 20, "Раздел спецификации")

Это я так понял с указанием имени. А если я их не знаю? Т.е. хочу все перебрать

45 минут назад, kvin сказал:

readPropKMP

вот это можете ещё показать? Пожалуйста.

Link to post
Share on other sites
15 часов назад, streamdown сказал:

Это я так понял с указанием имени. А если я их не знаю? Т.е. хочу все перебрать

Это функция получения конкретного свойства из массива. Вывод всех свойств аналогичен...

 

Function readPropKMP(ByVal mArProp As Object, ByVal ID As Double, Optional ByVal sN As String = "") As Object
        'читаем свойство из массива свойств mArProp
        'ID=4 - обозначение; 5 - Наименование ; 9 - материал; 10 - плотность кг/м.куб
        '15 - позиция; 20 - раздел спецификации
        '21 - разработал; 22 - проверил; 23 - утвердил; 24 - т.контроль; 25 - н.контроль
        'Типоразмер(173984476184)
        Dim nProp As KompasAPI7._Property 'свойство
        Dim z As Integer
        Dim sVal As Object = Nothing
        Dim sF As Boolean
        For z = 0 To UBound(mArProp)
            nProp = mArProp(z)
            If nProp.Id = ID Or nProp.Name = sN Then
                If propKeep.GetPropertyValue(nProp, sVal, True, sF) Then
                    readPropKMP = sVal '+ sF.ToString.ToUpper
                Else
                    readPropKMP = Nothing
                End If
                Exit Function
            End If
        Next
        readPropKMP = Nothing
    End Function

  • Нравится 1
Link to post
Share on other sites
streamdown

@kvin добрый день. Подскажите пожалуйста


 

IPropertyMng propertyManager = (IPropertyMng) app;

IPart7 part;// Компонент, полученный при переборе сборки

var propertyKeeper = (IPropertyKeeper) part;

//перебираем все свойства, полученные от  propertyManager.GetProperties

...

var prp = (_Property) prop;

propertyKeeper.SetPropertyValue(prp, founded.Name, true);

 

При таком способе задания, свойства попадают на уровень компонентов сборки, но если открыть отдельно деталь, то там этих свойств нет. Так и задумано?

Edited by streamdown
Link to post
Share on other sites
KrissKross
10 часов назад, streamdown сказал:

При таком способе задания, свойства попадают на уровень компонентов сборки, но если открыть отдельно деталь, то там этих свойств нет. Так и задумано?

Да вот такое странное поведение Компаса

 

Компас - хранит (зачем-то) 2 значения основных свойств - одно принадлежит сборке другое детали

отсюда сделаем несколько пояснений:

1. Для синхронизации свойств из ДСЕ в сборку (только в этом направлении) - есть кнопка - По источнику

По источнику.png

 

2. Возможная причина появления - использование одной ДСЕ  в разных сборках с разными свойствами

насколько помню такое поведение обсуждалось в ветке SW

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

т.е. ИМХО больше вреда чем пользы

 

Совет

проделывать в ручную действия прежде чем автоматизировать

  • Нравится 1
Link to post
Share on other sites
IgorT

ИМХО это сделано по причине возможности использования внешних переменных Компаса. 

  • Нравится 1
Link to post
Share on other sites
30.04.2022 в 10:11, streamdown сказал:

Так и задумано?

Да, файл может быть один а компонентов сборки несколько (разные наименования и обозначения). Пока не присвоишь всем одинаковое Обозначение - это различные компоненты для Спецификации...

Я назначаю свойства так:

Скрытый текст

 

Public Sub KMP_AtrWriteFile(ByRef spath As String, Optional ByVal bWrite2File As Boolean = False)
        'запись атрибутов в файл компаса: bWrite2File = true - писать свойства и файла модели; false - писать свойства только компонента
        'одинаковых компонентов может быть много, а файл один
        With Glavnaa
            For z As Integer = 0 To masPartALL.GetUpperBound(0)
                If masPartALL(z).FileName = spath Then
                    propKeep = masPartALL(z)
                    'это запись свойств Компонента
                    Dim mArProp As Object = propMn.GetProperties(docKomp7.Item(masPartALL(z).FileName)) '(documentK7) 'массив свойств
                    'наименование .Текст1.Text
                    NewProperti(mArProp, 5, PastPointAtr(.Текст1.Text))
                    'обозначение PastPointAtr(.Текст2.Text)
                    NewProperti(mArProp, 4, PastPointAtr(.Текст2.Text))
                    'мат.обозначение
                    NewProperti(mArProp, 9, PastPointAtr(.Текст4.Text))
                    'плотность
                    NewProperti(mArProp, 10, 7800)
                    ' теперь тоже самое для файла модели
                    If bWrite2File Then
                        Dim docModel As KompasAPI7.IKompasDocument3D
                        docModel = docKomp7.Open(spath, False) 'открываем нужный документ
                        Dim part7 As KompasAPI7.IPart7 = docModel.TopPart
                        propKeep = part7
                        If Not docModel Is Nothing Then
                            mArProp = propMn.GetProperties(docModel) 'массив свойств
                            'наименование .Текст1.Text
                            NewProperti(mArProp, 5, PastPointAtr(.Текст1.Text))
                            'обозначение PastPointAtr(.Текст2.Text)
                            NewProperti(mArProp, 4, PastPointAtr(.Текст2.Text))
                            'мат.обозначение
                            NewProperti(mArProp, 9, PastPointAtr(.Текст4.Text))
                            'плотность
                            NewProperti(mArProp, 10, 7800)
                            'закрываем файл
                            docModel.Close(Kompas6Constants.DocumentCloseOptions.kdSaveChanges)
                        End If
                    End If
                End If
            Next
        End With
    End Sub

 

 Public Sub NewProperti(ByVal mArProp As Object, ByVal ID As Integer, ByVal sNew As Object, Optional ByVal sName As String = "")
        'смена свойства
        'ID=4 - обозначение; 5 - Наименование ; 9 - материал; 10 - плотность кг/м.куб
        '15 - позиция; 20 - раздел спецификации
        '21 - разработал; 22 - проверил; 23 - утвердил; 24 - т.контроль; 25 - н.контроль
        Dim nProp As KompasAPI7._Property 'свойство
        Dim sProp = Nothing 'значение свойства
        Dim z As Integer
        For z = 0 To UBound(mArProp)
            nProp = mArProp(z)
            If nProp.Id = ID Or nProp.Name = sName Then
                If nProp.ReadOnly Then
                    nProp.ReadOnly = False
                    nProp.Update()
                End If
                Dim erB As Boolean
                erB = propKeep.SetPropertyValue(nProp, sNew, True)
                If erB = False Then
                    Debug.Print(nProp.Name & " - ОШИБКА ЗАПИСИ")
                End If
                nProp.Update()
                Exit Sub
            End If
        Next
    End Sub

 

 

  • Нравится 1
Link to post
Share on other sites
streamdown

Добрый день.

А как можно добраться до переключения вида связи свойства у компонента сборки?

Скрытый текст

KOMPAS_R501wdhKlK.png

И сразу вопрос: свойства в Компасе есть и простые и сложные?

К примеру, "Раздел спецификации" - это просто текст или чтоб его обновить у компонента нужно сначала правильно это свойство создать кодом и потом присвоить компоненту?

04.05.2022 в 08:45, kvin сказал:

Я назначаю свойства так:

Понял. Погуглил ещё. Свойства для входящих обычно вносят редактируя этот компонент.

Link to post
Share on other sites
  • 2 weeks later...
streamdown
04.05.2022 в 08:45, kvin сказал:

20 - раздел спецификации

Подскажите пожалуйста, а как вы устанавливаете значение для этого свойства? Просто текст туда вроде не подходит.

Link to post
Share on other sites
45 минут назад, streamdown сказал:

как вы устанавливаете значение для этого свойства?

Читать читаю, а изменять не было пока необходимости... Если удастся изменить, расскажите как ))

Link to post
Share on other sites
  • 3 months later...

Как настроить отображение точек после номера пункта в технических требованиях через API? 

Link to post
Share on other sites
  • 8 months later...
brigval
29.08.2022 в 13:20, kvin сказал:

Как настроить отображение точек после номера пункта в технических требованиях через API? 

Если ТТ вставляются программно, можно программно проставлять и номера пунктов и точки к ним.

Link to post
Share on other sites
  • 1 year later...

Картинки к предыдущему сообщению:

Читаю внешние ссылки файла. Среди них имеются ссылки которые никуда не ведут. Можно их как-то убрать?

 

13.jpg

12.jpg

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Сообщения

    • gemini74
      Здравствуйте. Тема будет интересна тем, кто занимается проектированием химических аппаратов, пластиковых , или металлических. Имеется выпарной аппарат, полипропиленовый . Номинальный объем -6,5 м3, рабочий -5 м3.Рабочее давление - разряжение до 0,4 -3 кПа. Рабочая температура жидкости - до 90 град С. Диаметр корпуса - 2000 мм. Есть результаna гидростатического нагружения с учетом температуры на внутренней поверхности стенок. Продел текучести полипропилена [25 МПа ]. Прочность сильно падает с температурой. При 25 град С все нормально. Но при 90 град на стенках выдает неадекватные результаты. Мах напряжение на краю патрубка .  В расчете не учитывается разряжение. Кто подскажет, поделится опытом расчетов на устойчивость сосудов под вакуумом?  
    • zobza
      Не знаю задумку, да и версии 15 нет, но раз проблема в резьбе - удалите её из булевой операции
    • Shura762
      Первое - нереализуемо, второе - проще, выбор за вами. Хорошего дня.
    • bri
      Совсем небольшие. Радиатор слишком второстепенная штука чтобы потом подчищать его)
    • ACruel
      @maxx2000 а есть возможность еще раз закинуть куда-нибудь?))
    • РоманВ
      Точнее 2022сп5 версия. Самая глючная из всех, что я видел (
    • the Devil incarnate
      А как в этом случае с чертежами быть? Семейство тем и хорошо, что ты можешь сделать чертёж на всё семейство, а все изменяемые параметры всех деталей в виде таблицы вынести. А как быть тут?
    • Марсель
      Есть у меня модель, есть. И чертёж с ассоциативной зависимостью тоже. Мне этот выродок в модели мешает. От него уже осталась рекурсивная булева с одной резьбой.      Дело то не в конструктиве, а в отношениях между операциями. Конструктив может быть любой. Мне рекурсию удалить надо, а не документ переделать.
    • РоманВ
      Имеется сборка с большим количеством похожих элементов. Нужно промаркировать их все согласно схеме для дальнейшей проверки всех связей между ними. Т.е. с одного взгляда на 3д сборку я должен видеть на элементах те же обозначения, что и на схеме. SW предлагает вот такое, ранее я таким даже успешно пользовался. Но в этой версии (солида 2020сп5) в данной функции почему-то погашена возможность делать выноски и привязывать их куда-то. Просто текст никуда не привязывается и никак не следует за деталью или ее гранью. Подскажите, как промаркировать на сборке детали? Делать в них вырезы не предлагайте, детали одинаковые, но по схеме разные (компоненты гидравлики).
    • Ageres08
      Добрый день!подскажите ,пож-та, у кого есть опыт использования приложения "валы и передачи" в компасе-возможно в нем построить цилиндрическое червячное колесо с параметрами как на скриншоте? Когда выставляю угол 30 гр- в приложении появляются красные строчки с ошибками и модель,соответсвенно,не гененерируется. Параметры червячного вала вот такие. Червяк ,в принципе, строится(с некоторыми доработками руками потом) Изначальные параметры на колесо и червяк вот такие.
×
×
  • Create New...