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

Макрос для копирования свойства?


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

Хочется иметь макрос который копирует значение свойства "description" и присваивает его свойству "заголовок" из закладки суммарная информация.

Подозреваю, что это примитивная задача, но к сожалению пока не освоил API :(

Если кто сможет помоч буду очень благодарен :)

Или как вариант можно ли при создании детали при сохранении занести наименование сразу на закладку суммарная информация?

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


В качестве названия файлов использую обозначение. Наименование ввожу при сохранении детали в дополнительном поле. Но свойство это СВ добавляет на закладку "настройка"

Если скопировать это свойство на закладку "суммарная информация" его можно отобразить в проводнике. Это в общем не обязательно, но приятно.

Если научите отображать в проводнике свойства с закладки "настройка" - тоже спасибо :)

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

Написан по SW2007. Если не 2007, то исползуются другие функции.

P.S. Забыл сказать, что информация берется из закладки "Сustom Configuration". Если нужно из закладки "Custom", то отредактируйте макрос

Sub main()

	On Error GoTo LineError

	Set swApp = Application.SldWorks



	Set swModel = swApp.ActiveDoc

	Set swSelMgr = swModel.SelectionManager



	Set swCustomPropMgr = swModel.Extension.CustomPropertyManager("")

	

	Dim valOut As String, resValOut As String

	swCustomPropMgr.Get2 "Description", valOut, resValOut 'вместо Description может быть любое свойство

	If resValOut = "" Then

		Exit Sub

	End If

	

	swModel.SummaryInfo(swSummInfoField_e.swSumInfoTitle) = resValOut ' константа swSummInfoField_e.swSumInfoTitle записывает текст из свойства  куда необходимо в закладке Суммарная информация

	

	Exit Sub

LineError:

	

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

К сожалению, под рукой нет API для 2006, но вроде и предыдущий макрос может работать.

А этот код должен работать и на более ранних версиях SW

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2



Sub main()

	On Error GoTo LineError

	Set swApp = Application.SldWorks



	Set swModel = swApp.ActiveDoc

	Dim strValue As String

	strValue = swModel.GetCustomInfoValue("", "Description") '  любое нужное свойство из закладки Custom

	If strValue = "" Then

		Exit Sub

	End If

	swModel.SummaryInfo(swSummInfoField_e.swSumInfoTitle) = strValue

	Exit Sub

LineError:

	

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

Вдогонку по свойству Обозначение.

Пытался безуспешно придумать макрос, который создает свойство "Обозначение" для деталей и сборок, значение для которого берет из имени файла (без расширения). Нужно именно значение, а не $PRP:"SW-File Name".

Прошу помочь.

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

А свой создавать обязательно ?

Пользуюсь Этим и он раскидывает по свойствам Обозначение и если желаешь то и Наименование

И другие готовые макросы тоже вроде зачитку из имени файла делают

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

Пользуюсь Этим

<{POST_SNAPBACK}>

Там DLL-ка, а мне бы надо сам код вытащить и в свой макрос внедрить. Поможите. Кто-нибудь? В макросах секу слабовато.

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

To Игорь. Если это то, что вам нужно, конечно. Написан под SW2007, вроде работает, особо не проверял.

Option Explicit



Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swCustomPropMgr As SldWorks.CustomPropertyManager

Dim i As Integer



