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

Создание макросом виртуальной детали "СП" и запись в нее свойств


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

Всем добрый день.

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

В сборке запускаю макрос, который сохраняет свойства сборки в Эксель файле.

Далее я открываю деталь СП и запускаю макрос, который записывает свойства из Эксель в эту деталь.

 

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

Если деталь "СП" уже есть, то просто запишет в нее свойства.

Шаблон детали и макросы прилагаю.

Солид 2019

Макрос для записи свойств сборки в деталь СП.txt ДетальСП2019.prtdot Сборка.SLDASM

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


UnPinned posts

В первый макрос добавил код:
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

Dim swFaceOrPlane As Object
Dim swComponent As Component2
longstatus = Part.InsertNewVirtualPart(swFaceOrPlane, swComponent)
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

 

Виртуальная деталь создается, но как выбрать нужный мне шаблон?

Имя детали "Деталь" с номером, а мне надо СП.
 

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

@VOleg , Макрос добавляет в сборку деталь (существующую), выравнивает её по исходным точкам, делает эту деталь виртуальной, меняет её массу на значение, введённое в окошке (путь к детали можно переписать в тексте и закомментировать строки с массой, если не нужно менять).

Посмотрите может будет полезен

InsertComponent.swp

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

@VOleg , Макрос добавляет в сборку деталь (существующую), выравнивает её по исходным точкам, делает эту деталь виртуальной, меняет её массу на значение, введённое в окошке (путь к детали можно переписать в тексте и закомментировать строки с массой, если не нужно менять).

 

Спасибо, посмотрю.

Мой макрос создает деталь. Но нигде не могу найти как задать шаблон при ее создании?

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

Мой макрос создает деталь. Но нигде не могу найти как задать шаблон при ее создании?

Так в моем макросе как раз можно прописать путь к файлу модели, которая и будет использоваться как шаблон.

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

Спасибо, посмотрю.

Мой макрос создает деталь. Но нигде не могу найти как задать шаблон при ее создании?

В методе создания детали нужно указать шаблон

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

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

Если деталь "СП" уже есть, то просто запишет в нее свойства.

Какие именно свойства должны быть записаны в эту деталь? Я не могу посмотреть в деталях и сборке, т.к у меня СВ 2018

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

Так в моем макросе как раз можно прописать путь к файлу модели, которая и будет использоваться как шаблон.

 

16 часов назад, Sturmann сказал:

В методе создания детали нужно указать шаблон

Я понимаю, что можно и даже мне это нужно, но вот как задать этот шаблон?

Где-то задесь?:

longstatus = Part.InsertNewVirtualPart(swFaceOrPlane, swComponent)
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

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

 

Я понимаю, что можно и даже мне это нужно, но вот как задать этот шаблон?

Где-то задесь?:

longstatus = Part.InsertNewVirtualPart(swFaceOrPlane, swComponent)
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

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

Скорее всего вам это нужно сделать раньше- в swComponent.

 

Или давайте с другой стороны зайдем- для чего вы вставляете виртуальный компонент?

В этом есть острая необходимость?

Зачем?

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

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

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

Скорее всего вам это нужно сделать раньше- в swComponent.

 

Или давайте с другой стороны зайдем- для чего вы вставляете виртуальный компонент?

В этом есть острая необходимость?

Зачем?

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

В виртуальном компоненте есть острая необходимость.

Вот код, который создает нужный мне компонент, но из шаблона по умолчанию, а мне нужен конкретный шаблон, который приведен в 1 посте.

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

Dim swFaceOrPlane As Object
Dim swComponent As Component2
longstatus = Part.InsertNewVirtualPart(swFaceOrPlane, swComponent)
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

 

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

Dim swSelMgr As SelectionMgr
Set swSelMgr = Part.SelectionManager
Dim swComp As Component2
Set swComp = swSelMgr.GetSelectedObject6(1, -1)
swComp.Name2 = "СП"
StudyManagerObj = Nothing
ActiveDocObj = Nothing
Set CWAddinCallBackObj = Nothing
Set COSMOSWORKSObj = Nothing

 

Но при запуске получаю следующее сообщение

 

Не определена переменная.PNG

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

В виртуальном компоненте есть острая необходимость.

Вот код, который создает нужный мне компонент, но из шаблона по умолчанию, а мне нужен конкретный шаблон, который приведен в 1 посте.

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

