• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

sposta / copia

braunfish

Utente Standard
Professione: designer
Software: nessuno
Regione: bergamo
#1
mi piacerebbe poter spostare un componente di un certo valore sui 3 assi, ma credo non si possa.
L'alternativa potrebbe essere quella di utilizzare una matrice, ma poter poi "esploderla" e bloccare i componenti in posizione. E' possibile fare ciò?
 

pompeo79

Utente Standard
Professione: Digital Prototyping
Software: Inventor - Autocad - Showcase
Regione: Piemonte-Liguria
#2
mi piacerebbe poter spostare un componente di un certo valore sui 3 assi, ma credo non si possa.
L'alternativa potrebbe essere quella di utilizzare una matrice, ma poter poi "esploderla" e bloccare i componenti in posizione. E' possibile fare ciò?
Se ho capito puoi usare i normali vincoli impostando un max e un min di spostamento sul vincolo
 

braunfish

Utente Standard
Professione: designer
Software: nessuno
Regione: bergamo
#3
no. provo a spiegarmi meglio.

Supponiamo di avere un qualsiase pezzo di un assieme (una piastra per esempio) in una certa posizione.
Ne voglio inserire altre due uguali, in modo che siano allineate, una 20 cm più avanti e una 40 cm più indietro.
come faccio?
 

Peppe

Utente Standard
Professione: Impiegato
Software: inventor
Regione: Emilia Romagna
#4
Hai bisogno di una parte che contenga una lavorazione in serie (rettangolare) alla quale aggancerai la serie del particolare in assieme.
Mi provo a spiegare meglio: posizione una parte (scheletro), nella quale crei un 1° punto, poi crei uno schizzo 3D e trovi il tuo 2° punto, tiri una linea tra i 2 punti. Esci dallo schizzo e fai un serie rettangolare del 1° punto lunga la linea appena creata e come n° di entità dai 2 o quello che vuoi e come distanza dai Lunghezza curva. Esci e salvi. Per cui hai la tua parte scheletro con una lavorazione in serie alla quale aggancerai la serie della tua piastra nell'assieme.
Io farei così poi se qualcuno ha altre idee ben vengano.... :finger:
 

kikko

Utente Junior
Professione: Libero professionista
Software: Autodesk Inventor 11
Regione: Lombardia
#7
Fermo restando che se hai una piastra già inserita puoi andare con il cursore nel browser sul titolo della piastra, premere il tasato Ctrl e trascinare il cursore nello schermo, ottieni una copia della piastra. A questo punto puoi dare i vincoli di allineamento con le distanze desiderate.

Ho sbagliato capire la domanda?
 

braunfish

Utente Standard
Professione: designer
Software: nessuno
Regione: bergamo
#8
copiare e rivincolare è la soluzione canonica.

Poter spostare inserendo da tastiera dei valori (es. x +200, y -200, z +00) eviterebbe di dover rivincolare
 

arzigogolo

Utente Standard
Professione: Disegnatore
Software: INVENTOR PRO 2015, Pro/e w 5.0, Solidworks 2012
Regione: LOMBARDIA
#9
copiare e rivincolare è la soluzione canonica.

Poter spostare inserendo da tastiera dei valori (es. x +200, y -200, z +00) eviterebbe di dover rivincolare
Fai DUE serie in ambiente assieme della tua piastra, la prima serie con il valore 20 cm con spostamento positivo e la seconda di 40 cm con spostamento negativo (metti il segno "-" davanti al valore 40 nella finestra di dialogo "serie").

Naturalmente selezionerai la medesima piastra per ottenere le due serie.

Ciao.
 

Tarkus

Utente Senior
Professione: Progettista,Disegnatore
Software: Autocad Mechanical,Inventor 2017,HyperMill2012
Regione: Toscana
#10
Ma vincolare normalmente rispetto ai tre piani ( o ad altri punti di riferimento),
dando come valore dei parametri utente che poi ti vai a variare a piacimento dalla tabella parametri?
Mi sembra molto veloce.
O forse non ho capito cosa vuoi fare?:confused:
 

