1 574 сообщения в этой теме

Добрый вечер.

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

 Part.SelectionManager.EnableContourSelection = True

надо жмакнуть как то внутри контура.

Я пробовал через selectbyID2

boolstatus = Part.Extension.SelectByID2("Присадка_торец" & ind, "SKETCHREGION", ptx3d, pty3d, ptz3d, True, 4, Nothing, 0)

Но выделения области не происходит.

Как это сделать правильно?

(Вообще это нужно для того чтобы создать 2 выреза в разные стороны использовав при этом один эскиз.)

 

 

 

выделение_контура.jpg

Изменено пользователем Sla_68

Поделиться сообщением


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

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

Но выделения области не происходит.

Как это сделать правильно?

Добрый вечер. Немного подумав решил проблему по другому. Просто создал второй эскиз. Преобразованием объектов перенес те окружности какие мне были необходимы.

 

Я конечно еще тот почемучка.. Может надоел уже всех глупыми вопросами. Но их почему-то все больше и больше. По принципу " чем больше я знаю, тем больше понимаю что я ничего не знаю.. :wallbash:

На данный момент возник вопрос по силуэтным кромкам. Т.е есть плоскость, а на ней имеется эскиз. Необходимо перебрать силуэтные кромки вырезов, которые были созданы на той же детали. Как это сделать? Я по чесноку искал но нашел вот это http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.iface2~igetsilhoutteedges.html

Примеров нет на басике поэтому не пойму как применять

силуетные.jpg

Поделиться сообщением


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

Очевидно, что найденный метод работает только на си- ком языке. Так написано в ремарке. Что странно, любопытно и обидно, одновременно. Потому что синтакис метода приведен для разных языков. Однако метод подсказывает направление. Можно попытаться спроецировать фейс на плоскость.но не знаю, есть ли подобные методы..

Изменено пользователем maxfox

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 14.09.2017 в 08:52, maxfox сказал:

Очевидно, что найденный метод работает только на си- ком языке. Так написано в ремарке. Что странно, любопытно и обидно, одновременно. Потому что синтакис метода приведен для разных языков. Однако метод подсказывает направление. Можно попытаться спроецировать фейс на плоскость.но не знаю, есть ли подобные методы..

жаль если оно так как вы говорите...

 

Хотел спросить вот что. Обратил внимание на то что макрорекордер не пишет код полностью . А только отдельные фрагменты. Может ли это связано как либо с локализацией на русском языке? Дело в том что при работе с кодом, при использовании "меню поиска". невозможно использовать кириллицу. Хотя в экселе возможно.

Поделиться сообщением


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

Хотел спросить вот что. Обратил внимание на то что макрорекордер не пишет код полностью . А только отдельные фрагменты.

Можно попробовать запись через Пуск-...-Solidworks####-Инструменты Solidworks - Solidworks RX и там Запись ошибки.

1 час назад, Sla_68 сказал:

Может ли это связано как либо с локализацией на русском языке?

Всякое бывает, но наверно врятли.

 

1 час назад, Sla_68 сказал:

Дело в том что при работе с кодом, при использовании "меню поиска". невозможно использовать кириллицу.

Вероятно связанно с тем, что VBA не локализовали на русский и/или взяли корявый исходник без доработки, т.к. API то только на Английском, вот и не думали о совместимости с другими языками.

У Excel аудитория побольше вот и подумали о русском... Бывает локализация, что все функции и процедуры на русский переведены.

Изменено пользователем Kelny

Поделиться сообщением


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

Можно попробовать запись через Пуск-...-Solidworks####-Инструменты Solidworks - Solidworks RX и там Запись ошибки.

После записи макроса там вполне себе нормальный код. Только вот беда -он не воспроизводит все те действия которые я совершал при его записи. Те что то записалость а что то нет.

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

Поделиться сообщением


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

Подскажите пожалуйста. Мне необходимо сохранить твердые тела как детали , плюс сборка к ним. В справке нашел вот это http://help.solidworks.com/2017/english/api/sldworksapi/Create_Split-body_Feature_Example_VB.htm

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

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swFeat As SldWorks.Feature
Dim swFeatMgr As SldWorks.FeatureManager
Dim swSplitBodyFeat As SldWorks.SplitBodyFeatureData
Dim boolstatus As Boolean
'Dim BodyFolder As String

