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

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

Только что, streamdown сказал:

Как создали, скомпилировали с параметрами регистрации?

После установки API SDK в MS Visual Studio появился новый шаблон проекта "SolidWorks COM Non-Attributed Addin". Я использовал этот шаблон, ничего не добавляя от себя, только прописал путь к SW, т.к. компилятор не видел импортируемые файлы *.tlb.

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


Кому приходилось использовать при написании программы document manager key? Следуя примеру из хелпа:

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

Imports SolidWorks.Interop.swdocumentmgr
Module Module1

    Sub ProcessDocCustomProperties(ByVal swDoc As SwDMDocument17)

        Dim vCustPropNameArr As Object
        Dim vCustPropName As Object
        Dim sCustPropStr As String
        Dim sCustPropStrWOPrefix As String
        Dim nPropType As Long


        vCustPropNameArr = swDoc.GetCustomPropertyNames : If IsNothing(vCustPropNameArr) Then Exit Sub
        Debug.Print("  Document Custom Properties:")

        For Each vCustPropName In vCustPropNameArr
            sCustPropStr = swDoc.GetCustomProperty(vCustPropName, nPropType)
            Debug.Print("    Prefaced     = " & vCustPropName & " <" & nPropType & "> = " & sCustPropStr)

            sCustPropStrWOPrefix = swDoc.GetCustomProperty2(vCustPropName, nPropType)
            Debug.Print("    Not Prefaced = " & vCustPropName & " <" & nPropType & "> = " & sCustPropStrWOPrefix)

            Debug.Print("")

        Next

        Debug.Print("")

    End Sub



    Sub ProcessConfigCustomProperties(ByVal swCfg As SwDMConfiguration14)

        Dim vCustPropNameArr As Object
        Dim vCustPropName As Object
        Dim sCustPropStr As String
        Dim sCustPropStrWOPrefix As String
        Dim nPropType As Long

        vCustPropNameArr = swCfg.GetCustomPropertyNames
        If IsNothing(vCustPropNameArr) Then Exit Sub
        Debug.Print("    Configuration Custom Properties:")

        For Each vCustPropName In vCustPropNameArr
            sCustPropStr = swCfg.GetCustomProperty(vCustPropName, nPropType)
            Debug.Print("      Prefaced     = " & vCustPropName & " <" & nPropType & "> = " & sCustPropStr)

            sCustPropStrWOPrefix = swCfg.GetCustomProperty2(vCustPropName, nPropType)
            Debug.Print("      Not Prefaced = " & vCustPropName & " <" & nPropType & "> = " & sCustPropStrWOPrefix)

            Debug.Print("")
        Next

        Debug.Print("")

    End Sub



    Sub main()

        Const sLicenseKey As String = "ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ключ-ч"
        Const sDocFileName As String = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\samples\tutorial\api\ExternalReferencedPart.sldprt"

        Dim swClassFact As SwDMClassFactory
        Dim swDocMgr As SwDMApplication
        Dim swDoc As SwDMDocument17
        Dim swCfgMgr As SwDMConfigurationMgr
        Dim vCfgNameArr As Object
        Dim vCfgName As Object
        Dim swCfg As SwDMConfiguration14
        Dim nDocType As Long
        Dim nRetVal As Long


        ' Determine type of SOLIDWORKS file based on file extension

        If InStr(LCase(sDocFileName), "sldprt") > 0 Then
            nDocType = SwDmDocumentType.swDmDocumentPart
        ElseIf InStr(LCase(sDocFileName), "sldasm") > 0 Then
            nDocType = SwDmDocumentType.swDmDocumentAssembly
        ElseIf InStr(LCase(sDocFileName), "slddrw") > 0 Then
            nDocType = SwDmDocumentType.swDmDocumentDrawing
        Else

            ' Not a SOLIDWORKS file
            nDocType = SwDmDocumentType.swDmDocumentUnknown

            ' So cannot open
            Exit Sub

        End If

        ' Because drawing documents do not have configurations, 
        ' only continue running the project if the document
        ' is a part or assembly document

        If (nDocType <> SwDmDocumentType.swDmDocumentDrawing) Then

            swClassFact = CreateObject("SwDocumentMgr.SwDMClassFactory")
            swDocMgr = swClassFact.GetApplication(sLicenseKey)
            swDoc = swDocMgr.GetDocument(sDocFileName, nDocType, False, nRetVal) : Debug.Assert(SwDmDocumentOpenError.swDmDocumentOpenErrorNone = nRetVal)
            swCfgMgr = swDoc.ConfigurationManager

            Debug.Print("File = " & swDoc.FullName)
            Debug.Print("  ActiveCfgName           = " & swCfgMgr.GetActiveConfigurationName)
            Debug.Print("")
            Debug.Print("  Version                 = " & swDoc.GetVersion)
            Debug.Print("  Author                  = " & swDoc.Author)
            Debug.Print("  Comments                = " & swDoc.Comments)
            Debug.Print("  CreationDate (string)   = " & swDoc.CreationDate)
            Debug.Print("  CreationDate (numeric)  = " & swDoc.CreationDate2)
            Debug.Print("  Keywords                = " & swDoc.Keywords)
            Debug.Print("  LastSavedBy             = " & swDoc.LastSavedBy)
            Debug.Print("  LastSavedDate (string)  = " & swDoc.LastSavedDate)
            Debug.Print("  LastSavedDate (numeric) = " & swDoc.LastSavedDate2)
            Debug.Print("  Subject                 = " & swDoc.Subject)
            Debug.Print("  Title                   = " & swDoc.Title)
            Debug.Print("  LastUpdateStamp         = " & swDoc.GetLastUpdateStamp)
            Debug.Print("  IsDetachedDrawing       = " & swDoc.IsDetachedDrawing)
            Debug.Print("")

            ProcessDocCustomProperties(swDoc)

            vCfgNameArr = swCfgMgr.GetConfigurationNames

            For Each vCfgName In vCfgNameArr
                swCfg = swCfgMgr.GetConfigurationByName(vCfgName)

                Debug.Print("  " & vCfgName)
                Debug.Print("    Description              = " & swCfg.Description)
                Debug.Print("    ParentCfgName            = " & swCfg.GetParentConfigurationName)
                Debug.Print("    LastUpdateStamp          = " & swCfg.GetLastUpdateStamp)
                Debug.Print("")

                ProcessConfigCustomProperties(swCfg)
            Next

        End If

    End Sub