braunfish

Utente Standard
Professione: designer
Software: nessuno
Regione: bergamo
#11
vicolare va bene, solo che è più lento mettere ogni volta tre vincoli che fare uno sposta/copia come in altri software.
Se devo copiare un pezzo 25 volte spostandomi supponiamo solo in X ma sempre di valori diversi (tipo 100, 120, 80, 75, 45, 120, ec...) e devo rivincolare, devo mettere 25x3=75 vincoli!
 

arzigogolo

Utente Standard
Professione: Disegnatore
Software: INVENTOR PRO 2015, Pro/e w 5.0, Solidworks 2012
Regione: LOMBARDIA
#12
vicolare va bene, solo che è più lento mettere ogni volta tre vincoli che fare uno sposta/copia come in altri software.
Se devo copiare un pezzo 25 volte spostandomi supponiamo solo in X ma sempre di valori diversi (tipo 100, 120, 80, 75, 45, 120, ec...) e devo rivincolare, devo mettere 25x3=75 vincoli!
Giusto! Allora, all'uopo, usi il comando "serie" e copi l'oggetto in X per tutti i valori che vuoi, es: fai la prima serie con valore 100 selezionando il componente originale. Poi fai la seconda serie, questa volta selezionando il componente serializzato/copiato e gli dai come valore 120 e così via, avendo l'accortezza di selezionare per ogni nuova serie, l'ultimo componente selezionato della serie precedente.

Prova così, dovresti riuscire.
 

arzigogolo

Utente Standard
Professione: Disegnatore
Software: INVENTOR PRO 2015, Pro/e w 5.0, Solidworks 2012
Regione: LOMBARDIA
#14
arzigogolo, ma tu hai provato a fare come dici ? funziona ?
Certo funziona, ma hai ragione anche tu perchè mi sono dimenticato di elencare un passaggio importante e cioè: prima di selezionare l'ultimo elemento della serie, devi andare nel browser e cliccare col tasto DX sull'ultimo elemento, poi dal menu contestuale selezionare "indipendente".

Così facendo quando lo vai a selezionare per creare un'altra serie, ti seleziona solo l'ultimo e non anche l'elemento originario che altrimenti, non rendendolo indipendente, verrebbe selezionato anch'esso perchè il comando non lo riconosce come singolo, ma come facente parte della serie e pertanto selezionato a prescindere.

Io ho provato e funziona. Se poi vuoi renderlo nuovamente "dipendente", non fai altro che cliccare col tasto DX e togliere la spunta a "indipendente".

Aspetta però... ho provato a trascinare col mouse i componenti serializzati e si spostano, per cui non va bene per quello che vuoi fare tu.
L'unica strada secondo me, è creare tutte le serie che ti servono fregandotene se ti seleziona anche i componenti precedenti e andare poi a sopprimere le istanze che non ti interessano nel browser col tasto DX del mouse.
Così facendo, tutte le copie o istanze sono bloccate nella loro posizione. Poi se esiste un'altra strada non saprei. Io farei così.
 

MauroM

Utente Standard
Professione: mah!
Software: Inv + SW(purtroppo)
Regione: .
#15
rendendolo indipendente però perdi tutti i vincoli e te lo ritrovi "fluttuante", basta un niente e si sposta, mi sembra una soluzione poco pratica.
 

arzigogolo

Utente Standard
Professione: Disegnatore
Software: INVENTOR PRO 2015, Pro/e w 5.0, Solidworks 2012
Regione: LOMBARDIA
#16
rendendolo indipendente però perdi tutti i vincoli e te lo ritrovi "fluttuante", basta un niente e si sposta, mi sembra una soluzione poco pratica.
Infatti me ne sono accorto e ho aggiunto una possibile soluzione nel mio post precedente pochi minuti fa. Prova a controllare se è apparsa, nel caso la riposto.
 

