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

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

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

Не работает. Ошибка та же.

У вас какая версия Solidworks ? 2014 ?

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


21 час назад, nahaus сказал:

Подскажите пожалуйста как получить размеры листа с помощью метода GetProperties2?
Пытаюсь получить сообщение. Что не так в строке swApp.SendMsgToUser2 swSheet.GetProperties2, swMbWarning, swMbOk


Dim swApp               As SldWorks.SldWorks
Dim swModel             As SldWorks.ModelDoc2
Dim boolstatus          As Boolean
Dim longstatus          As Long, longwarnings As Long
Dim lErrors             As Long
Dim lWarnings           As Long
Dim swSheet             As SldWorks.Sheet
Dim swDrawing           As SldWorks.DrawingDoc
Dim sheetProperties     As Variant


Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

fullPathFile = swModel.GetPathName
' swApp.SendMsgToUser2 fullPathFile, swMbWarning, swMbOk
nameFileExtension = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
' swApp.SendMsgToUser2 nameFileExtension, swMbWarning, swMbOk
nameFileWithoutExtension = Left(nameFileExtension, InStrRev(nameFileExtension, ".") - 1)
' swApp.SendMsgToUser2 nameFileWithoutExtension, swMbWarning, swMbOk

Set swSheet = swModel.GetCurrentSheet
' swApp.SendMsgToUser2 swSheet.GetName, swMbWarning, swMbOk
swApp.SendMsgToUser2 swSheet.GetProperties2, swMbWarning, swMbOk


End Sub

 

А этот код Вы сами писали тогда ?

Я так на память не скажу, но некоторые методы и свойства могут не существовать в вашей версии solidworks

20 часов назад, nahaus сказал:

Выскакивает ошибка image.png

Она же выскакивает и без параметра в скобках.

Это окно с предупреждением об этом как раз и говорит

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

Не без этого конечно.

Решил поразобраться в макросах поэтому экспериментирую с выводом различных параметров.

Но побудила конкретная цель: Сохранение чертежей в формат PNG.

Макрос должен понимать формат листа, или ориентацию ( портретная или альбомная), чтобы не оставлять на изображении пустые поля.

На данный момент есть такой код. Он умеет сохранять  "многолистовой" чертеж в PNG.

 


Sub main()

Dim swApp                     As SldWorks.SldWorks
Dim swModel                   As SldWorks.ModelDoc2
Dim swSheet                   As SldWorks.Sheet
Dim vSheetNameArr, vSheetName As Variant
Dim bRet                      As Boolean
Dim lErrors                   As Long
Dim lWarnings                 As Long
Dim fileName                  As String
Dim strOriginallyActiveSheet  As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Is document active?

If swModel Is Nothing Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If

' Is it a Drawing document?

If swModel.GetType <> swDocDRAWING Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If

If swModel.GetTitle = "" Then

    swApp.SendMsgToUser2 "Save the Drawing first", swMbWarning, swMbOk

    Exit Sub

End If

fileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
' swApp.SendMsgToUser2 fileName, swMbWarning, swMbO

fileName = Left(fileName, InStrRev(fileName, ".") - 1)
' swApp.SendMsgToUser2 fileName, swMbWarning, swMbO

'Change/Set DPI Settings and Paper Size here
swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffImageType, swTiffImageType_e.swTiffImageBlackAndWhite
swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintDPI, 400
swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA4size

Set swSheet = swModel.GetCurrentSheet

strOriginallyActiveSheet = swSheet.GetName

vSheetNameArr = swModel.GetSheetNames

For Each vSheetName In vSheetNameArr

    bRet = swModel.ActivateSheet(vSheetName): Debug.Assert bRet
    swModel.ViewZoomtofit2
    swModel.Extension.SaveAs fileName & "-" & vSheetName & ".PNG", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings

Next vSheetName

swModel.ActivateSheet (strOriginallyActiveSheet)

End Sub

 

Не работает. Ошибка та же.

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

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

Это я собрал по наитию из разных макросов, для просмотра какой метод что выводит.

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

