Jump to content

Вывод свойства на чертеж


stest6905

Recommended Posts

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

У меня есть заполненные поля свойства документа. мне нужно вывести на чертеж конкретный пункт (допустим "test"). Подскажите как я могу это вывести используя макрос (не всегда данный параметр нужен)?

Спасибо. 

Link to post
Share on other sites


UnPinned posts

по аналогии с другими свойствами как выводишь "обозначение " или "наименование" так и свойство любое.

 

Link to post
Share on other sites

А хотел сделать по аналогии с таким:

$PRP:"SW-File Name" ->- $PRP:"ttt"

но я не знаю как в макросе вызвать данные параметры... 

 

3 минуты назад, malvi.dp сказал:

Записать в заметке, сохранить в часто используемых и вставлять когда нужно

Этот параметр считается для каждой детали, это не статический текст...

6 минут назад, Maik812 сказал:

по аналогии с другими свойствами как выводишь "обозначение " или "наименование" так и свойство любое.

 

К сожалению у меня мало опыта в работе с VBA, по этому и обратился сюда... 

Link to post
Share on other sites

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

 

 

Link to post
Share on other sites
8 минут назад, stest6905 сказал:

Этот параметр считается для каждой детали, это не статический текст..

В заметку нужно ввести текст типа: $PRPSHEET:"Имя нужного св-ва модели" и когда это св-во изменится в модели, в чертеже тоже произойдет  его изменение без всяких макросов

Если же это св-во чертежа, тогда $PRP:"Имя нужного св-ва чертежа"

Edited by malvi.dp
  • Нравится 1
Link to post
Share on other sites
45 минут назад, malvi.dp сказал:

В заметку нужно ввести текст типа: $PRPSHEET:"Имя нужного св-ва модели" и когда это св-во изменится в модели, в чертеже тоже произойдет  его изменение без всяких макросов

Если же это св-во чертежа, тогда $PRP:"Имя нужного св-ва чертежа"

За ответ спасибо. Данной особенности я не знал, использую также в своих целях!

 

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

В интернете я нашел кусок кода который может показать значение параметра который меня интересует но почему то он ничего не отображает...

Dim swApp As Object

Dim instance As ICustomPropertyManager
Dim FieldName As String
Dim UseCached As Boolean
Dim ValOut As String
Dim ResolvedValOut As String
Dim wasResolved As Boolean
Dim value As Integer

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
          
value = instance.Get5("test", UseCached, ValOut, ResolvedValOut, wasResolved)

End Sub

 

Link to post
Share on other sites
1 час назад, Kir95 сказал:

Я его запускаю и ничего не происходит... Если пройти пошагово то эти пункты пустые... 

Debug.Print " " & swNote.GetName
Debug.Print " " & swNote.GetText <- Вот функция которая получает текст заметки, его тебе и надо проверять.

Плюс я не знаю где смотреть результат (как я понимаю должен где-то быть лог происходящего в скрипте по действию "Debug.Print")

Link to post
Share on other sites
4 минуты назад, stest6905 сказал:

Плюс я не знаю где смотреть результат (как я понимаю должен где-то быть лог происходящего в скрипте по действию "Debug.Print")

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

Imm_window.png

 

В этой ветке знающие люди быстрее ответят )

 

14 минут назад, stest6905 сказал:

Я его запускаю и ничего не происходит... Если пройти пошагово то эти пункты пустые.

Да, сам макрос, вроде к заметкам чертежа, а не к свойствам

Link to post
Share on other sites
11 минут назад, Kir95 сказал:

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

Спасибо!!!

Запустил но параметра по которому хочу сделать поиск не отображается... Как фильтровать?

Screenshot-1.png 

Link to post
Share on other sites

 

4 часа назад, stest6905 сказал:

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

Спойлер

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String
Dim bool As Boolean
Dim myNote As Object

Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swCustProp = swModelDocExt.CustomPropertyManager("")
bool = swCustProp.Get6("ttt", False, valout, val, False, False)
Set myNote = swModel.InsertNote(valout)
End Sub

Солид не старше 2018, добавляет заметку в чертёж (туда, куда ткнул курсором) с текстом из свойства ttt

взял куски кода из справки солида и немного отсюда 

 

Link to post
Share on other sites
3 минуты назад, Kir95 сказал:

