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

Сделай свою работу в Solidworks эффективнее


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

17 часов назад, Snake 60 сказал:

@DmitriySD Замени строку:




CustProp2Value = strValue(1)

на вот эту:




CustProp2Value = """" & strValue(1) & """"

 

Добрый день!

 

Неа так не работает. Мне нужно чтобы он не превращал надпись D1@Эскиз1 в "D1@Эскиз1", а чтобы он брал вычисленное значение переменной. Нужно что бы цифра постучалась вместо D1@Эскиз1. Когда макрос отрабатывает то он создает файл с именем СН20.003.01.02.005-01_D1@Эскиз1_08Х18Н10Т_.dxf, а я хочу на выходе получать СН20.003.01.02.005-01_8_08Х18Н10Т_.dxf.

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

image.png

 

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


5 минут назад, DmitriySD сказал:

Неа так не работает. Мне нужно чтобы он не превращал надпись D1@Эскиз1 в "D1@Эскиз1", а чтобы он брал вычисленное значение переменной. Нужно что бы цифра постучалась вместо D1@Эскиз1.

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

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

День добрый.

Обновление  бета варианта второй версии SetLabels.

Что изменено:

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

З.Ы. Надеюсь на обратную связь в виде предложений и замечаний.

SetLabels_beta2.1.zip

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

.... ой, ерунда какая-то получилась, что-то дюже подглючивает.

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

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

День добрый.

Вроде бы, рабочая версия макроса SetLabels.

Что изменено:

  • работает переход по видам по двойному клику в форме.
  • теоретически работает переименование допусков, вслед за базами ( подробно не тестировал, поэтому теоретически).
  • можно делать дублирование обозначения поверхности.

SetLabels_v2.zip

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

Блин. Временами у меня складывается впечатление, что АПИ Солид-а писали муж и жена, которые поругались и уже две недели не разговаривают друг с другом.

Интерфейс: GetName2( ) для :

Проекционный вид выдает что-то типа "Чертежный вид##". ## - какой-то числовой индекс.

Вспомогательный вид - "Чертежный вид##".

Разрез  - "Разрез А-А" (где А - метка вида) (измени метку - изменится имя вида)

Местный вид  - "Местный вид А (1:1)" (измени метку или масштаб - изменится имя вида)

 

Но имя - ладно... есть же:

Интерфейс GetUniqueName( )  ( по логике должно быть что-то уникальное), но:

Проекционный вид выдает что-то типа "Чертежный вид##".

Вспомогательный вид - "Чертежный вид##".

Разрез  - "Чертежный вид##".

Местный вид  - "Местный вид А (1:1)"  ( почему местный вид обидели ? , причем измени метку вида - изменится и "УНИКАЛЬНОЕ" имя)

 

При всем при этом уникальное имя для всех видов тоже не такое уж и уникальное, стоит переместить вид на другой лист и вуаля -  вид увеличил свой числовой индекс.

 

З.Ы. ... выговорился, прошу прощения за оффтоп

З.З.Ы. очередная правка, из-за "УНИКАЛЬНОСТИ" видов.

 

 

SetLabels_v2.zip

  • Нравится 1
  • Чемпион 2
  • Хаха 1
Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, nicomed сказал:

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

Какие условия нужно для работы этой опции? Одинаковые буквы для базы и буквы в допуске формы или расположения? Или речь не об этом вообще?

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

Какие условия нужно для работы этой опции? Одинаковые буквы для базы и буквы в допуске формы или расположения? Или речь не об этом вообще?

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

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

 Должно работать: база  была А ... в допуске было  А -> стало база Б - допуск Б. Так же должно работать база А - допуск АБ -> база В - допуск БВ

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

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

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

 Должно работать: база  была А ... в допуске было  А -> стало база Б - допуск Б. Так же должно работать база А - допуск АБ -> база В - допуск БВ