Tarkus

Utente Senior
Professione: Progettista,Disegnatore
Software: Autocad Mechanical,Inventor 2017,HyperMill2012
Regione: Toscana
#17
rendendolo indipendente però perdi tutti i vincoli e te lo ritrovi "fluttuante", basta un niente e si sposta, mi sembra una soluzione poco pratica.
Infatti me ne sono accorto e ho aggiunto una possibile soluzione nel mio post precedente pochi minuti fa. Prova a controllare se è apparsa, nel caso la riposto.
L'idea di arzigogolo e' buona.:smile:
Per ovviare alla perdita di vincolo, si puo' mettere la spunta "fissato" al primo elemento, viene messa in automatico anche agli altri elementi.
Va detto che va bene solo se poi non devi muovere tutta la/le serie.
Piuttosto un difetto:
Viene fatta una serie sempre dell'ultimo elemento, non del primo.
Cosi' se sposti l'elemento, che so', della serie n° 3 ti si spostano a cascata anche gli elementi creati con serie successsive.
Certo, se i bravi sviluppatori di Inventor pensassero a risolvere piccoli problemi come una "serie a distanze diverse" piuttosto che renderci felici con la visualizzazione tipo filigrana....:36_1_10:
 

arzigogolo

Utente Standard
Professione: Disegnatore
Software: INVENTOR PRO 2015, Pro/e w 5.0, Solidworks 2012
Regione: LOMBARDIA
#18
L'idea di arzigogolo e' buona.:smile:
Per ovviare alla perdita di vincolo, si puo' mettere la spunta "fissato" al primo elemento, viene messa in automatico anche agli altri elementi.
Va detto che va bene solo se poi non devi muovere tutta la/le serie.
Piuttosto un difetto:
Viene fatta una serie sempre dell'ultimo elemento, non del primo.
Cosi' se sposti l'elemento, che so', della serie n° 3 ti si spostano a cascata anche gli elementi creati con serie successsive.
Certo, se i bravi sviluppatori di Inventor pensassero a risolvere piccoli problemi come una "serie a distanze diverse" piuttosto che renderci felici con la visualizzazione tipo filigrana....
ahahah.. vero!:4425:
Certo, non è proprio una bella soluzione quella che ho proposto, non piace neanche a me perchè tocca a star lì a sopprimere tutte le istanze che non interessano ed è barboso cercarle nell'albero del browser.

Ma come dici giustamente tu, non potevano fare in modo che si potesse selezionare solo un componente della serie senza doverli slezionare tutti per forza?
E dire che siamo arrivati alla versione 2012, ma cosa aspettano ad inserire queste piccole migliorie che poi tanto piccole non sono e che semplificano non poco la vita di noi disegnatori? La versione 2020? Solidworks per esempio, se selezioni l'ultimo componente della serie per crearne un'altra, ti seleziona solo quello e non il componente originale con le eventuali instanze. In questo senso è fatto meglio.
Io non so veramente cosa aspettino... che ci venga la barba bianca?:36_1_28:
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#19
Questa macro, da copiare nel VBA Default.ivb (Progetto APPLICAZIONE) dovrebbe fare quanto richiesto ovvero:
- Selezioni qualcosa nell'assieme;
- Ne fa una copia e la sovrappone all'elemento selezionato;
- Crea i vincoli tra i piani origine degli elementi;
- Chiede il delta da applicare (il valore da piazzare nel vincolo)

Ho fatto dei test veloci, mi pare funzioni.
Provate e ditemi.

Public Sub MoveOccurrence()
' Set a reference to the assembly
Dim oAssy As AssemblyDocument
Set oAssy = ThisApplication.ActiveEditObject

' Set a reference to the assembly component definintion.
Dim oAsmCompDef As AssemblyComponentDefinition
Set oAsmCompDef = oAssy.ComponentDefinition

' Get an occurrence from the select set.
On Error Resume Next
Dim oOcc As ComponentOccurrence
Dim oOccCpy As ComponentOccurrence

