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

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

Здравствуйте! Спасибо за наводку!

А чтобы заполнить компоненты можно воспользоваться этим методом: http://help.solidworks.com/2016/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.iassemblydoc~createsmartcomponent.html

 

Воспользовался данным примером (то что мне было нужно):

Activate Smart Feature in an Assembly Example (VBA)

http://help.solidworks.com/2014/english/api/sldworksapi/Activate_Smart_Features_in_an_Assembly_Example_VB.htm

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


Добрый вечер! Подскажите пожалуйста!

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

Можно открыть компонент без активации (в тихом режиме чтобы текущей документ не терял фокус)?

 

Пока делаю так:

Сохраняю ссылку на текущей документ

Открываю компонент

Перевожу фокус на документ

Расставляю компоненты по местам 

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

 

Канеш можно

VBA:


swApp.DocumentVisible False, swDocumentTypes_e.swDocPART
swApp.DocumentVisible False, swDocumentTypes_e.swDocASSEMBLY
Set swModel = swApp.OpenDoc6(ModelFromDrawingView, nDocType, swOpenDocOptions_Silent, Data.ConfigName, nErrors, nWarnings)
swApp.DocumentVisible True, swDocumentTypes_e.swDocPART
swApp.DocumentVisible True, swDocumentTypes_e.swDocASSEMBLY
Ссылка на сообщение
Поделиться на других сайтах

 

Канеш можно

VBA:

Спасибо большое (то что нужно)! 

Еще один вопросик: Можно методами SW API заморозить окно документа т.е. (не отображать выполнение действий)?

Или только через win api

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

 

Канеш можно)))

http://cccp3d.ru/topic/27048-solidworks-api/page-13#entry545194

Главное не забывать включать обратно и ТЕМ БОЛЕЕ включать когда код может обвалиться, иначе потребуется перезапуск SW.

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

Еще бы посоветовал вот этим методом пользоваться: IAssemblyDoc::AddComponentshttp://help.solidworks.com/2012/English/api/sldworksapi/Add_Components_Example_VB.htmвместо AddComponentX

 

Преимущества:

 

1) Документы не нужно открывать перед выполнением метода, как нужно для AddComponent

2) Можно вставлять несколько документов одновременно (или несколько экземпляров одного компонента)

3) Можно предопределить позиции компонентов перед вставкой через трансформацию. Если известно заранее может существенно улучшить быстродействие.

 

~Артем

 

Добрый вечер! Подскажите пожалуйста!

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

Можно открыть компонент без активации (в тихом режиме чтобы текущей документ не терял фокус)?

 

Пока делаю так:

Сохраняю ссылку на текущей документ

Открываю компонент

Перевожу фокус на документ

Расставляю компоненты по местам 

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

Артем, Спасибо за совет (попробую разобраться и реализовать)

Еще бы посоветовал вот этим методом пользоваться: IAssemblyDoc::AddComponents3 http://help.solidwor..._Example_VB.htmвместоAddComponentX   Преимущества:   1) Документы не нужно открывать перед выполнением метода, как нужно для AddComponent 2) Можно вставлять несколько документов одновременно (или несколько экземпляров одного компонента) 3) Можно предопределить позиции компонентов перед вставкой через трансформацию. Если известно заранее может существенно улучшить быстродействие.
 
Ссылка на сообщение
Поделиться на других сайтах
Можно ли ее подружить с SW API??
 В каком плане? Если вы, к примеру, на выходе имеете массив байт, то как вы его "подружите" с SW API? Что именно вы хотите там подружить?

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


Во, даже есть всякие примеры: http://help.solidworks.com/2015/english/api/sldworksapi/configurationtraversalcpp.htm

С import и прочей CoCreateInstance

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

 

Как раз:

 

использовать методы и функции SW API в LabView

 

 

 

Точнее, увидев, как я ковыряю VBA + API SW, мне один из наших КИПовцев предложил использовать LabView. Типа:

 

подключите там нужные библиотеки

 

 

А где и какие не уточнил.. Вот я и решил тут поинтересоваться..

 

Если вы, к примеру, на выходе имеете массив байт, то как вы его "подружите" с SW API?

 

 

В смысле "массив байт"??

 