Sub main()

	On Error GoTo LineError

	

	Dim bres As Boolean

	bres = False

	

	Set swApp = Application.SldWorks

	

	Set swModel = swApp.ActiveDoc

	If swModel Is Nothing Then

		Exit Sub

	End If

		

	Dim DocType As Long

	DocType = swModel.GetType

	

	If Not DocType = swDocPART And Not DocType = swDocASSEMBLY Then

		Exit Sub

	End If

	

	Dim strFullName As String

	strFullName = swModel.GetPathName()

	

	Dim arrName As Variant

	arrName = Split(strFullName, "\")

	

	Dim iArr As Integer

	iArr = UBound(arrName)

	

	Dim strName As String

	strName = arrName(iArr)

	

	Dim iLen As Integer

	iLen = Len(strName)

	strName = Left(strName, iLen - 7)

	

	Set swCustomPropMgr = swModel.Extension.CustomPropertyManager("") 'Прописываться будет в закладке Custom

	

	Dim arrNamesPrp As Variant

	arrNamesPrp = swCustomPropMgr.GetNames

	

	Dim iCountPrp As Integer

	

	If Not IsEmpty(arrNamesPrp) Then

		iCountPrp = UBound(arrNamesPrp)

		

		Dim strNameProperties As String

		For i = 0 To iCountPrp

			strNameProperties = arrNamesPrp(i)

			If strNameProperties = "Обозначение" Then 'вместо "Обозначения" может быть любое нужное свойство свойство

				bres = True

				Exit For

			End If

		Next i

	End If

	

	If bres = False Then

		swCustomPropMgr.Add2 "Обозначение", SwConst.swCustomInfoType_e.swCustomInfoText, strName

	Else

		swCustomPropMgr.Set "Обозначение", strName

	End If

	

	Exit Sub

	

LineError:

		

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

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

А вот задачку автоматического считывания названия конфигураций и "обозначение" ни кто не решал ещё?

HELP по SolidWorks-2007 тут предлагает путь: PRP:"SW-File Name"PRP:"SW-Имя конфигурации", но почему то какждой из конфигураций присваивается имя активной в данный момент, опять же не ясно как быть с извлечёнными конфигурациями.

Штука эта нужна, ибо мультикадные PDM системы требуют оригинального имени на каждую конфигурацию, а "ручками" забивать сами понимаете как охота.

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

ибо мультикадные PDM системы требуют оригинального имени на каждую конфигурацию

<{POST_SNAPBACK}>

Есть вопросик...

Часто узел без исполнений имеет конфигурации различных положений

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

Да еще хлеще если их в верхней несколько, да все в разных конфах

Как же тогда ублажить "мультикадную PDM"

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

Часто узел без исполнений имеет конфигурации различных положений

<{POST_SNAPBACK}>

Вот тут то и есть самое место для извлечённых конфигураций.

Оыкновенно таковых бывает до 3...4 на каждое исполнение.

Как же тогда ублажить "мультикадную PDM"

<{POST_SNAPBACK}>

Самое простое: купить контрольный пакет акций фирмы-разработчика этой "мультикадной" PDM или хоть договориться на предмет указания пользователем именно той конфигурации, что и должна отобразиться в спецификации.

Либо таки искать выход в API.

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

Вот тут то и есть самое место для извлечённых конфигураций

<{POST_SNAPBACK}>

Так она (PDM) что игнорирует обозначения извлеченных...

Но ведь они зачастую бывают и исполнениями

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

Так она (PDM) что игнорирует обозначения извлеченных...

Но ведь они зачастую бывают и исполнениями

<{POST_SNAPBACK}>

Не игнорирует, а как раз требует точное обозначение и на них тоже..

в том то весь и фокус... :g:

В качестве примера

http://fsapr2000.ru/index.php?showtopic=13295

ну может хоть какая полезная информация там обрящется, про мультикадные PDM.

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

HELP по SolidWorks-2007 тут предлагает путь: PRP:"SW-File Name"PRP:"SW-Имя конфигурации", но почему то какждой из конфигураций присваивается имя активной в данный момент,

<{POST_SNAPBACK}>

Тоже на эти грабли наступил. Выход есть, указывать вместо PRP:"SW-Имя конфигурации" реальное имя. Программно, конечно, при заполнении свойств.
Ссылка на сообщение
Поделиться на других сайтах

Тоже на эти грабли наступил. Выход есть, указывать вместо PRP:"SW-Имя конфигурации" реальное имя. Программно, конечно, при заполнении свойств.

<{POST_SNAPBACK}>

Ну что же, придётся дать напругу SWR (хотя это трудно) и "фирменным" программистам.

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

Странник

Чтой то не понял логики ваших рассуждений (см. посты 12…16)

#12. "мультикадные PDM системы требуют оригинального имени на каждую конфигурацию" :clap_1:

#13. Однако не все конфигурации обязаны иметь обозначение (например конф-я положения) :g:

#14. "Вот тут то и есть самое место для извлечённых конфигураций" :bleh:

#15. Получается PDM игнорирует обозначения извлеченных... :g:

#16. "Не игнорирует, а как раз требует точное обозначение и на них тоже… в том то весь и фокус..."

Можно в 2-х словах: О чем вы это :g:

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

Можно в 2-х словах: О чем вы это

<{POST_SNAPBACK}>

Всё просто.

Для мультикадных PDM нужно делать оригинальное обозначение для каждой конфигурации, в том числе и извлечённой, иначе просто не запишешь документ. Меж тем путь предлагаемый SolidWorks нагло глючит, а извлечённые конфигурации вообще неизвестно как обзывать автоматически.

Надеюсь, хоть с постулатом гласящим, что не все конфигурации надо затаскивать в спецификацию и сохранять в PDM (как правило это извлечённые конфигурации) спорить не будете?

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

P.S. Не всё можно познать со слов, кое что нужно и опытно.

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

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

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

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

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

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

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

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

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

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

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




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