• Este fórum é a tradução automática de www.cad3d.it/forum1 - a comunidade italiana de design. Vários termos não foram traduzidos corretamente.

desconectar membros ipart automaticamente, macro

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
 
Acho que isto funciona. .
Código:
dim opart como documento de parte
para cada opart em documentos odoc.referenced
opart.componentdefinition.ipartmember.breaklinkparafactory
Próximo
 
Muito obrigado, onde o leva? antes do fim?
Eu diria antes:
dim orefdoc como documento
para cada orefdoc em documentos odoc.referenced
imemberpart.breaklinktofactory (orefdoc)
call exporttostep (orefdoc)

Próximo

do qual ele elimina
imemberpart.breaklinktofactory (orefdoc)

fazer testes em algo não vital, de qualquer forma, dos testes (just e rápido) que eu fiz a operação parece o necessário, mas eu não aprofundei o que acontece aos iparts com conexão quebrada..
 
Muito gentil! Tento avisar-te! e se você quiser fazer uma macro com este código que me abre um conjunto com dentro dos membros do ipart e me desconecta? Podias lançar um rascunho rápido? assim bypassamdo a geração de peças e passo de exportação.
 
Eu tentei e trabalhei em alguns iparts, em outros não, no sentido de que interrompe os links, mas então para fazer mudanças reais eu deveria salvar o axieme piloto criado (e todos os seus componentes, naturalmente) no entanto, quando eu tento salvar todos os crashes do inventor, provavelmente para o grande número de componentes a ser salvo.
Eu pensei então para adicionar a função "save2" que está no inventor abelhas guia relativa ao resgate das assembléias e componentes relacionados, mas eu não entendo como escrevê-lo, você pode me ajudar?
Tentei.
odoc.save2(verdadeiro, ) mas nada
call odoc.save2(true,) nada mesmo com isso
odoc.save2(true,0) nada

Podes ajudar-me? Eu inseriria entre o breaklink e a exportação dos componentes, eu acho que é correto colocá-lo lá, mas dizer-me você
 
Eu não tenho muito tempo neste momento, se você tem paciência, eu tento dar um olho. Eu não acho que as falhas são devido à quantidade de componentes: o inventor seria jogado nesse caso. Mas não sei o que acontece com os iparts desconectados, uso os poucos iparts e não faço ideia de como se comportam... Tens de estudar nisso.
 
Desculpe interromper, obrigado pela sua paciência!
quando você tem tempo se você quiser dar uma olhada
 

Estatísticas do fórum

Tópicos
58,521
Mensagens
499,056
Membros
104,110
Último membro
ChristianR

Membros online

Nenhum membro online agora.
Voltar
Topo