Como criar uma macro no SolidWorks | Celso Torres
Вставка
- Опубліковано 15 жов 2024
- Neste exemplo de macro, você aprende como criar uma macro do Zero no SolidWorks, usando componentes do VBA.
Crie uma caixa de diálogo para editar as dimensões do modelo 3D. Entenda os códigos criados na gravação e crie seus projetos usando a API do SolidWorks.
Baixe o arquivo em www.ccpro.com.br, na seção de downloads.
Ótima aula Celso! Obrigada por compartilhar seu conhecimento!
Cinthya Yasuda Obrigado!
Show de bola, vou tentar fazer la na empresa pra padronizar com os demais programas de edição
Valeu Caio, se tiver alguma dúvida, é só falar. Abraços
Mestre Celso, Boa tarde. Gostei muito da sua aula sobre criação de macros no SolidWorks. Poderia me informar onde consigo tutoriais ou documentação dos objetos VBA do solidWorks?
Ola amigo, é possível criar uma macro para fazer qualquer tipo de rosca, exemplo, clicar no diâmetro da peça e clicar no botão e dizer pra fazer uma roca de 1/4 e etc..
Po Celso, obrigado. mas na hora de inserir o label ta dando erro no meu. O site virou site de canabis.
O Vídeo ficou muito bom e fácil de aprender. Gostaria de saber se posso utilizar a MACRO em qualquer coisa dentro do solidwokrs e se possível criar MACRO para fazer um projeto completo ?
Giovanne Cicolella olá, com certeza é possível. É um pouco mais complexo...
Ola Celso, primeiramente muito obrigado por disponibilizar seu conhecimento a comunidade... Amigo eu preciso de uma API para salvar o BOM e ate mesmo outras informacoes de um desenho ou de um conjunto de desenhos do projeto como um todo e disponibilizar isso num TXT, CSV, Excel, enfim.. para pode integrar com o nosso ERP... O amigo tem algo pra isso ???
amigo, como eu quebro o vinculo da macro com esta peça, a minha macro só roda nessa peça, mas quero usar em outras.
muito bom, não sabia que dava pra fazer isso
Excelente explicação nos videos, parabéns. Gostaria de saber como fazer para buscar valores em uma planilha do excel através de combobox ou listbox e inserir o valor selecionado nas propriedades do desenho. Fico no aguardo.
Vou ver um exemplo...e publico aqui.. Abraço.
Celso Torres CCPro , obrigado. Ficarei no aguardo. Vlw
Celso, gostei muito do video, porem tenho uma duvida, tenho uma biblioteca de itens comerciais gerenciada por excel e presciso alterar um campo em todos os arquivos, gostaria de fazer uma macroé possivel? Estou tentando mas quando vou dando F8 chegando no passo de abrir a tabela, a tabela abre e para.
Ola Celso, fiz uma macro no solidworks, igual a que ensinou, mas como faço para que seja salva na mesma pasta do projeto? e quando tentei colocar a mesma macro para outras pessoas utilizarem, não funciona em outros computadores, sabe dizer o poruqe?
Olá Rodrigo. Para outras pessoas usarem a macro que você criou, verifica se algum caminho tem o nome do seu computador, pode ser isso. Com relação a salvar, você assim:
Claro, precisa editar alguns parâmetros abaixo... Blz.
Sub salvarDWG()
Set swApp = _
Application.SldWorks
Set Part = swApp.ActiveDoc
nomeArquivo = Part.GetTitle
nomeArquivo = Left(Part.GetTitle, Len(Part.GetTitle) - 7)
On Error GoTo CaminhoErrado
If chk_salvaro_outro_caminho.Value = True Then
Path = txt_N_Path.Text & "\"
Else
Path = txtpath.Text
End If
If Path = "" Then
GoTo CaminhoErrado
End If
Part.ViewZoomtofit2
longstatus = Part.SaveAs3(Path & nomeArquivo & ".dwg", 0, 0)
SalvouArquivo = True
Exit Sub
CaminhoErrado:
MsgBox mensagemErroAoSalvar, vbOKOnly + vbExclamation, "KINGS CAD"
SalvouArquivo = False
End Sub
@@CelsoTorresCCPro
Ola Celso, fiz o que disse, mas não cria nada na pasta...
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim filename As String
Private Sub CommandButton1_Click()
End Sub
Private Sub cmdsave_Click()
If chkstl.Value = True Then
Call SaveSTL
End If
If chkx_t.Value = True Then
Call SaveX_T
End If
If chkigs.Value = True Then
Call SaveIGS
End If
If chkstep.Value = True Then
Call SaveSTEP
End If
MsgBox "Sucess", vbOKOnly
End Sub
Sub SaveSTL()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
filename = Part.GetTitle
filename = Left(Part.GetTitle, Len(Part.GetTitle) - 7)
On Error GoTo WrongFolder
If chk_save_other_folder.Value = True Then
Path = txt_N_Path.Text & "\"
Else
Path = txtpath.Text
End If
If Path = "" Then
GoTo WrongFolder
End If
' Save As
longstatus = Part.SaveAs3(Path & filename & ".STL", 0, 0)
SaveFile = True
Exit Sub
WrongFolder:
MsgBox mensagemErroAoSalvar, vbOKOnly + vbExclamation, "Error"
SaveFile = False
End Sub
Sub SaveX_T()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
filename = Part.GetTitle
filename = Left(Part.GetTitle, Len(Part.GetTitle) - 7)
On Error GoTo WrongFolder
If chk_save_other_folder.Value = True Then
Path = txt_N_Path.Text & "\"
Else
Path = txtpath.Text
End If
If Path = "" Then
GoTo WrongFolder
End If
' Save As
longstatus = Part.SaveAs3(Path & filename & ".X_T", 0, 0)
SaveFile = True
Exit Sub
WrongFolder:
MsgBox mensagemErroAoSalvar, vbOKOnly + vbExclamation, "Error"
SaveFile = False
End Sub
fiz isso em todos, mas nenhum funciona... =( , diz que pode me ajudar !!
@@CelsoTorresCCPro
com relação ao nome o unico lugar que encontro referencia ao meu computador é isso...
' ******************************************************************************
' C:\Users
cardelle\AppData\Local\Temp\swx16060\Macro1.swb - macro recorded on 06/16/21 by rcardelle
' ******************************************************************************
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
frm3Dfiles.Show
End Sub
teria que mudar esse local?? colocaria o que?
@@Rodrigo-jk1ku Rodei teu código, o que falta é pegar o caminho do arquivo.
@@Rodrigo-jk1ku
se for uma peça, usa este código para pegar o caminho do arquivo.
Sub thisPart()
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDocExt As SldWorks.ModelDocExtension
Dim swDraw As SldWorks.DrawingDoc
Dim folha As String
Dim Path As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDocExt = swModel.Extension
Path = swModel.GetPathName
Path = Left(Path, Len(Path) - 7)
nomeArquivo = swModel.GetTitle
nomeArquivo = Left(nomeArquivo, Len(nomeArquivo) - 7)
Y = Len(nomeArquivo)
Path = Left(Path, Len(Path) - Y)
txtpath.Text = ""
txtpath.Text = Path
End SubSub thisPart()
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDocExt As SldWorks.ModelDocExtension
Dim swDraw As SldWorks.DrawingDoc
Dim folha As String
Dim Path As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDocExt = swModel.Extension
Path = swModel.GetPathName
Path = Left(Path, Len(Path) - 7)
nomeArquivo = swModel.GetTitle
nomeArquivo = Left(nomeArquivo, Len(nomeArquivo) - 7)
Y = Len(nomeArquivo)
Path = Left(Path, Len(Path) - Y)
txtpath.Text = ""
txtpath.Text = Path
End Sub
Quando tento executar , aparece a mensagem :"erro em tempo de execução 91,a variável do objeto ou a variável do bloco 'with' não foi definida" , o que eu devo fazer ? Parabéns pelos vídeos
+Leonardo Schneider Olá Leonardo, obrigado. Bom, você tem duas opções que podem lhe ajudar. A primeira, vai no editor do Visual Basic, clica no menu Depurar, depois compilar, nessa primeira parte verifica a sintaxe.
A segunda e melhor é ir debugando passo a passo. Se você já fez todo o código, vai no botão, clica duas vezes nele e pressiona F8, que passará linha a linha. Desta forma, quando ocorrer o erro, você saberá onde está.
Geralmente este erro está relacionado a uma palavra Set que falta.
Tenta aí, se não der certo me avisa. Abraço.
Celso Torres CCPro Continua dando este erro, na verdade eu alterei algumas coisas no vba para a minha necessidade, mas está apontando o erro em uma linha "myDimension.SystemValue = com", sendo que antes dela já esta com o Set que você comentou, muito obrigado pela ajuda
+Leonardo Schneider Me manda o código por e-mail, assim consigo lhe ajudar melhor.
celso.torres@ccpro.com.br, Ok, te aguardo.
Ola celso, gostaria de fazer uma macro para trocar o template ( formato da folha no 2d) como faço
Ótimo aula de Macro!
Celso, ao criar o macro não ficou parecido com seu! Não aparece algumas linhas de comando! Coloquei ( ? ) para destacar. Fico no aguardo da solução!
Sub main()
Set swApp = _
Application.SldWorks
Set Part = swApp.ActiveDoc
?
boolstatus = Part.Extension.SelectByID2("Altura@Esboço1@Peça teste macro.SLDPRT", "DIMENSION", -2.59941899567743E-02, 3.09895654907732E-02, 1.07858140104875E-02, False, 0, Nothing, 0)
?
?
?
boolstatus = Part.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("Comprimento@Esboço1@Peça teste macro.SLDPRT", "DIMENSION", 3.41286417621077E-02, -1.22151849626765E-02, 8.41248494951091E-03, False, 0, Nothing, 0)
?
?
boolstatus = Part.EditRebuild3()
boolstatus = Part.Extension.SelectByID2("Espessura@Ressalto-extrusão1@Peça teste macro.SLDPRT", "DIMENSION", 9.43515825643405E-02, -0.013148407572471, -2.27323224555607E-02, False, 0, Nothing, 0)
?
?
boolstatus = Part.EditRebuild3()
End Sub
+Alexandre Cardoso Olá tudo bem?. Então a gravação da macro pode ser um pouco diferente, por exemplo, eu dei zoom, ele grava isso, se você não deu Zoom, não deve ter gravado. Mas o que você fez está correto, basta editar conforme o vídeo, você vai conseguirá criar a caixa de entrada de dimensão. Esse código que o SolidWorks grava é bem específico. Abraços.
+Celso Torres CCPro bom dia, espero que esteja tudo bem!
Primeiro eu assisti esse vídeo seu: "Como criar macro para exportar dimensões para o Excel no SolidWorks". E nele você criou uma tabela do Excel junto com a peça. Fiz isso e deu certo!
Mas, agradeço pela atenção com meu problema. Um forte abraço!
Celso, no solidworks versão 2019 e 2020 é totalmente diferente....
Olá, como usa VBA7, é muito similar nas versões mais novas do SolidWorks
QUANDO VOU INSERIR O FORMULÁRIO NÃO INSERE NADA!O QUE SERÁ?
+Eddy cruz batista Olá, se você for no Excel, consegue inserir um Userform? Abra o Excel e pressione Alt+F11, clique no nome do projeto e com o botão direito, inserir userform. Se o userform aparecer no Excel, o problema pode estar na instalação do SolidWorks. Me dê um retorno, vamos resolver esse problema.
Que versão você usa do SolidWorks?
+Celso Torres CCPro
OBRIGADO PELA ME RESPONDER.
+Eddy cruz batista Apareceu o userform?
muito interessante, a literatura para vba em SolidWorks é bem escassa.
Vinicius Soares Nascimento é sim, Vinícius. em português é raro mesmo. Estou montando um curso de API. em breve estará pronto. Com API, se explora muito mais do SolidWorks. um abraço.
Celso,
Boa noite!
Teria como disponibilizar esse arquivo do Solid que foi feito o macro?
email: viniciussampaio@ucl.br
Desde já agradeço!
Olá Vinicius... tá lá no meu site... www.ccpro.com.br