Макрос должен понимать формат листа, или ориентацию ( портретная или альбомная), чтобы не оставлять на изображении пустые поля.

С этим проблема, сделал вот такую конструкцию:

Option Explicit

Dim swApp                                       As SldWorks.SldWorks
Dim swModel                                    As SldWorks.ModelDoc2
Dim swSheet                                    As SldWorks.Sheet
Dim vSheetNameArr, vSheetName As Variant
Dim vSheetProps                             As Variant

Dim bRet                                         As Boolean
Dim lErrors                                      As Long
Dim lWarnings                                As Long
Dim fileName                                  As String

Dim strOriginallyActiveSheet  As String

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Проверяем открыто ли что-либо?
If swModel Is Nothing Then
    swApp.SendMsgToUser2 "Нет ни одного открытого докумета! Пожалуйста, откройте ЧЕРТЕЖ!", swMbWarning, swMbOk
    Exit Sub
End If

' Проверяем открыт ли ЧЕРТЕЖ?
If swModel.GetType <> swDocDRAWING Then
    swApp.SendMsgToUser2 "Макрос работает только с чертежами! Пожалуйста, откройте ЧЕРТЕЖ!", swMbWarning, swMbOk
    Exit Sub
End If

' Проверяем сохранен ли чертеж?
If swModel.GetTitle = "" Then
    swApp.SendMsgToUser2 "Пожалуйста, сперва сохраните ЧЕРТЕЖ!", swMbWarning, swMbOk
    Exit Sub
End If

' Получаем имя файла в переменную fileName
fileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
fileName = Left(fileName, InStrRev(fileName, ".") - 1)

' Здесь изменяем/устанавливаем настройки разрешения картинки (DPI)
swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintDPI, 300
swApp.SetUserPreferenceIntegerValue swUserPreferenceToggle_e.swTiffPrintUseSheetSize, True

Set swSheet = swModel.GetCurrentSheet
strOriginallyActiveSheet = swSheet.GetName
vSheetNameArr = swModel.GetSheetNames

For Each vSheetName In vSheetNameArr

    bRet = swModel.ActivateSheet(vSheetName): Debug.Assert bRet
    
    Set swSheet = swModel.GetCurrentSheet
    
        ' Считываем массив свойств текущего листа
   vSheetProps = swSheet.GetProperties
   
    ' Задаем размер листа в зависимости от формата
    Select Case vSheetProps(0)
    
        Case 6 Or 7
            'Format = "А4"
            swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA4size
            Debug.Print "Формат А4"
        Case 8
            'Format = "А3"
            swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA3size
            Debug.Print "Формат А3"
        Case 9
            'Format = "А2"
            swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA2size
            Debug.Print "Формат А2"
        Case 10
            'Format = "А1"
            swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA1size
            Debug.Print "Формат А1"
        Case 11
            'Format = "А0"
            swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA0size
            Debug.Print "Формат А0"
        Case Else
            'Format = ""
            ' Здесь должен быть код обработки нестандартного формата листа, которого пока нет :)
            Debug.Print "Неизвестный формат"
    End Select
    
    swModel.ViewZoomtofit2
    swModel.Extension.SaveAs fileName + " - " + vSheetName + ".PNG", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, lErrors, lWarnings

Next vSheetName

swModel.ActivateSheet (strOriginallyActiveSheet)
swApp.SendMsgToUser2 "Экспорт успешно завершен!", swMessageBoxIcon_e.swMbInformation, swMessageBoxBtn_e.swMbOk

End Sub

но такое ощущение, что не срабатывает вот эта строчка, на А4 всё равно поля:

swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swTiffPrintPaperSize, swDwgPaperSizes_e.swDwgPaperA4size

Мои настройки экспорта:

DD4jecz.jpeg

 

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

Макрос должен понимать формат листа, или ориентацию ( портретная или альбомная), чтобы не оставлять на изображении пустые поля.