End Module

 

 не удается установить подключение, "вываливается" ошибка.

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

 

Помогите разобраться.

К слову: sw 2016 sp5.0 x64; win 7 x64

К слову слову: через Marshal.GetActiveObject("SldWorks.Application.24") - полет нормальный :dash1:

 

 

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

Помогите разобраться

а в чём?

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

Далее, вставляете его в

Цитата

Const sLicenseKey As String

---------------------

Компилируя проект из

В 14.04.2018 в 11:30, VIKT0R сказал:

Использую MS Visual Studio 2008 C++

 

Вы никогда не получите ошибку NET.

Отлаживая свой проект Dll вам надо указать запускаемый процесс как путь к sldworks.exe

В 14.04.2018 в 21:06, VIKT0R сказал:

компилятор не видел импортируемые файлы

посмотрите пример с нуля https://forum.solidworks.com/thread/60577

Вот ещё тутор для standalone https://www.codestack.net/2018/03/create-c-stand-alone-application-for_5.html

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

 

Далее, вставляете его в...

 

В том то и дело. Ключ мне выслали. Его я вставляю в строковую константу и... происходит ошибка подключения.

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

Ключ мне выслали

:smile: ох уж эти кодеры))) или пираты...или ещё кто.

Вы вот что скажите, ваш ключ для 2016 SW начинается вот прям на

Цитата

11785...

Или там букавки какие есть перед этим?

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

Дык буквы тоже нужны что-ль? В ключе перед цифровой частью еще есть символьная: "S********:sw******_*******-".

Но с этими символами тоже не подключается. Что то совсем беда...

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

Но с этими символами тоже не подключается

а должно. Там в этом ключе сначала буквы, потом вон тот многацифр_в_перемешку_с_кое_где_буквами.

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

Отлаживая свой проект Dll вам надо указать запускаемый процесс как путь к sldworks.exe

посмотрите пример с нуля https://forum.solidworks.com/thread/60577

Вот ещё тутор для standalone https://www.codestack.net/2018/03/create-c-stand-alone-application-for_5.html

Спасибо за ссылки - изучаю.

Хотел бы спросить вот еще что: я так понял, что можно использовать MFC. Вопрос такой: а можно ли использовать QT ?

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

а можно ли использовать QT

и там и там C++

Разница лишь в том, чтоб правильно найти способ регистрации ActiveX вашей dll. Для exe - ваще без разницы.

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

Разница лишь в том, чтоб правильно найти способ регистрации ActiveX вашей dll. Для exe - ваще без разницы.