Sub main()
    
    Dim vBodiesToMark As Variant
    Dim vBodyNames As Variant
    Dim vBodyOrigins As Variant
    
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swSelMgr = swModel.SelectionManager
    Set swFeatMgr = swModel.FeatureManager
    Set swModelDocExt = swModel.Extension
  
    
    fileName = swModel.GetPathName
    num = InStrRev(fileName, "\", Len(fileName)) '
    Folder = Mid(fileName, 1, num - 1) '

Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
        Debug.Print swFeat.GetTypeName
        If swFeat.GetTypeName = "SolidBodyFolder" Then
            Exit Do
         End If
    Set swFeat = swFeat.GetNextFeature
Loop

Set BodyFolder = swFeat.GetSpecificFeature2
    BodyFolderTypeE = BodyFolder.Type '2
    BodyCount = BodyFolder.GetBodyCount
    vBodies = BodyFolder.GetBodies 'тела
    
ReDim bodyNames(UBound(vBodies)) As String
ReDim bodyOrigins(UBound(vBodies)) As Object

For i = LBound(vBodies) To UBound(vBodies)
        bodyNames(i) = Folder & "\" & vBodies(i).Name & ".sldprt"
        Set bodyOrigins(i) = Nothing
Next
    vBodiesToMark = vBodies
    vBodyNames = bodyNames
    vBodyOrigins = bodyOrigins

    Set swFeat = swFeatMgr.PostSplitBody((vBodiesToMark), True, (vBodyOrigins), (bodyNames))
End Sub

Разделения не происходит. Может метод не тот?

Поделиться сообщением


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

не совсем то что надо

что-то типа этого:

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

Option Compare Text
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim swFeatMgr As SldWorks.FeatureManager
Dim swBodyFolder As SldWorks.BodyFolder
Dim i As Long
Dim nummer As String
Dim count As Integer
Dim bret As Boolean
Dim iets As IFeature
Dim v1 As Variant
Dim myBodies() As Body2
Dim nB As Integer
Dim fileName() As String
 

Sub GetVariantOfBody(swFeature As SldWorks.Feature, bodyList As Variant)
    Dim tt As Variant
    bodyList = Empty
    Set swBodyFolder = swFeature.GetSpecificFeature2
    count = swBodyFolder.GetBodyCount
    If (count < 1) Then
        'MsgBox ("There are no bodies. Please create a body.")
    Else
        bodyList = swBodyFolder.GetBodies
    End If
End Sub

 Sub main()
 Dim subFeat As Feature
 
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swFeat = swModel.FirstFeature
    Set swFeatMgr = swModel.FeatureManager
 
    a = 0
 
    nB = -1
    Do While Not swFeat Is Nothing
        Dim Name As String
        Name = swFeat.GetTypeName2
        If (Name = "SolidBodyFolder") Then
            Set subFeat = swFeat.GetFirstSubFeature
            While Not subFeat Is Nothing
                Name = subFeat.GetTypeName2
                If (Name = "CutListFolder") Then
                    GetVariantOfBody subFeat, v1
                    If IsEmpty(v1) = False Then
                        nB = nB + 1
                        ReDim Preserve myBodies(nB)
                        Set myBodies(nB) = v1(0)
                    End If
                End If
                Set subFeat = subFeat.GetNextSubFeature
            Wend
            Exit Do
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop

    v1 = myBodies
    count = UBound(v1)

    ReDim fileName(0 To count)
    Dim vFileName As Variant
    Dim myTitle As String
   
    myTitle = Replace(swModel.GetTitle, ".sldprt", "")

    For i = 1 To count + 1
        naam = Left(myTitle, Len(myTitle) - 2) & Format(i, "00")
        fileName(i - 1) = "C:\temp\" & naam & ".SLDPRT"
    Next

    vFileName = fileName
   
    Set swFeat = swFeatMgr.CreateSaveBodyFeature((myBodies), vFileName, "C:\temp\" & myTitle & ".SLDASM", False, False)

End Sub

 

1 пользователю понравилось это

Поделиться сообщением


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

 

Отлично. Спасибо за наводку.

2 часа назад, Kir95 сказал:

    Set swFeat = swFeatMgr.CreateSaveBodyFeature((myBodies), vFileName, "C:\temp\" & myTitle & ".SLDASM", False, False)

А как на счет визуальных параметров?

 Propagate visual properties - в русской локализации "распространить свойства видимости"

 

Поделиться сообщением


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

Propagate visual properties

Именно этого нет, почему-то:

 

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

CreateSaveBodyFeature.thumb.JPG.8ad37bcf7be41c011186dc02ad6dbe1d.JPG

 

Поделиться сообщением


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

Да. Я тоже обратил внимание. Думал может дополнительно существует команда.

Поделиться сообщением


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

Добрый вечер. Подскажите пожалуста. Не смог найти как сделать управляемый размер эскиза.

Set myDisplayDim = Part.AddDimension2(x1 , y1 , 0)

Поделиться сообщением


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

@Sla_68

IDisplayDimension^dimВ = (IDisplayDimension^)detal->AddDimension2(0.1,0.1,0.1);
IDimension^ cDimВ = dimВ->IGetDimension();
cDimВ->DrivenState = (int)swDimensionDrivenState_e::swDimensionDriven;//установили управляемым!!!!

управляемость определяется параметром размера.

1 пользователю понравилось это

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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

  • реклама

  • Реклама

  • Ближайшие события

    Предстоящих событий не найдено
  • Дни рождения сегодня

    1. Dypeabehece
      Dypeabehece
      (31 год)
    2. Evgenii88
      Evgenii88
      (29 лет)
    3. hawk_07770
      hawk_07770
      (31 год)
    4. hellena
      hellena
      (29 лет)
    5. JohnFill
      JohnFill
      (36 лет)
    Просмотреть все