Когда-то написал для своего макрос-а ... убого, но работает ... ( язык C# )

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

        public string GetFormatName(Sheet sheet)
        {
            object sheetProps = sheet.GetProperties();
            double[] sheetPropsAsArray = (double[])sheetProps;
            return GetFormat((int)sheetPropsAsArray[0], sheetPropsAsArray[5], sheetPropsAsArray[6]) + @"\";
        }

        string GetFormat(int type, double wigth, double heigth)
        {
            string format = "";

            if (type != 12)
            {
                switch (type)
                {
                    case 6: return "А4";
                    case 7: return "А4";
                    case 8: return "А3";
                    case 9: return "А2";
                    case 10: return "А1";
                    case 11: return "А0";
                }
            }
            else
            {
                switch (heigth * 1000)
                {
                    case 297:
                        format = "А4";
                        break;
                    case 420:
                        format = "А3";
                        break;
                    case 594:
                        format = "А2";
                        break;
                    case 841:
                        format = "А1";
                        break;
                }
            }
            if (wigth * 1000 / GetFormatWigth(format) > 1)
                return format + "x" + wigth * 1000 / GetFormatWigth(format);
            else
                return format;
        }

        int GetFormatWigth(string key)
        {
            switch (key)
            {
                case "А4": return 210;
                case "А3": return 297;
                case "А2": return 420;
                case "А1": return 594;
            }
            return 0;
        }

 

 

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

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

попробуйте Ctrl + X и Ctrl + V

Ссылка на сообщение
Поделиться на других сайтах
09.07.2024 в 09:07, nahaus сказал:

Но побудила конкретная цель: Сохранение чертежей в формат PNG.

В Solidworks cохрянятели в картинки так себе.

Если вам нужен чертёж, то посмотрите в сторону виртуального принтера, который может сохранять в нужный формат, как вариант рассмотрите макрос SaveAs (на базе виртуального принтера PDFCreator версии 1, там же лежит виртуальный принтер нужной версии) из набора маросов от Leon'а (в макросе надо поменять формат вывода, может сохранять во многие графические форматы, в том числе PNG):

Цитата

...

SaveAsPDF - сохранение чертежа в формате PDF и TIFF;

...

PDFCreator-1_2_1_setup - дистрибутив PDFCreator версии 1.2.1.

...

https://cccp3d.ru/topic/6622-спецификация-для-sw-по-гост/

 

 

 

18 часов назад, nahaus сказал:
10.07.2024 в 16:39, ЮрЮрыч сказал:

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

попробуйте Ctrl + X и Ctrl + V

 

8 часов назад, ЮрЮрыч сказал:

... в VBA

В VBA Solidworks есть аналогичные команды.

Выбрать объект для перемещения, потом Part.EditCut, поменять активный лист, тыкнуться в точку на новом листе и Part.Paste.

 

Так же можно глянуть макрос по работе со спецификацией от Leon'a (там перемащает и разбивает, а так же сортирует таблицу спецификации):

https://cccp3d.ru/topic/6622-спецификация-для-sw-по-гост/

 

Ссылка на сообщение
Поделиться на других сайтах
09.07.2024 в 12:18, Snake 60 сказал:

' Здесь должен быть код обработки нестандартного формата листа, которого пока нет :) Debug.Print "Неизвестный формат"

Номера некоторых, даже стандартных форматов, могут отличаться по номеру, как-то писал програмку для поиска этих номеров для форматов (например, подправлял номера форматов в макросе SaveAs работающий через PDFCreator):

https://kelnyproject.ucoz.ru/load/spisok_formatov_vybrannogo_printera/7-1-0-26

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

@Snake 60 Немного усовершенствовал ваш код. Теперь можно сохранять любой размер чертежа, без привязки к формату. Вот только я не нашел, как программно отключить функцию "Показать PNG после сохранения". Но ее можно перед запуском макроса вручную выключить. Метод GetProperties можно заменить на GetProperties2, если версия Solidworks 2016 и выше.

 

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


Option Explicit

Sub main()

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swDrawDoc               As SldWorks.DrawingDoc
Dim swSheet                 As SldWorks.Sheet
Dim vSheetNameArr()         As String
Dim vSheetName              As Variant
Dim lErrors                 As Long
Dim lWarnings               As Long
Dim FileName                As String
Dim FolderName              As String
Dim strOrigActiveSheet      As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Проверяем открыто ли что-либо?
If swModel Is Nothing Then
    swApp.SendMsgToUser2 "Нет ни одного открытого докумета! Пожалуйста, откройте ЧЕРТЕЖ!", 1, 2
    Exit Sub
End If

' Проверяем открыт ли ЧЕРТЕЖ?
If swModel.GetType <> 3 Then
    swApp.SendMsgToUser2 "Макрос работает только с чертежами! Пожалуйста, откройте ЧЕРТЕЖ!", 1, 2
    Exit Sub
End If

' Проверяем сохранен ли чертеж?
If swModel.GetPathName = Empty Then
    swApp.SendMsgToUser2 "Пожалуйста, сперва сохраните ЧЕРТЕЖ!", 1, 2
    Exit Sub
End If

FolderName = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") - 1) & "\PNG\"    ' создаем имя папки для сохранения PNG-файлов
If Dir(FolderName, 16) = Empty Then MkDir FolderName                                        ' если папки с таким именем не сущ-ет, то создаем папку
    
FileName = FolderName & Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1, InStrRev(swModel.GetPathName, ".") - InStrRev(swModel.GetPathName, "\") - 1)    ' получаем имя файла

' Здесь изменяем/устанавливаем настройки экспорта чертежа в формате PNG
swApp.SetUserPreferenceIntegerValue 7, 0        ' тип изображения: Черно-белый
swApp.SetUserPreferenceIntegerValue 6, 1        ' выбираем "Печать захвата"
swApp.SetUserPreferenceIntegerValue 9, 300      ' задаем разрешение картинки (DPI - точек на дюйм)
swApp.SetUserPreferenceToggle 28, True          ' выбираем "в размер страницы"
swApp.SetUserPreferenceIntegerValue 10, 12      ' выбираем размер бумаги: "Настройки пользователя"

Set swDrawDoc = swModel
Set swSheet = swDrawDoc.GetCurrentSheet
strOrigActiveSheet = swSheet.GetName        ' получаем имя первоначально активного листа
vSheetNameArr = swDrawDoc.GetSheetNames     ' получаем массив с именами листов

' Проходимся по всем листам циклом
For Each vSheetName In vSheetNameArr

    swDrawDoc.ActivateSheet vSheetName
    Set swSheet = swDrawDoc.GetCurrentSheet
    
    ' Задаем размер бумаги в зависимости от формата
    swApp.SetUserPreferenceDoubleValue 9, swSheet.GetProperties(5)  ' задаем ширину бумаги
    swApp.SetUserPreferenceDoubleValue 8, swSheet.GetProperties(6)  ' задаем высоту бумаги
    
    swModel.ViewZoomtofit2
    swModel.Extension.SaveAs FileName & " - " & vSheetName & ".PNG", 0, 1, Nothing, lErrors, lWarnings ' сохраняем лист в формате PNG

Next vSheetName

swDrawDoc.ActivateSheet strOrigActiveSheet
swApp.SendMsgToUser2 "Экспорт успешно завершен!", 2, 2

End Sub

 

 

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

Вот только я не нашел, как программно отключить функцию "Показать PNG после сохранения".

Файл-Сохранить как-В выпадающем списке выбираем PNG и снимаем птичку "Показать PNG после сохранения"

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

Снимок экрана 2024-07-14 222043.png

 

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

Файл-Сохранить как-В выпадающем списке выбираем PNG и снимаем птичку "Показать PNG после сохранения"

  Скрыть содержимое

Снимок экрана 2024-07-14 222043.png

 

Видимо Вы меня неправильно поняли) Я и написал, что не знаю как программно выключить, т.е. в документации к solidworks api не смогу найти метод, чтобы в коде прописать. То, что Вы показываете, т.е. вручную выключить посмотр png, я это и так знаю)

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

