3olo
Guest
Salve,
sbuffando e a fatica sojno riuscito a crearmi una macro in inventor i per la generazione automatica dei membri di una ipart e la relativa conversiojne in forma step. la uso con soddisfazione da un po’ e fa tutto da sola. nello specifico:
- Genera tutti i membri di un ipart;
-li conheceu tutti em un assieme pilota e lo salva;
-ltutti tali files vengono esportati in step e messi in una cartella .
estrondo finora: però ho l’esigenza di creare migliaia di membri , tenere per me l’ipart e fornire solamente i membri ,però il problema è che ovviamente una volta aperti non trovano il collegamento con l’ipart(non essendoci) e danno un messaggio di errore a cui si deve dare ignora. cio’ è molto fastidioso.
vorrei quindi edite la macro in che modo ogni membro dell’ipart venga scollegato dall’ipart ,in modo da non aver più messaggi.
cercando nella guida di inventor api ho trovato una funzione che forse fa al caso mio:
ipartmember.breaklink parafactory()
descrição
método que quebra o link para a fábrica pai e converte o membro ipart para uma parte derivada.
dovrebbe essere quest ache mi servir.
però essendo un po’ limitato io con vba non sono in grado di inseridola nella mia macro in modo che funzioni.
c’è qualche buon anima che mi può aiutare? se non riuscite a modificare la macro mi basterebbe averne una nuova in cui magari si scolleghino tutti i componenti inseriti in un assieme.
vi prega aiutatemi che non so più dove sbattere la testa. vi ringrazio tanto em antecipação
público sub addipartoccurrence()
' abrir o documento de fábrica invisível.
dim ofactorydoc como documento de parte
set ofactorydoc = thisapplication.documents.open("c:\disegni inventor\prova ipart1.ipt", false)
'defina uma referência à definição do componente.
dim ocompdef como partecomponentedefinição
set ocompdef = ofactorydoc.componentdefinição
Certifica-te que temos uma fábrica ipart.
se ocompdef.isipartfactory = false então
msgbox "documento escolhido não é uma fábrica.", vbexclamation
saída sub
terminar se
Definir uma referência à fábrica.
dim oipartfactory como ipartfactory
set oipartfactory = ocompdef.ipartfactory
Arranja o número de linhas na fábrica.
dim inumrows como inteiro
inumrows = oipartfactory.tablerows.count
' criar um novo documento de montagem
dim odoc como documento de montagem
set odoc = thisapplication.documents.add (kassemblydocumentobject, , true)
dim ooccs como componenteocorrências
set ooccs = odoc.componentdefinition.occurrences
dim opos como matriz
set opos = thisapplication.transientgeometry.creatematrix
dim ostep as double
ostep = 0#
dim irow como longo
' Adicione uma ocorrência para cada membro na fábrica.
para irow = 1 para inumrows
ostep = ostep + 10
' adicione uma tradução ao longo do eixo x
opos.settranslation thisapplication.transientgeometry.createvector(ostep, ostep, 0)
dim oocc como componente
set oocc = ooccs.addipartmember("c:\disegni inventor\prova ipart1.ipt", opos, irow)
Próximo
'odoc.save
call odoc.saveas("c:\disegni inventor\assiemecancella.iam", true)
dim orefdoc como documento
para cada orefdoc em documentos odoc.referenced
ipartmember.breaklinktofactory (orefdoc)
call exporttostep (orefdoc)
Próximo
end sub
sub exporttostep público (odoc como documento)
dim exportpath como string
exportpath = "c:\disegni inventor\stpcanc\"
Arranja o complemento de tradutores.
dim osteptranslator como tradutoraddin
set osteptranslator = thisapplication.applicationaddins.itembyid("{90af7f40-0c01-11d5-8e83-0010b541cd80}")
se osteptranslator não é nada então
msgbox "não poderia acessar tradutor passo".
saída sub
terminar se
dim ocontexto como traduçãocontexto
set ocontext = thisapplication.transientobjects.createtranslationcontext
dim ooptions as namevaluemap
set ooptions = thisapplication.transientobjects.createnamevaluemap
se osteptranslator.hassavecopyasoptions(thisapplication.activedocument, ocontext, ooptions) então
Definir protocolo de aplicação.
2 = ap 203 - design controlado por configuração
3 = ap 214 - projeto automotivo
ooptions.value("applicationprotocoltype") = 3
Outras opções...
"ooptions.value("author") = "
"ooptions.value("authorization") = ""
'ooptions.value("description") = "
ooptions.value("organization") = "-"
ocontext.type = kfilebrowseiomecanismo
dim odata as datamedium
set odata = thisapplication.transientobjects.createdatamedium
Nome do arquivo de formato
dim fnamepos longo
'postion of last back slash
fnamepos = instrrev(odoc.fullfilename, "\", -1)
dim docfname como string
Nome do arquivo com extensão
docfname = strings.right(odoc.fullfilename, len(odoc.fullfilename) - fname)
Nome do arquivo sem extensão
dim shortname como string
shortname = strings.left(docfname, len(docfname) - 4)
odata.filename = exportpath & shortname & ".stp"
call osteptranslator.savecopyas(odoc, ocontext, ooptions, odata)
terminar se
end sub
sbuffando e a fatica sojno riuscito a crearmi una macro in inventor i per la generazione automatica dei membri di una ipart e la relativa conversiojne in forma step. la uso con soddisfazione da un po’ e fa tutto da sola. nello specifico:
- Genera tutti i membri di un ipart;
-li conheceu tutti em un assieme pilota e lo salva;
-ltutti tali files vengono esportati in step e messi in una cartella .
estrondo finora: però ho l’esigenza di creare migliaia di membri , tenere per me l’ipart e fornire solamente i membri ,però il problema è che ovviamente una volta aperti non trovano il collegamento con l’ipart(non essendoci) e danno un messaggio di errore a cui si deve dare ignora. cio’ è molto fastidioso.
vorrei quindi edite la macro in che modo ogni membro dell’ipart venga scollegato dall’ipart ,in modo da non aver più messaggi.
cercando nella guida di inventor api ho trovato una funzione che forse fa al caso mio:
ipartmember.breaklink parafactory()
descrição
método que quebra o link para a fábrica pai e converte o membro ipart para uma parte derivada.
dovrebbe essere quest ache mi servir.
però essendo un po’ limitato io con vba non sono in grado di inseridola nella mia macro in modo che funzioni.
c’è qualche buon anima che mi può aiutare? se non riuscite a modificare la macro mi basterebbe averne una nuova in cui magari si scolleghino tutti i componenti inseriti in un assieme.
vi prega aiutatemi che non so più dove sbattere la testa. vi ringrazio tanto em antecipação
público sub addipartoccurrence()
' abrir o documento de fábrica invisível.
dim ofactorydoc como documento de parte
set ofactorydoc = thisapplication.documents.open("c:\disegni inventor\prova ipart1.ipt", false)
'defina uma referência à definição do componente.
dim ocompdef como partecomponentedefinição
set ocompdef = ofactorydoc.componentdefinição
Certifica-te que temos uma fábrica ipart.
se ocompdef.isipartfactory = false então
msgbox "documento escolhido não é uma fábrica.", vbexclamation
saída sub
terminar se
Definir uma referência à fábrica.
dim oipartfactory como ipartfactory
set oipartfactory = ocompdef.ipartfactory
Arranja o número de linhas na fábrica.
dim inumrows como inteiro
inumrows = oipartfactory.tablerows.count
' criar um novo documento de montagem
dim odoc como documento de montagem
set odoc = thisapplication.documents.add (kassemblydocumentobject, , true)
dim ooccs como componenteocorrências
set ooccs = odoc.componentdefinition.occurrences
dim opos como matriz
set opos = thisapplication.transientgeometry.creatematrix
dim ostep as double
ostep = 0#
dim irow como longo
' Adicione uma ocorrência para cada membro na fábrica.
para irow = 1 para inumrows
ostep = ostep + 10
' adicione uma tradução ao longo do eixo x
opos.settranslation thisapplication.transientgeometry.createvector(ostep, ostep, 0)
dim oocc como componente
set oocc = ooccs.addipartmember("c:\disegni inventor\prova ipart1.ipt", opos, irow)
Próximo
'odoc.save
call odoc.saveas("c:\disegni inventor\assiemecancella.iam", true)
dim orefdoc como documento
para cada orefdoc em documentos odoc.referenced
ipartmember.breaklinktofactory (orefdoc)
call exporttostep (orefdoc)
Próximo
end sub
sub exporttostep público (odoc como documento)
dim exportpath como string
exportpath = "c:\disegni inventor\stpcanc\"
Arranja o complemento de tradutores.
dim osteptranslator como tradutoraddin
set osteptranslator = thisapplication.applicationaddins.itembyid("{90af7f40-0c01-11d5-8e83-0010b541cd80}")
se osteptranslator não é nada então
msgbox "não poderia acessar tradutor passo".
saída sub
terminar se
dim ocontexto como traduçãocontexto
set ocontext = thisapplication.transientobjects.createtranslationcontext
dim ooptions as namevaluemap
set ooptions = thisapplication.transientobjects.createnamevaluemap
se osteptranslator.hassavecopyasoptions(thisapplication.activedocument, ocontext, ooptions) então
Definir protocolo de aplicação.
2 = ap 203 - design controlado por configuração
3 = ap 214 - projeto automotivo
ooptions.value("applicationprotocoltype") = 3
Outras opções...
"ooptions.value("author") = "
"ooptions.value("authorization") = ""
'ooptions.value("description") = "
ooptions.value("organization") = "-"
ocontext.type = kfilebrowseiomecanismo
dim odata as datamedium
set odata = thisapplication.transientobjects.createdatamedium
Nome do arquivo de formato
dim fnamepos longo
'postion of last back slash
fnamepos = instrrev(odoc.fullfilename, "\", -1)
dim docfname como string
Nome do arquivo com extensão
docfname = strings.right(odoc.fullfilename, len(odoc.fullfilename) - fname)
Nome do arquivo sem extensão
dim shortname como string
shortname = strings.left(docfname, len(docfname) - 4)
odata.filename = exportpath & shortname & ".stp"
call osteptranslator.savecopyas(odoc, ocontext, ooptions, odata)
terminar se
end sub