1 876 сообщений в этой теме
4 часа назад, heatex сказал:

Необходимо определить общее количество отверстий, независимо от их формы, т.е. количество замкнутых контуров в эскизах.

А если просто количество вырезов на поверхности, а не в эскизе, пойдёт? Вот пример из справки, немного переделанный, выберите плоскость перед запуском макроса.

 

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

Option Explicit

Sub main()

    Dim swApp                   As SldWorks.SldWorks
     Dim swModel                 As SldWorks.ModelDoc2
     Dim swSelMgr                As SldWorks.SelectionMgr
     Dim swFace                  As SldWorks.Face2
     Dim swLoop                  As SldWorks.Loop2
     Dim swCut                  As Integer

    Set swApp = CreateObject("SldWorks.Application")
     Set swModel = swApp.ActiveDoc
     Set swSelMgr = swModel.SelectionManager
     Set swFace = swSelMgr.GetSelectedObject6(1, -1)
     If swFace Is Nothing Then
     MsgBox "Выберите плоскость с вырезами"
     Exit Sub
     Else
     Set swLoop = swFace.GetFirstLoop
     End If

    swCut = swFace.GetLoopCount - 1
    MsgBox "К-во вырезов на плоскости = " & swCut
    
    While Not swLoop Is Nothing

        Set swLoop = swLoop.GetNext
     Wend

End Sub

 

 

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

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


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


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

Так, глядишь, дорастём до состояния, когда и макрос вопрошающему не понадобится.

О макросе речь не идёт, я лишь спрашивал о возможности извлечения информации о контурах эскиза. Поскольку каких-либо FeatureData для выреза в справке по api самостоятельно не нашёл.

8 минут назад, Kir95 сказал:

А если просто количество вырезов на поверхности, а не в эскизе, пойдёт? Вот пример из справки, немного переделанный, выберите плоскость перед запуском макроса.

 

  Показать содержимое


Option Explicit

Sub main()

    Dim swApp                   As SldWorks.SldWorks
     Dim swModel                 As SldWorks.ModelDoc2
     Dim swSelMgr                As SldWorks.SelectionMgr
     Dim swFace                  As SldWorks.Face2
     Dim swLoop                  As SldWorks.Loop2
     Dim swCut                  As Integer

    Set swApp = CreateObject("SldWorks.Application")
     Set swModel = swApp.ActiveDoc
     Set swSelMgr = swModel.SelectionManager
     Set swFace = swSelMgr.GetSelectedObject6(1, -1)
     If swFace Is Nothing Then
     MsgBox "Выберите плоскость с вырезами"
     Exit Sub
     Else
     Set swLoop = swFace.GetFirstLoop
     End If

    swCut = swFace.GetLoopCount - 1
    MsgBox "К-во вырезов на плоскости = " & swCut
    
    While Not swLoop Is Nothing

        Set swLoop = swLoop.GetNext
     Wend

End Sub

 

 

Благодарю за наводку, попробую с плоскостью.

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


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

Уже начиная с этой фразы "что то не так".  Во первых , однотипные детали лучше создавать без макросов. И вообще если можно, то лучше вообще избегать макросы.

 

Непонятно ... Чтобы объединять макросы  можно использовать процедуры и функции с аргументами и без. Это нужно изучать в базовом программировании. Любую процедуру можно запускать внутри любой другой процедуры.

 

вот эта цитата вообще "по мне" бред какой то. С чего вы взяли что "простое" и "сложное" кому то ведомо . Это с вашей точки зрения так мир устроен.

 

Вообще вы меня извините, но так нельзя ставить задачи.

Спасибо, вы правы. Буду разбираться с азами программирования.

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


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

Hello, SolidWorld! :smile:

 

Делаю первые шаги в SW API - пока не получается. Установил API SDK SW2012. Использую MS Visual Studio 2008 C++. Создал новый проект, скомпилировал. Далее, действуя по инструкции (см. цитату ниже), получил сообщение:

RegAsm: error RA0000 : Сбой при загрузке "D:\test\SwAddin3\Debug\SwAddin3.dll" из-за недопустимой сборки .NET

 

Может версии ПО несовместимы, подскажите?

 

В 04.03.2011 в 12:30, streamdown сказал:

библиотеку зарегистрировать надо

создать батник, в нём написать

C:\windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe Имя_библиотеки /codebase

запустить в папке debug

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

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


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

подскажите?

Подскажу. Вы пытаетесь нативную dll ку зарегистрировать через .NET