А какая разница между dll и exe? Такая же как в ProE API? В ProE dll работает в синхронном режиме - приложение запускается самим ProE на основе регистрационного файла. А exe работает в асинхронном режиме - приложение запускается пользователем, а затем либо запускает сессию ProE, либо подключается к уже существующей. Между этими режимами есть различия, например dll работает гораздо быстрее, т.к. непосредственно взаимодействует с ProE. Но в dll-режиме QT (или MFC) работает только в режиме модальных диалоговых окон, т.е. "подвешивает" ProE до тех пор, пока окно не закроешь, т.к. запускает свой цикл обработки сообщений. В exe-режиме связь с окном ProE не замораживается, т.е. я могу например нажать кнопку в диалоговом окне MFC, которая предложит мне выбрать геометрию в окне ProE, и окно ProE при этом будет доступно для работы.

В SW API такая же разница между dll и exe?

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

Если взять только смысл из вашего текста то да.

-----

1) Нет такого понятия как "синхронный режим". Есть STA

2) В SW пока идёт работа с COM сервером - он недоступен. В случае с dll из-за In-Process окно "подвешивается", в случае с exe - нет. Ибо окно не в потоке COM сервера.

3) Сам COM сервер вы можете как запустить так и получить запущенный CoCreateInstanse 

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

 

16 часов назад, streamdown сказал:

а должно....

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

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

images.jpg.0aecc38e9bbabd3c8033dfda904d6e9f.jpg

 

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

Доброго здравия форумчане.

 

Подскажите кто мне, грешному. Есть макрос, благополучно скачанный с просторов инета. Занимается он тем что экспортирует каждый лист многостраничного чертежа отдельным файлом пдф. Работал этот макрос работал - и вдруг - перестал. То есть - он вроде бы отрабатывает, перебирает все листы в чертеже, но - на выходе - ничего, пдф файлы не оздаются. Либо может быть создаются, но сбивается путь... не знаю

SaveEachSheetAsPDF-SHEETNAME.swp

 

И второй вопрос - может кто подскажет человеку, немного далекому от написания макросов, как можно задать формирование пдф имени по параметрам из модели в чертеже. То есть, примерно так:

$RPR:"Number" - $PRP:"Description" - $PRP:"Revision"

Ну либо же по тому же принципу - комбинирование нескольких свойств модели - автоматом задавать название листа чертежа (вкупе с работающим макросом о котором мой первый вопрос, результат был бы тем же)

 

заранее спасибо

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

Работал этот макрос работал

 

Странно.. Ибо полный путь к файлу пдф не прописывался.. Только имя листа.. Вот

 

https://drive.google.com/file/d/18aAH_UHIh-DiATnUpr4CAmsxaMNElKHZ/view?usp=drivesdk

7 часов назад, serguss сказал:

То есть, примерно так:

$RPR:"Number" - $PRP:"Description" - $PRP:"Revision"

 

Пример из справки

 

http://help.solidworks.com/2016/english/api/sldworksapi/Add_and_Get_Custom_Properties_Example_VB.htm

 

А там из элементов массива составить нужную строку..

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

Как получить указатель на тело в детали, выбранное в сборке содержащую эту деталь? Если я получаю persistent ID для этого тела через сборку, то в детали GetObjectByPersistReference3 по этому ID возвращает nothing.

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

2018-04-18_12-52-33.png.05d46036c2df33ee0a86c6187da7770c.png

Задача: сформировать из выбранных тел подсборку и вставить в основную сборку. Сейчас приходится открывать вручную деталь содержащую тела и работать с ней. Хотелось бы выбирать их в сборке, а дальше обрабатывать программно.

Буду рад любым наводкам.

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

Как получить указатель

http://help.solidworks.com/2015/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.iselectionmgr~getselectedobject6.html

в параметре попробуйте поиграться индексом.

----------

А можно так http://help.solidworks.com/2015/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IEntity~IGetComponent2.html

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

@streamdown, СПАСИБО. В голове прояснилось.  Метод getselectedobject6 подошел. С персистент ID так и не срослось.

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

 

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

 

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

 

 

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

Здравствуйте . Столкнулся вот с чем. На днях поставил солид 2018   и только сейчас обнаружил отсутствие примеров \samples\tutorial\api\. Папка пуста. Может я где какую галку не поставил при установке?

И еще такой момент, пока не соображу что у меня не так. Описываю ситуацию. В сборке ставлю справочную плоскость.  Далее  ставлю деталь и привязываю с помощью 3 сопряжений "совпадение", 2 из которых к общей сборке, а 3 сопряжение к справочной плоскости.  При использовании двух первых сопряжений деталь позиционируется правильно. А 3 сопряжение меняет в 50 процентах случаев (когда сборка симметричная) положение справочной плоскости.  Параметр "1" или "0" в коде:  Set matefeature = swAssy.AddMate5(swMateCOINCIDENT, 1, False, 0, 0, 0, 0, 0, 0, 0, 0, False, False, 0, fileerror) исправляет ситуацию, но приводит к проблемам в других 50% случаях. Если выполнять код пошагово и просто применить 3 сопряжение совпадение без кода, то все позиционируется правильно.  Во первых я не ожидал что плоскости в сборке могут быть отзеркалены при использовании сопряжений с "потомками" сборки . Как бы плоскости должны стоять монументально, если не трогать "предков" , а тут на тебе , получите распишитесь.