Dim swFaceOrPlane As Object
Dim swComponent As Component2
longstatus = Part.InsertNewVirtualPart(swFaceOrPlane, swComponent)
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("СП", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

 

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

Dim swSelMgr As SelectionMgr
Set swSelMgr = Part.SelectionManager
Dim swComp As Component2
Set swComp = swSelMgr.GetSelectedObject6(1, -1)
swComp.Name2 = "СП"
StudyManagerObj = Nothing
ActiveDocObj = Nothing
Set CWAddinCallBackObj = Nothing
Set COSMOSWORKSObj = Nothing

 

Но при запуске получаю следующее сообщение

 

Не определена переменная.PNG

По моему тут какая то путаница. Вы вставляете виртуальный компонент в сборку а про это в коде ни слова нет. 

И что бы отформатировал его под стандартный общепринятый вид - сначала переменные потом всё остальное. Так легче читать. И писал бы комментарий - голова не то место чтобы это хранить. 

По поводу ошибки - мне трудно судить но скорее всего он потерял объект т е не выполняет с ним действия или он не указан. 

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

В виртуальном компоненте есть острая необходимость.

Расскажите нам в чем идея ? Может мы возьмем Ваш прием на вооружение !

Я пока не разу не нуждался в нем.

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

Расскажите нам в чем идея ? Может мы возьмем Ваш прием на вооружение !

Я пока не разу не нуждался в нем.

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

Один минус- на него не сделать чертеж.

У меня есть решение для виртуальных компонентов чтобы к концу проектирования они всё были там где нужно. 

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

По моему тут какая то путаница. Вы вставляете виртуальный компонент в сборку а про это в коде ни слова нет. 

И что бы отформатировал его под стандартный общепринятый вид - сначала переменные потом всё остальное. Так легче читать. И писал бы комментарий - голова не то место чтобы это хранить. 

По поводу ошибки - мне трудно судить но скорее всего он потерял объект т е не выполняет с ним действия или он не указан. 

Я включаю запись макроса, вставляю компонент, переименовываю его. Останавливаю макрос.

Потом запускаю записанный макрос - деталь создается. но при переименовании выдается ошибка.

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim COSMOSWORKSObj As Object
Dim CWAddinCallBackObj As Object
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
Set COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

' Insert New Virtual Part
Dim swFaceOrPlane As Object
Dim swComponent As Component2
longstatus = Part.InsertNewVirtualPart(swFaceOrPlane, swComponent)
boolstatus = Part.Extension.SelectByID2("Деталь1^Сборка-1@Сборка", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

' Rename Virtual Component
Dim swSelMgr As SelectionMgr
Set swSelMgr = Part.SelectionManager
Dim swComp As Component2
Set swComp = swSelMgr.GetSelectedObject6(1, -1)
swComp.Name2 = "СП"
StudyManagerObj = Nothing
ActiveDocObj = Nothing
Set CWAddinCallBackObj = Nothing
Set COSMOSWORKSObj = Nothing
End Sub
 

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

Расскажите нам в чем идея ? Может мы возьмем Ваш прием на вооружение !

Я пока не разу не нуждался в нем.

Я в чертеже создаю стандартную спецификацию Солида. Затем сохраняю ее в эксель. В Экселе запускаю макрос, который создает СП по ГОСТ в Ворде. Однако, в основной надписи спецификации при этом не заполнены поля Обозначение, Наименование. Первичное применение, Формат чертежа, Код чертежа (СБ или МЧ), Разработал и пр и пр. 

Поэтому я создаю в каждой сборке виртуальную деталь и переписываю в нее все свойства сборки. Соответственно, она появляется в спецификации. В макросе Эксель из этой детали и заполняются все свойства основной надписи спецификации.

(в примере фамилии я убрал)

 

Далее, если у изделия я вставляю спецификацию, в которой включены только детали, то будет полный состав изделия, но только из деталей - сборок нет. А в моем случае будут добавлены и мои виртуальные детали и я вижу какие сборки в входят в изделие - т.е. я получаю полный состав изделия. И передаю этот файл, сохраненный в Эксель, на производство как Ведомость комплектации. Технологи довольны.

80.301215.065 Рама с форсунками верхняя.docx

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

Далее, если у изделия я вставляю спецификацию, в которой включены только детали, то будет полный состав изделия, но только из деталей - сборок нет. А в моем случае будут добавлены и мои виртуальные детали и я вижу какие сборки в входят в изделие - т.е. я получаю полный состав изделия. И передаю этот файл, сохраненный в Эксель, на производство как Ведомость комплектации. Технологи довольны.

Да.. Вы большой оригинал однако!

 

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

@VOleg Тезка, я почти доделал макрос для Вас, остался один вопрос. С какой вкладки из сборки (Настройки или Конфигурации) надо перенести свойства и на какую вкладку Вирт.детали?

Возможные варианты:

1) Настройка(сборка) -> Настройка(Вирт.деталь)

2) Настройка(сборка) -> Активная конфигурация(Вирт.деталь)

3) Активная конфигурация(сборка) -> Настройка(Вирт.деталь)

4) Активная конфигурация(сборка) -> Активная конфигурация(Вирт.деталь)

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

 

 

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

@VOleg Тезка, я почти доделал макрос для Вас, остался один вопрос. С какой вкладки из сборки (Настройки или Конфигурации) надо перенести свойства и на какую вкладку Вирт.детали?

Возможные варианты:

1) Настройка(сборка) -> Настройка(Вирт.деталь)

2) Настройка(сборка) -> Активная конфигурация(Вирт.деталь)

3) Активная конфигурация(сборка) -> Настройка(Вирт.деталь)

4) Активная конфигурация(сборка) -> Активная конфигурация(Вирт.деталь)

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

 

 

Олег, спасибо огромное. В приложении модель сборки и скрины. В виртуальной детали свойство "РазделВ" = 99

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

И, если не сложно, то в случае уже наличия виртуальной детали "СП" надо просто переписать свойства.

 

С вкладки Активная конфигурация.PNG

С вкладки Настройка.PNG

Сборка.SLDASM

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

@VOleg То есть надо перекинуть Настройка(сборка) -> Настройка(Вирт.деталь) и Активная конфигурация(сборка) -> Активная конфигурация(Вирт.деталь) я правильно понял? Открыть сборку не могу, т.к. у меня версия SW 2018.

36 минут назад, VOleg сказал:

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

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

 

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

@VOleg То есть надо перекинуть Настройка(сборка) -> Настройка(Вирт.деталь) и Активная конфигурация(сборка) -> Активная конфигурация(Вирт.деталь) я правильно понял? Открыть сборку не могу, т.к. у меня версия SW 2018.

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

 

Да

Сборка 2018 и шаблон виртуальной детали 2018

Сборка2018.SLDASM ДетальСП2018.prtdot

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

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

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

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

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

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

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

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

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

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

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




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