@Snake 60 Немного усовершенствовал ваш код. Теперь можно сохранять любой размер чертежа, без привязки к формату. Вот только я не нашел, как программно отключить функцию "Показать PNG после сохранения". Но ее можно перед запуском макроса вручную выключить. Метод GetProperties можно заменить на GetProperties2, если версия Solidworks 2016 и выше.

 

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


Option Explicit

Sub main()

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swDrawDoc               As SldWorks.DrawingDoc
Dim swSheet                 As SldWorks.Sheet
Dim vSheetNameArr()         As String
Dim vSheetName              As Variant
Dim lErrors                 As Long
Dim lWarnings               As Long
Dim FileName                As String
Dim FolderName              As String
Dim strOrigActiveSheet      As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Проверяем открыто ли что-либо?
If swModel Is Nothing Then
    swApp.SendMsgToUser2 "Нет ни одного открытого докумета! Пожалуйста, откройте ЧЕРТЕЖ!", 1, 2
    Exit Sub
End If

' Проверяем открыт ли ЧЕРТЕЖ?
If swModel.GetType <> 3 Then
    swApp.SendMsgToUser2 "Макрос работает только с чертежами! Пожалуйста, откройте ЧЕРТЕЖ!", 1, 2
    Exit Sub
End If

' Проверяем сохранен ли чертеж?
If swModel.GetPathName = Empty Then
    swApp.SendMsgToUser2 "Пожалуйста, сперва сохраните ЧЕРТЕЖ!", 1, 2
    Exit Sub