В LabView можно, например, сделать расчет аппарата или целой установки..И по результатам расчета построить модель в солиде.. Можно, конечно вывести результаты в текстовый файл и скормить его солиду как файл уравнений.. Но это не наш путь..

 

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

 

Во, даже есть всякие примеры: http://help.solidwor...raversalcpp.htmС import и прочей CoCreateInstance

 

Спасибо..

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

Есть макрос VBA, который по очереди с несколькими чертежами делает следующие действия:

 

1 Открывает чертеж.

2 Выполняет некоторые операции.

3 Закрывает чертеж.

4 Выбирает следующий чертеж из списка..

5 Далее пп. 1-4 до конца списка..

 

Так вот, если в файле чертежа больше одного листа, всплывает окно (точнее, MessageBox), предлагающее обновить виды на неактивных листах.

Или окно "уравнения ссылаются на сборку. ..........."

Пока не нажмешь кнопку работа макроса не продолжится..

 

Можно ли как то программно избавиться от этих окон??

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

 Моё знакомство с LabView заключалось в том, что коллега напртив делал логику и программировал платы. Из-за этого такой и вывод - что из ПП можно вывести в SW?

 

 

Еще можно, наверное, было бы PDMку состряпать

  :smile: ежегодно на этом форуме находятся пользователи с точно такой же идеей. Спустя пару месяцев исчезают. Наверное состряпали)))

 

 

всплывает окно

 каким методом открываете деталь?

Так, америкосы на своём форуме сдулись. Все молчком. Подниму вопрос тут.

Лицензионное соглашение:

Вам не разрешается использовать Программное обеспечение или Документацию для разработки приложений, предназначенных для передачи третьим сторонам, если только Вы не являетесь доверенным участником программы SOLIDWORKS Partner Program или заключили соглашение с DS SolidWorks о таком использовании или передаче.

 

А теперь вопрос. Самое большинство участников данного топика - пираты?  :biggrin: Что-то не верится что все прям Partner или заключали отдельное соглашение. Это только наводка  :smile:  ибо есть у меня кое какая переписка с представителями Dassault. Вопрос чисто к пользователям. Я прав? Согласно соглашению мы (самое большинство участников данного топика) - пираты?

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

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

Первый этап - программно менять значение выбранного размера. Казалось бы: всё просто!

 

Но! Записав макрорекордером действия по изменению величины размера дуги получил код:

 

Dim swApp As Object
 
Dim Part As Object
 
Sub main()
 
Set swApp = _
Application.SldWorks
 
 
Dim myDimension As Object
Set myDimension = Part.Parameter("D2@Эскиз1")
myDimension.SystemValue = 0.3
 
End Sub

 

Он отлично работает!

Но только для "D2@Эскиз1" ...

Как сделать так, что бы можно было менять значения любого выбранного размера?

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

Здравствуйте,

 

Пример ниже. Нужно перестроить модель после выполнения макроса (можно также сделать в самом макросе):

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Sub main()

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc
    
    Dim swSelMgr As SldWorks.SelectionMgr
    
    Set swSelMgr = swModel.SelectionManager
    
    Dim i As Integer
    
    For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
        If swSelMgr.GetSelectedObjectType3(i, -1) = swSelectType_e.swSelDIMENSIONS Then
            Dim swDispDim As SldWorks.DisplayDimension
            Set swDispDim = swSelMgr.GetSelectedObject6(i, -1)
            Dim swDim As SldWorks.Dimension
            Set swDim = swDispDim.GetDimension2(0)
            swDim.SetSystemValue3 0.3, swSetValueInConfiguration_e.swSetValue_InThisConfiguration, Empty
        End If
    Next

End Sub
 
~Артем
 

 

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

Первый этап - программно менять значение выбранного размера. Казалось бы: всё просто!

 

Но! Записав макрорекордером действия по изменению величины размера дуги получил код:

 

Dim swApp As Object
 
Dim Part As Object
 
Sub main()
 
Set swApp = _
Application.SldWorks
 
 
Dim myDimension As Object
Set myDimension = Part.Parameter("D2@Эскиз1")
myDimension.SystemValue = 0.3
 
End Sub

 