форум1.jpgфорум2.jpgфорум3.jpg

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • anykeyto
      День добрый коллеги. Работает ли кто на этой стойке? Где берете информацию по программированию кроме мануала от Ками?  Интересует макропрограммирование, программирование цилиндрической интерполяции. Да и вообще, давайте делиться опытом. В свободном доступе практически нет никакой информации о работе станка и стойки этого чуда китайской инженерии.  Вопрос про G108, пользовался ли кто функцией CTOS/STOC?   
    • __Andrey__
      Доброго всем времени суток. Начал сборку станка для симуляции. Загрузил модель станка DMU50 в папку. В генераторе станков сделал настройки осей. Постпроцессор на sinumerik создал из шаблона. Скопировал папку cse_driver со станка с похожей кинематикой (sim06_mill_5ax). В файлы .dat внесены данные. При запуске симуляции по машинному коду ругается, что не найден файл PMAC. После закрытия окна с ошибкой продолжает работу и доходит до смены инструмента и там выскакивает ошибка. . Прошу помощи с этой проблемой. Файл to_ini генерируется в папку cse_driver.
    • anykeyto
      Устроился в начале года в контору где стоит IronMAC IMU-5X 400 Pro. Стойка HNC8-848di. Контора отправила на обучение, на курс 5-осной обработки на этой стойке, в цто Ками в Москве. В целом все доступно и понятно. Это когда было само обучение. Но в работе самой стойки есть куча вопросов. По факту на стойка не настроена. Не знаю, может наладчик который запускал станок попался ленивый, может в другом была причина. Но первый месяц-полтора занимался только настройкой системы (что знал, что пришло в процессе изучения параметров, ладдера, и прочее).   Сам станок интересный и понятный. Но русская локализация хромая, как и мануал от ками. Там голимый перевод то ли с английского, толи с китайского.... но вместо фрезы "нож" и так далее.  Основа тут G код, в целом почти фанук, но есть отличия. Есть группа циклов для фрезеровки сверления, резьбы и расточки, под них есть прям шаблон, в котором только переменные задаешь, но криво реализован синтаксис, который поправить можно уже непосредственно в коде.
    • Ветерок
      В ярлыке прописать путь к русскому файлу: "C:\PTC\Creo 8.0.4.0\creo_help_pma\russian\index.html"
    • Guhl
      Номера 2000 и выше - это вроде как не ошибка а сообщение оператору Открывайте инструкцию на станок с описанием сообщений или смотрите в ладдере в чпу или скачайте ладдер и смотрите в Fladder3
    • ДОБРЯК
      В МКЭ это классический modal-prestress анализ. Из МКЭ вы получаете только матрицу масс и матрицу жесткости. На этом МКЭ заканчивается. Дальше решайте как хотите. Вот Федор решает квадратное уравнение и получает первые собственные частоты.:=) Вопрос только в том какие силы нужно задать, чтобы получить начальные напряжения и как эти силы зависят от частоты вращения. Дальше матрица начальных напряжений суммируется с матрицей жесткости. Естественно данное суммирование меняет жесткость конструкции. Поэтому и говорят про преднапряженный модальный анализ. Основной вопрос какие силы нужно приложить в зависимости от частоты вращения, прежде чем делать статический анализ.  Но вы этот вопрос не освещает. Это ваше право не подумайте, что у меня есть какие то претензии.
    • Fedorly
      Вашему вниманию предоставляется программа, которая позволяет пакетно обработать DXF файлы разверток и получать Длину реза, Количество врезок, габариты развертки, миниатюру.  Полученные данный  легко сохраняются в PDF, Excel, txt и другие форматы. Дальше, полученные данные, могут быть применены в расчете себестоимости детали Скачать  
    • maxx2000
      такой дурной вопрос. Как сделать чтобы офлайн справка вызывалась на русском? перезаписать файлы английской справки русской или можно где-то, что-то подправить?
    • ДОБРЯК
      @Jesse может быть эта тема вам поможет понять почему частоты не меняются... https://cccp3d.ru/topic/83522-%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%BA%D1%8D%D0%BC%D0%B1%D0%B5%D0%BB%D0%BB%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%B2%D0%B0%D0%BB%D0%B0-%D1%81-%D0%BA%D0%BE%D0%BB%D0%B5%D1%81%D0%BE%D0%BC/?ysclid=lvrjkzdpez476841118
    • Артур8991
×
×
  • Создать...