End If

FolderName = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") - 1) & "\PNG\"    ' создаем имя папки для сохранения PNG-файлов
If Dir(FolderName, 16) = Empty Then MkDir FolderName                                        ' если папки с таким именем не сущ-ет, то создаем папку
    
FileName = FolderName & Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1, InStrRev(swModel.GetPathName, ".") - InStrRev(swModel.GetPathName, "\") - 1)    ' получаем имя файла

' Здесь изменяем/устанавливаем настройки экспорта чертежа в формате PNG
swApp.SetUserPreferenceIntegerValue 7, 0        ' тип изображения: Черно-белый
swApp.SetUserPreferenceIntegerValue 6, 1        ' выбираем "Печать захвата"
swApp.SetUserPreferenceIntegerValue 9, 300      ' задаем разрешение картинки (DPI - точек на дюйм)
swApp.SetUserPreferenceToggle 28, True          ' выбираем "в размер страницы"
swApp.SetUserPreferenceIntegerValue 10, 12      ' выбираем размер бумаги: "Настройки пользователя"

Set swDrawDoc = swModel
Set swSheet = swDrawDoc.GetCurrentSheet
strOrigActiveSheet = swSheet.GetName        ' получаем имя первоначально активного листа
vSheetNameArr = swDrawDoc.GetSheetNames     ' получаем массив с именами листов

' Проходимся по всем листам циклом
For Each vSheetName In vSheetNameArr

    swDrawDoc.ActivateSheet vSheetName
    Set swSheet = swDrawDoc.GetCurrentSheet
    
    ' Задаем размер бумаги в зависимости от формата
    swApp.SetUserPreferenceDoubleValue 9, swSheet.GetProperties(5)  ' задаем ширину бумаги
    swApp.SetUserPreferenceDoubleValue 8, swSheet.GetProperties(6)  ' задаем высоту бумаги
    
    swModel.ViewZoomtofit2
    swModel.Extension.SaveAs FileName & " - " & vSheetName & ".PNG", 0, 1, Nothing, lErrors, lWarnings ' сохраняем лист в формате PNG

Next vSheetName

swDrawDoc.ActivateSheet strOrigActiveSheet
swApp.SendMsgToUser2 "Экспорт успешно завершен!", 2, 2

End Sub

 

 

Ваш макрос работает великолепно! SW 2014 SP4.0

Спасибо за комментарии в коде.

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

Я копирую код из форума, вставляю в VScode в файл с расширение vb, чтобы комментарии на кириллице не превратить в знаки вопроса, а потом копирую в редактор SolidWorks.

 

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

Здравствуйте, начинаю изучать VS, не видит SolidWorks. 

День добрый. А можно более развернутый вопрос?

Как я понимаю, VS это VisualStudio?

И что значит "не видит"?

В какой сомент времени это "не видит" происходит?

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

Видимо Вы меня неправильно поняли) Я и написал, что не знаю как программно выключить, т.е. в документации к solidworks api не смогу найти метод, чтобы в коде прописать.