Чего то не работает эта функция (( Базу переименовывает, а в допуске не хочет.

изображение.png

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

Чего то не работает эта функция (( Базу переименовывает, а в допуске не хочет.

изображение.png

 

Да вроде и работает, но да, как-то не очень надежно :(.

Бывает что происходит перепривязка допуска с одной базы на другую.

Что точно понятно - это если допуск или база создавались не на виде - то макрос их проигнорирует.

Пока, субъективно, перед переименованием помогает (по крайней мере морально) перестроить чертеж. (... после переименование тоже).

 

Через пару дней планирую добавить пробную функцию простановки  номеров листов, там же вынесу привязку допусков в опции, пока не отшлифую "технологию".

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

День добрый.

Выкладываю версию, с пробной функцией простановки листов.

При желании в файле OPTIONS.XML можно управлять функциями:

  • связи допусков формы/расположения с базами (параметр <linkgtols> (1-вкл/0-выкл));
  • простановки номеров листов (параметр <sheetsnumber> (1-вкл/0-выкл));
  • параметры <letters>, <out>,<color> можно изменять из окна макроса;
  • параметры содержащие <###Color> - настройки соответствующих цветов элементов в таблице.

 

Функция простановки листов в ООЧЕНЬ бета режиме, ибо, как обычно, уперся в идентификацию видов. Пока пошел по пути

удаления всего и вся (в смысле меток номеров листов), и, простановки меток заново. Так как не смог явно идентифицировать элемент отображающий метку вида и принадлежащий ProjectionArrow, то создавал Note по координатам самой ProjectionArrow (ну и за компанию Section и Detail, для единообразия). Т.е. текстовую метку номера листа (на родительском виде) надо подставлять к метке вида вручную. Позже поковыряюсь, что бы избежать ручного перетаскивания, хотя бы при изменении метки.

 

Вопросы к "обчесту" по организации интерфейса (UI):

  • нужна ли кнопка "УДАЛИТЬ ПОВЕРХНОСТЬ", если заметку можно просто удалить ?
  • может что из функционала, который пока тестовый, вынести на отдельную кнопку ?
  • ну и не совсем вопрос по UI -  нужна ли версия макроса вообще без UI , просто что бы переименовывала виды по умолчанию, с отображением окончанию результата в строке статуса SolidWorks ?

SetLabels_beta.zip

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

День добрый.

Очередная версия SetLabels.

Что изменено:

  • исправлено несколько ошибок при генерации номеров листов.
  • добавлен README файл.
  • при многолистовом чертеже активным остается тот лист, на котором макрос был запущен, а не последний.

SetLabels_v2.4.2.zip

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

Это все еще я, здравствуйте!

Как гласит одна народная мудрость: "Если ничего не помогает, прочтите, наконец, инструкцию." (т.е. мануал по АПИ).

В общем очередная версия SetLabels.

Что исправлено:

  • метки с номерами листов ставятся туда, где им быть положено (по крайней мере примерно туда).

 

SetLabels_v2.5.0.zip

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

Макрос, который работает в чертеже и позволяет изменить толщину линии где-то в 5 раз быстрее стандартных средств за счёт отключения обновления экрана. Актуально, когда много "выдавленного" текста. С окошком выбора толщины линии  

LineThickness.zip

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

Всем привет! Где можно посмотреть кусок кода, который для файлов деталей и сборок с именами вида Обозначение_Наименование вносит эти самые "Обозначение" и "Наименование" в свойства файла. Смотрел в MProp, но по-моему там все реализовано немного сложнее, чем мне надо.

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

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

@R2D2_ Мой вариант:

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



'Подпрограмма разделения имени файла на Наименование и Обозначение с занесением этих свойств на вкладку Конфигурация.
Sub SplitName()

    Dim swApp               As SldWorks.SldWorks
    Dim swModel             As SldWorks.ModelDoc2
    Dim CmpDoc              As SldWorks.ModelDoc2
    Dim swCustPropMgr       As SldWorks.CustomPropertyManager
    Dim swConfCustPrpMgr    As SldWorks.CustomPropertyManager
    Dim lRetVal             As Variant
    Dim strModelNameNoExt   As String
    Dim intCountHypens      As Integer
    Dim strActiveConfName   As String
    Dim CompPath            As String
    Dim CompConfig          As String


    'получаем точку входа в приложение solidworks
    Set swApp = Application.SldWorks
    
    CompPath = swSelComp.GetPathName
    
    CompConfig = swSelComp.ReferencedConfiguration

    Set CmpDoc = swSelComp.GetModelDoc
    
    'получаем выбранный документ
    Set swModel = CmpDoc
    
    'проверка активного документа
    If swModel Is Nothing Then
        swApp.SendMsgToUser " У вас нет ни одного открытого документа!" + Chr(13) + " Откройте деталь или сборку!"
        End
    End If
     
    'проверка что активный документ не чертеж
    If swModel.GetType = swDocumentTypes_e.swDocDRAWING Then
        swApp.SendMsgToUser " Чертежи не имеют конфигураций!" + Chr(13) + " Откройте сборку или деталь!"
        End
    End If
    
    'получаем в переменную имя активной конфигурации
    strActiveConfName = swModel.ConfigurationManager.ActiveConfiguration.Name
    
    'переключаемся на вкладку активной конфигурации
    Set swConfCustPrpMgr = swModel.Extension.CustomPropertyManager(strActiveConfName)
    
    'Получаем имя файла
    strModelName = swModel.GetTitle
    'MsgBox "Имя файла: " & strModelName
    
    'Проверяем содержит ли имя файла расширение или нет (это зависит от настроек windows) если содержит, то убираем его
    strModelName = Replace(strModelName, ".SLDPRT", "")
    strModelName = Replace(strModelName, ".sldprt", "")
    strModelName = Replace(strModelName, ".SLDASM", "")
    strModelName = Replace(strModelName, ".sldasm", "")
    strModelNameNoExt = strModelName
    'MsgBox "Имя файла без расширения: " & strModelNameNoExt


    'Разбиваем название файла на свойства используя разделитель "_"
    On Error Resume Next
    varWords = Split(strModelNameNoExt, "_", , vbTextCompare)

    intCountHypens = UBound(varWords)
    'MsgBox intCountHypens

    Select Case intCountHypens
    Case 0
        'MsgBox "Имя файла оформлено неправильно, отсутствует разделитель
    Case 1

        'MsgBox "Свойство Обозначение: " & varWords(0)
        'MsgBox "Свойство Наименование: " & varWords(1)

        'Активируем вкладку Конфигурация
        Set swCustPropMgr = CmpDoc.Extension.CustomPropertyManager(CompConfig)
            
        lRetVal = swCustPropMgr.Add3("Обозначение", swCustomInfoType_e.swCustomInfoText, varWords(0), swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
        lRetVal = swCustPropMgr.Set2("Обозначение", varWords(0))
        lRetVal = swCustPropMgr.Add3("Наименование", swCustomInfoType_e.swCustomInfoText, varWords(1), swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
        lRetVal = swCustPropMgr.Set2("Наименование", varWords(1))
            
    Case Else
        'MsgBox "Имя файла оформлено неправильно, cуществует более чем один разделитель
    End Select
    Err.Clear: On Error GoTo 0

End Sub

 

 

Может не хватать объявления каких то переменных, которые выносил в Public, нужно будет их просто объявить.

Если что по коду не понятно - спрашивай.

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

Обозначение_Наименование вносит эти самые "Обозначение" и "Наименование" в свойства файла. Смотрел в MProp, но по-моему там все реализовано немного сложнее, чем

Если был бы плагин под Total commander (ты не особо  поддерживаешь его создание) ... То там это есть и еще +1000 функций как с переименованием, изменение, поиска значений, исправления в имени, обозначении . Разделения имени можно двумя вариантами. Щас прям работает с 2014 солидом плагин Expander.wdx изменяет или убирает часть имени по любым значениям "_" например или пробел.

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

@Docuk1 А есть что-нибудь, чтобы кромки выделять быстрее? А то получается половина процесса этим макросом ускорена

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

ты не особо  поддерживаешь его создание

Нечего не имею ни против тотала ни против плагинов. Если бы они работали на новых релизах - было бы неплохо.

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

 

strModelName = Replace(strModelName, ".SLDPRT", "")
    strModelName = Replace(strModelName, ".sldprt", "")
    strModelName = Replace(strModelName, ".SLDASM", "")
    strModelName = Replace(strModelName, ".sldasm", "")
    strModelNameNoExt = strModelName
    

 

Компактнее записать так

strModelName = Replace$(strModelName, ".sldprt","",,,vbTextCompare)

strModelName = Replace$(strModelName, ".sldasm","",,,vbTextCompare)

Если знаем, что имя содержит расширение, еще компактнее

strModelNameNoExt = Left$(strModelName, InStrRev(strModelName,".") - 1)

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

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

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

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

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

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

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

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

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

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

    • davidovka



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