Он отлично работает!

Но только для "D2@Эскиз1" ...

Как сделать так, что бы можно было менять значения любого выбранного размера?

Ссылка на сообщение
Поделиться на других сайтах
 Моё знакомство с LabView заключалось в том, что коллега напртив делал логику и программировал платы. Из-за этого такой и вывод - что из ПП можно вывести в SW?

 

Так нет никакой ПП.. Я хочу сделать в LabView рассчеты всех тепло- и массообменных аппаратов..

Пока почти сделал расчет парового эжектора.. Там очень много расчетных формул.. Другие аппараты легче считаются..

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

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

 

ежегодно на этом форуме находятся пользователи с точно такой же идеей. Спустя пару месяцев исчезают. Наверное состряпали)))

 

 

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

 

каким методом открываете деталь?

 

 

Какую деталь?? Читаем:

 

1 Открывает чертеж.

 

 

 каким методом открываете

 

swApp.OpenDoc6 OpenDrw, swDocDRAWING, 0, vbNullString, longstatus, longwarnings

 

Вам не разрешается использовать Программное обеспечение или Документацию для разработки приложений, предназначенных для передачи третьим сторонам, если только Вы не являетесь доверенным участником программы SOLIDWORKS Partner Program или заключили соглашение с DS SolidWorks о таком использовании или передаче.

 

 

В смысле макросы выкладывать нельзя??

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

Попробуйте так:

swApp.OpenDoc6 OpenDrw, swDocDRAWING, swOpenDocOptions_Silent, "", longstatus, longwarnings

 

 

В смысле макросы выкладывать нельзя??

 

Это не к вам конкретно, это ко всем.)))

Да, выкладывание своего кода другим - это, судя по тексту, нарушение лицензионного соглашения.  :smile: Если вы не partner или не заключили какое то там соглашение.

Да блин, судя по тексту - даже ссылки на хелп для "третьей стороны" это тоже нарушение. Пипец, пираты. 

Ссылка на сообщение
Поделиться на других сайтах
Да, выкладывание своего кода другим - это, судя по тексту, нарушение лицензионного соглашения.

ага. я тоже это понял именно так. но... эт тока в том случае если ты это соглашение заключил с ними

Ссылка на сообщение
Поделиться на других сайтах
Так вот.. Модель эжектора у меня есть.. Идея в том, чтобы скопировать всю сборку с чертежами и поменять определенные  размеры в соответствии с расчетом..

 

Я никогда не пользовался этой системой, но могу предположить, что Ваши расчетные параметры обозначаются некиеми переменными, например %CALCULATED_PARAMETER% и их возможно использовать в скрипте (возможно система позволяет запускать нечто вроде custom action). Если так, тогда можно оспользовать познее связывание и редактировать модель скриптом, похожим на вот этот:

Dim swApp as Object
Set swApp = CreateObject("SldWorks.Application")
Dim swModel as Object
Set swModel = swApp.OpenDoc(...)
swModel.Parameter("D1@Sketch1").SystemValue = %CALCULATED_PARAMETER%

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

 

 

Это не к вам конкретно, это ко всем.)))

Да, выкладывание своего кода другим - это, судя по тексту, нарушение лицензионного соглашения.  :smile: Если вы не partner или не заключили какое то там соглашение.

Да блин, судя по тексту - даже ссылки на хелп для "третьей стороны" это тоже нарушение. Пипец, пираты. 

 

Я все-таки думаю, что выкладывания исходного кода или макроса не противоречит соглашению, так как пользователь имеет возможность удостовериться, что код не содержит никакого вредоносного кода. Хотя точно не уверен. Другое дело в компилированном коде, когда пользователь не знает, что будет происходить. В таком случае потенциально программа может нанести ущерб файлам и повлиять на работоспособность SolidWorks. Подобный сценарий используется в Apple App Store, где все утилиты проходят некую проверку.

 

Ради справедливости можно сказать, что получение статуса Research Associate и Solution/Gold Partner не является большой проблемой. Это бесплатный и достаточно быстрый процесс.

 

~А.

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

это возможно сделать не покупая лицензию на SOLIDWORKS?

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

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

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

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

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

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

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

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

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

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

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




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