Это вероятно намёк, что если там отключить галочку в этом окне (она вроде сохраняет установку), то и програмно ни чего показывать не будет. Хотя как вариант вызывать это окно и снимать эту галочку через WinAPI, если нет функции на изменение этого параметра в SolidworksAPI.

 

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

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

Я копирую код из форума, вставляю в VScode в файл с расширение vb, чтобы комментарии на кириллице не превратить в знаки вопроса, а потом копирую в редактор SolidWorks.

Попробуйте перед копированием изменить язык ввода клавиатуры на РУССКИЙ, а потом копировать и вставлять без промежуточной программы.

 

6 часов назад, ЮрЮрыч сказал:

начинаю изучать VS, не видит SolidWorks. 

SDK при установки не ставили?

https://help.solidworks.com/2023/english/api/sldworksapiprogguide/gettingstarted/solidworks_api_getting_started_overview.htm?_gl=1*ymabj0*_up*MQ..*_ga*ODE2NDAyMzY2LjE3MjEwMjY5MzE.*_ga_XQJPQWHZHH*MTcyMTAyNjkzMC4xLjAuMTcyMTAyNjkzMC4wLjAuMA..

 

А вообще подключаете нужные библиотеки и вперёд, примеры так же есть в справке:

https://help.solidworks.com/2023/english/api/SWHelp_List.html?id=8b0d904e2ba74d4b80604e94f6f8804b#Pg0

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

@nahaus  Моя вина, забыл выложить файл макроса. Я его еще немного улучшил. Надеюсь будет работать. Насчет редактора кода: я сам лично использую только встроенный редактор VBA, я в нем уже как-то освоился. И как уже ответил Вам @Kelny , перед копированием кода, который содержит кириллицу, переключайте раскладку клавиатуры на русский язык.

Macros_SheetSaveAsPNG.v2014.swp

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

Здравствуйте. Может кто нить подсказать, почему вместо символа табуляции в заметку на чертеже попадает какой то квадратик? строка кода:

strTemp = vbTab + "Тест1 " + sName + " Тест" + vbCrLf 

попытка вставить символ по номеру приводит к тому же результату.

При этом если скопировать этот квадратик в блокнот, то там он модифицируется в символ табуляции... И даже если сюда скопировать...

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

 

Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc

Set swView = Part.GetFirstView
Set swNote = swView.GetFirstNote