Set oOcc = ThisApplication.CommandManager.pick(kAssemblyOccurrenceFilter, "Scegli un elemento")

' Get the current transformation matrix from the occurrence.
Dim oTransform As Matrix
Set oTransform = oOcc.Transformation

Dim oMove As Matrix
Dim oOrig As Matrix
Set oOrig = oOcc.Transformation

Set oOccCpy = oAsmCompDef.Occurrences.AddByComponentDefinition(oOcc.Definition, oOcc.Transformation)

Call AlignOccurrencesWithConstraints(oAssy, oOcc, oOccCpy)
End Sub


Public Sub AlignOccurrencesWithConstraints(oAssy As AssemblyDocument, oOcc1 As ComponentOccurrence, oOcc2 As ComponentOccurrence)

Dim BaseXY As WorkPlane
Dim BaseYZ As WorkPlane
Dim BaseXZ As WorkPlane
Call GetPlanes(oOcc1, BaseXY, BaseYZ, BaseXZ)

Dim constraints As AssemblyConstraints
Set constraints = oAssy.ComponentDefinition.constraints

' Move it to the base occurrence so that if the base is
' not fully constrained it shouldn't move when the flush
' constraints are added.
oOcc2.Transformation = oOcc1.Transformation

' Get the planes from the occurrence
Dim occPlaneXY As WorkPlane
Dim occPlaneYZ As WorkPlane
Dim occPlaneXZ As WorkPlane
Call GetPlanes(oOcc2, occPlaneXY, occPlaneYZ, occPlaneXZ)

' Add the flush constraints.
Call constraints.AddFlushConstraint(BaseXY, occPlaneXY, InputBox("Delta X =", 0))
Call constraints.AddFlushConstraint(BaseYZ, occPlaneYZ, InputBox("Delta Y =", 0))
Call constraints.AddFlushConstraint(BaseXZ, occPlaneXZ, InputBox("Delta Z =", 0))

End Sub

' Utility function used by the AlignOccurrencesWithConstraints macro.
' Given an occurrence it returns the base work planes that are in
' the part or assembly the occurrence references. It gets the
' proxies for the planes since it needs the work planes in the
' context of the assembly and not in the part or assembly document
' where they actually exist.
Private Sub GetPlanes(ByVal Occurrence As ComponentOccurrence, _
ByRef BaseXY As WorkPlane, _
ByRef BaseYZ As WorkPlane, _
ByRef BaseXZ As WorkPlane)
' Get the work planes from the definition of the occurrence.
' These will be in the context of the part or subassembly, not
' the top-level assembly, which is what we need to return.
Set BaseXY = Occurrence.Definition.WorkPlanes.Item(3)
Set BaseYZ = Occurrence.Definition.WorkPlanes.Item(1)
Set BaseXZ = Occurrence.Definition.WorkPlanes.Item(2)

' Create proxies for these planes. This will act as the work
' plane in the context of the top-level assembly.
Call Occurrence.CreateGeometryProxy(BaseXY, BaseXY)
Call Occurrence.CreateGeometryProxy(BaseYZ, BaseYZ)
Call Occurrence.CreateGeometryProxy(BaseXZ, BaseXZ)
End Sub
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#20
Per aiutare chi non sa come e dove copiare:
- ALT-F11 per accedere alla chermata VBA (Visual Basic for Application)
- Come vedrete in alto a SX c'e un pannello, espandete Progetto Applicazione (NON progetto documento) la sottocartella Modules
- Dovrebbe esserci già Modulo1 (potete inserirne o importarne altri come si vede nel menù in figura allegata)
- Doppio click su Modulo1 e fate un Copia e Incolla della macro postata. Se tutto va bene il codice sarà nero ed i commenti verdi, le righe rosse hanno problemi (tipo copiato male)
- Personalizzate i comandi utente pe avere un pulsante che attiva la macro.

Ciao a tutti!
 

Allegati