Так не получится и так не будет. Это 2 совершенно разные технологии.

8 часов назад, VIKT0R сказал:

Создал новый проект, скомпилировал

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
Только что, 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
1 пользователю понравилось это

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


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

 

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

 

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

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


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

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

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

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

Цитата

11785...

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

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


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

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

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

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

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


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

@streamdown , на счет пиратов я понял...

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

shtirlic_83126054_orig_.jpg.031d5e8e00cb66e91e9e08764722c882.jpg

 

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


Ссылка на сообщение
Поделиться на других сайтах
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 

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

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


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

 

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
1 пользователю понравилось это

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


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

@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

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


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

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

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


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

Подскажите пожалуйста, каким способом можно создать справочную плоскость "среднюю", на базе 2 параллельных плоскостей. И второй вопрос доступны ли в api дополнительные сопоряжения? В частности "ширина"

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


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

Еще вопрос по табличке BOM, как можно вернуть ссылку на деталь по выделенной ячейке? Хочу создать макрос , который будет вставлять деталь на лист чертежа, указав на поле таблицы.

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


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

Можете подсказать пожалуйста!! У меня вопрос, как написать простой макрос который добавлял в свойствах файла определенный значение. Например.....наименование и обозначение   и по ним бы прописывал то что я хочу.....шифр и имя детали например. Мне интересно сам принцип написание этого макроса. Я  в справке АПИ не мог найти. Буду очень благодарен если кто нибудь подскажет как написать!!!

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


Ссылка на сообщение
Поделиться на других сайтах
В 28.04.2018 в 17:42, Санёёк сказал:

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

Разбирайтесь, Change_property_V2.0http://kelnyproject.ucoz.ru/load/6-1-0-8

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

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


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

Всем привет. Не смог разобраться до конца с методом GetProjectedPointOn применительно к сборке. В деталях точку данный метод проецирует, в сборке не получается. У меня вопрос : у функции 2 аргумента вектор-направления и точка. Если я работаю в сборке, нужно ли мне делать трансформацию координат этих аргументов в пространство компонента детали на которую я пытаюсь спроецировать точку?.

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


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

Разобрался, причина была в том что не была объявлена переменная Dim mathUtils As SldWorks.MathUtility.

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


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

ID: 1873   Опубликовано: (изменено)

В 28.04.2018 в 17:42, Санёёк сказал:

Можете подсказать пожалуйста!! У меня вопрос, как написать простой макрос который добавлял в свойствах файла определенный значение. Например.....наименование и обозначение   и по ним бы прописывал то что я хочу.....шифр и имя детали например. Мне интересно сам принцип написание этого макроса. Я  в справке АПИ не мог найти. Буду очень благодарен если кто нибудь подскажет как написать!!!

На мой взгляд удобнее использовать Excel таблицу параметров, но это дело вкуса. Можно и как во вложенном примере

+Масса+Материал.swp

Несколько сложнее (иначе) дела обстоят со свойствами рисунков профилей, особенно если исходный рисунок задает параметрически размеры нескольких конфигураций. Тут как вариант можно использовать блок "уравнения".

Изменено пользователем v-david

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


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

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

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


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

@alek77 , а причем тут Solidworks API??

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


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

@alek77 , а причем тут Solidworks API??

Я перефразирую тогда: 

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