strTemp = vbTab + "Тест1 " + vbCrLf + vbTab + "Тест2 "          ' vbTab не работает. в заметке появляется какой то квадратик
Set swNote = Part.InsertNote(strTemp)                                       ' СОЗДАЕМ ЗАМЕТКУ.

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

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

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

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

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

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

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

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

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

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

    • jtok
    • Kelny
    • Shvg
    • Chuvak
  • Сообщения

    • jtok
      Ну у меня напрямую, руками, в заметку не получилось вставить символ табуляции. Кнопка табуляции работает, только если она стоит в начале строки - при этом строка сдвигается вправо. Подозреваю, что этот символ в середину или начало заметки вставить невозможно. На форуме спрашивали об этом 15 лет назад, вот дискуссия: Т.к. форум тот доступен только для лицензированных пользователей SW, то выложил скрин. Для табулированного текста посоветовали юзать таблицы.
    • NotA1one
      в опубликованной детали семейства можно же материал поменять? PS невнимательно прочел, пробовали, сбрасывается. Ну и еще в таблицу, наверное, не подтягивается.   А если материал в дочерних менять из редактора атрибутов мастер-детали, тоже сбрасывается при обновлении?
    • aleksejkolinko
      Ну почему же бред? Изготавливать монолитом дорого и неремонтнопригодно. А фрезернуть приспособу после затяжки винтов - то что нужно. В случае износа опорных мест их всегда можно заменить. Но вопрос даже не в этом. Вопрос в том, учитывается ли допуск на размер отверстия и в какую сторону и как вообще. Для меня это за гранью понимания, а литературы, видео - хоть какого-нибудь материала я не нашёл. Только валы и ка рассчитать компенсирующее звено между ступенями вала.
    • Kelny
      Так происходит, когда объект не может воспринять тот или иной символ и заменяет его замещающей информацией. Вероятно заметки не понимают символ табуляции и для разнесения текста надо использовать другие варианты, например пробелы.
    • Rinum
      Я не помню, есть ли данная возможность в 13 версии, но в версиях новее (где то с 16-17) есть возможность разрушить прямоугольник при создании и на его сторонах строить скругления. Или вовсе удалить часть сторон, если они не нужны. Как ли альтернатива изменению стиля линий К слову, проблемы с определением эскиза, возможно, могут возникать из за лишних степеней свобод. Образно говоря, одна сторона симметричной фигуры "живет" отдельно от другой. Тогда попытка параметризировать одну из сторон может привести к тому, что другая уедет куда нибудь в Саратов. Может быть, компас ругается именно на это Ну, как вариант
    • polar_christin
      Действительно, по Вашему способу эскиз уже помечается определенным. Конечно больше надо параметров надо накладывать, но, видимо лучше делать так. Я обычно просто строю прямоугольник, (т.к. иногда мне необходимо привязать его центр к определенной точке, не проводя хоть и простые, но побочные расчеты), перевожу боковые стороны в "тонкие" или "вспомогательные" и строю дуги. А обновится, да, было бы неплохо, ахах
    • Павел1
      В PM есть такой файлик pmstartup.mac, находится он обычно в C:\Program Files\Delcam\PowerMILL ххххх\lib\macro. Вы можете в него добавлять разные простые команды, в том числе и предпочтения для NC-файлов, только вместо $dir, укажите реальный путь к папке в " ", куда необходимо записывать УП. И каждый раз, при запуске PM у Вас данные настройки предпочтений уже будут заполнены. Создаете NC-файл, все настройки уже готовы, записываете, и она направляется в указанную вами папку. Просто PM сохраняет не все настройки, которые вы сделали в "Опциях", поэтому приходится прибегать к помощи данного файлика. А так, конечно, тут уже каждый сам себе хозяин. Кому как удобно. 
    • Rinum
      Только что попробовал, все нормально определяется. Тут одно из двух. Либо вы что то делаете не так (я не видел, как вы строите), либо ваш компас тактично намекает, что ему нужно обновиться. Только что создал аналогичный эскиз (две прямые, две дуги, ограничения на выравнивание прямых, размеры, все нормально). Если Вы имели ввиду все таки то, что ваш эскиз в дереве построения отображается как неопределенный, то это потому что он не зафиксирован в самой плоскости 
    • rip13
      С тепловыми рубками я работал, не знал я про контурные трубки. Смотрю какие комплектующие есть на рынке. Есть в основном барахло для домашних ПК.  Вопрос - систему, которую вы описываете можно построить из готовых комплектующих? Например гидроаккумулятор, чтоб не на 10 литров был я найти не смог. 
    • Killerchik
      Да, в Китае производится и продаётся в том числе на AliE множество шпиндельных зондов и чуть меньше устройств измерения инструмента. У меня шпиндельный зонд от компании Wentao, брал в РФ, они есть на AliE. Впечатление в целом положительное, главный минус - жрёт батарейки как не в себя, вынимаем когда не пользуемся. У них же есть аналог TS27R от Рени. Циклы я оставил Ренишоувские. Если не было опыта установки, вероятно потратите много времени для самостоятельного изучения, подумайте - возможно будет выгоднее кого-то нанять для установки.
×
×
  • Создать...