Солид не старше 2018, добавляет заметку в чертёж (туда, куда ткнул курсором) с текстом из свойства ttt

взял куски кода из справки солида и немного отсюда 

У меня 2015... Ругается на строку

bool = swCustProp.Get6("ttt", False, valout, val, False, False)
Цитата

"Runtime error '438' object doesn't support this property or method"

Буду изучать. Пока спасибо за информацию

Link to post
Share on other sites
3 минуты назад, stest6905 сказал:

У меня 2015... Ругается на строку

поменяй на 

bool = swCustProp.Get4("ttt", False, val, valout)

Link to post
Share on other sites
7 минут назад, Kir95 сказал:

поменяй на 

bool = swCustProp.Get4("ttt", False, val, valout)

Заработало! Спасибо еще раз.

В процессе работы возник другой вопрос:

-как можно вставить полученные данные в свойства с параметром "ttt2"?  

Link to post
Share on other sites
2 минуты назад, stest6905 сказал:

-как можно вставить полученные данные в свойства с параметром "ttt2"?  

А ttt2 уже есть в свойствах документа? Просто солид может и создавать и перезаписывать/не перезаписывать существующее свойство

Добавь строчку 

bool = swCustProp.Add2("ttt2", 30, valout)
 

Link to post
Share on other sites
Только что, Kir95 сказал:

А ttt2 уже есть в свойствах документа? Просто солид может и создавать и перезаписывать/не перезаписывать существующее свойство

Есть но оно пустое, макрос по выполнению операций может записать (перезаписать) результат

Link to post
Share on other sites
4 минуты назад, stest6905 сказал:

Есть но оно пустое, макрос по выполнению операций может записать (перезаписать) результат

Тогда такую

bool = swCustProp.Set2("ttt2", valout)

  • Чемпион 1
Link to post
Share on other sites
23 часа назад, Kir95 сказал:

Тогда такую

bool = swCustProp.Set2("ttt2", valout)

Протестировал все работает, спасибо!!!

Link to post
Share on other sites
В 02.11.2020 в 14:53, stest6905 сказал:

Запустил но параметра по которому хочу сделать поиск не отображается... Как фильтровать?

А смысл всего этого был в итоге в чем ? в поиске или вставка свойства зачем нужна?

Да и и готовый макрос можно было выложить людям....

Link to post
Share on other sites
16 часов назад, Maik812 сказал:

А смысл всего этого был в итоге в чем ?

Я хотел выводить информацию а некотором параметре в CODE128. Дело в том, что скрипт переделывает данные а потом на полученные данные заменятся шрифт. 

В целом все получилось но вылезла проблема: CODE128 не работает с кириллицей а в некоторых случаях она появляется...

 

Ищу другой вариант как вывести данные в CODE128. Получится выложу код 

Link to post
Share on other sites
18 минут назад, stest6905 сказал:

Я хотел выводить информацию а некотором параметре

ну и какой параметр выводишь и зачем ?

Link to post
Share on other sites
34 минуты назад, Maik812 сказал:

ну и какой параметр выводишь и зачем ?

Габариты детали, как вариант еще и имя можно выводить для быстрого ввода для поиска либо для отчетности

Link to post
Share on other sites
7 часов назад, stest6905 сказал:

Габариты детали, как вариант еще и имя можно выводить для быстрого ввода для поиска либо для отчетности

уже было сделано подобное

 

Solidworks 2014

Link to post
Share on other sites
8 часов назад, stest6905 сказал:

можно выводить для быстрого ввода для поиска либо для отчетности

 

Exel фото.gif

Edited by Maik812
Link to post
Share on other sites
10 часов назад, Maik812 сказал:

уже было сделано подобное

Круто!!! Спасибо что показали!!!
Когда то давно пользовался программой #TASK.application (когда она была еще бесплатной). есть много хороших функций и возможностей!

 

Что же касается именно моей задачи то я хотел чтобы данные были на чертеже в формате code128 для дальнейшего быстрого считывания... Вариант с шрифтами пока не вариант

Link to post
Share on other sites
3 минуты назад, stest6905 сказал:

Когда то давно пользовался программой #TASK.application (когда она была еще бесплатной)."

есть ее бесплатный аналог CAD+ Toolset

 

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



×
×
  • Create New...