Я даже не подумал, что если спрашиваю в этой ветке, то мой вопрос будет непонятен, сорри  

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

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



  • Реклама

  • Сообщения

    • scorpion1007
      Примерный алгоритм сделал такой. Если имеется только один карман на детали.    ... //***** Создание кармана для выборки ****
      STRING FeatureGroup1 = "FeatureGroup\" + "Flanez" + $nomer_zakaza + " - " + $Model_name
      STRING FG = "Flanez" + $nomer_zakaza + " - " + $Model_name EDIT LEVEL "1" SELECT WIREFRAME
      CREATE FEATUREGROUP ACTIVATE
      ACTIVATE FEATUREGROUP "ACTIVATE" MODE FEATUREEDITOR START
      MODE FEATUREEDITOR MODE CREATE FREEFORM_POCKET
      MODE FEATUREEDITOR EDIT CURVEPOSITION BOTTOM
      MODE FEATUREEDITOR EDIT TOP "19"
      FORM APPLY FEEDIT
      MODE FEATUREEDITOR FINISH ACCEPT
      RENAME FeatureGroup "ACTIVATE" $FG
      //***** Вычисление минимального размера кармана ****
      FORM BLOCK
      EDIT BLOCK LIMITTYPE FEATURESET
      EDIT BLOCK RESET
      BLOCK ACCEPT
      int FdlinaX=round(Block.Limits.XMax-Block.Limits.XMin,0)
      int  FdlinaY=round(Block.Limits.YMax-Block.Limits.YMin,0)
      int minRAZM = 0
       IF $FdlinaX <= $FdlinaY {
      $minRAZM = $FdlinaX
      } ELSE {
      $minRAZM = $FdlinaY
      }
      //**********  Проверка необходимости траекторий ***********
      //**********  VB выборка, PrF по профилю кармана ( для для указанного диаметра фрезы) ***********
      //**********  углы карманов дорабатываются фрезами меньшего диаметра траекторией по профилю ***********
      int VB20 = 0
      int VB6 = 0
      int PrF6 = 0
      int PrF4 = 0 IF  $minRAZM > 20 {
      $VB20 = 1
      $VB6 = 0
      $PrF6 = 1
      $PrF4 = 1
      } ELSEIF $minRAZM > 10 {
      $VB20 = 0
      $VB6 = 1
      $PrF6 = 0
      $PrF4 = 1
      } ELSEIF $minRAZM > 6 {
      $VB20 = 0
      $VB6 = 0
      $PrF6 = 1
      $PrF4 = 1
      } ELSE { 
      $VB20 = 0
      $VB6 = 0
      $PrF6 = 0
      $PrF4 = 1
      } ....     .... //***** Выборка кармана 20 мм ****
      IF $VB20 == 1  {
      STRING Vib20 = "20viborka-karmana- " + $Model_name
      ACTIVATE FOLDER $Toolpathname1
      IMPORT TEMPLATE ENTITY TOOLPATH TMPLTSELECTORGUI "Z:/My-Strategies/20viborka-karmana.ptf"
      ACTIVATE FEATUREGROUP $FG
      RENAME Toolpath "1" $Vib20
      EDIT MODEL ALL DESELECT ALL
      EDIT BLOCK LIMITTYPE MODEL
      EDIT BLOCK RESET
      EDIT TOOLPATH $Vib20 CALCULATE
      ....итд   Сейчас хочу расширить на несколько карманов. Какой командой можно узнать количество всех карманов в группе? Предполагается сделать перебор всех карманов в группе циклом FOR TO, вычисление необходимости той или иной стратегии для каждого кармана, создание буллевого массива из которого, для каждой стратегии будут выбираться те или иные карманы для обработки
    • Valeria94
    • Соловьев Юрий Сергеевич
      Добрый день ! Можем предложить широкий спектор обработки металлов , по достаточно низким ценам , в максимально короткие сроки, находимся в подмосковье , работаем 7 лет , по вопросам производства можно обратиться по телефону  8916 030 30 76(Владимир), 89851822977(Юрий) почта VladimirVolkov81@yandex.ru
    • Mrt23
    • leex
      На сколько понимаю в опциях "ускоренные ходы" за длинные отвечает параметр "высота ускоренных", а за короткие "высота врезания".  Правильно?
    • Ренто
        Привет всем, вопрос следующего характера: Кто-нибудь пытался считать силу прижатия приспособлений для пайки, так чтобы сохранился зазор? В общем паяют два кольца (обечайки), между ними никелевая сетка, которую прихватили контактной сваркой к одному из колец, припой наносят шприцом. И надо рассчитать то усилие прижатия, так чтобы эта сетка не деформировалась и припой не вытек.

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

      Есть еще один вариант, вместо сетки и припоя с шприцом использовать полоски припоя, тогда вопрос, как рассчитать в этом случае усилие прижатия, чтобы он не вытек в печке.
    • Valeria94
      :D идея хорошая, но я видела эту задачу, то, что там названо сферической опорой- не совсем то. И там это решается с помощью соединения подшипник, а у меня это как раз и не получилось(
      у меня так, как на картинке, которую я прикрепила
    • SVB
      lobzik, дайте Mikhail'у отдохнуть. Он почти до часа ночи вам отвечал. Mikhail, два года и квартал назад на просторах интернета я, заранее извините, скачал ваш труд: Довбыш В.М., Забеднов П.В., Зленко М.А. "Аддитивные технологии и изделия из металла" на 57 страниц. А к настоящему времени в этом направлении (аддитивные технологии из металла) у вас с коллегами что-то новое появилось?
    • Mrt23
      @piden подари уже девушке всю книгу...) видишь, задача с рессорой теперь нужна-дальше больше.)