Macro raccogli quote

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Dovrebbe essere semplice perchè nel metodo "ISetValue3 Method (IDimension)" imposti la configurazione per il cambio di valore della quota

Ritornando qui, come si usa di preciso ISetValue3 ?
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Buon giorno,
ho notato un problema.
Riesco a sospendere un oggetto "Feature" con un
swfeat.SetSuppression (swComponentSuppressionState_e.swComponentSuppressed)

Ma alla sua riattivazione,
swfeat.SetSuppression (swComponentSuppressionState_e.swComponentFullyResolved)

non succede nulla.

Si spegne, ma non si riaccende più.

Dove eventualmente si trova l'errore?
 

Sperx

Utente poco attivo
Professione: Disegnatore Meccanico
Software: Solidworks 2019
Regione: West Yorkshire
Buon giorno,
ho notato un problema.
Riesco a sospendere un oggetto "Feature" con un
swfeat.SetSuppression (swComponentSuppressionState_e.swComponentSuppressed)

Ma alla sua riattivazione,
swfeat.SetSuppression (swComponentSuppressionState_e.swComponentFullyResolved)

non succede nulla.

Si spegne, ma non si riaccende più.

Dove eventualmente si trova l'errore?
Non e' per caso unsuppressed? premetto che non ho capito la macro, non sono pro come voi...ahaha
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Buon giorno,
ho notato un problema.
Riesco a sospendere un oggetto "Feature" con un
swfeat.SetSuppression (swComponentSuppressionState_e.swComponentSuppressed)

Ma alla sua riattivazione,
swfeat.SetSuppression (swComponentSuppressionState_e.swComponentFullyResolved)

non succede nulla.

Si spegne, ma non si riaccende più.

Dove eventualmente si trova l'errore?
Secondo me sta nel fatto che devi riattivare una feature, mentre tu stai riattivando un componente
( swComponentSuppressionState_e.swComponentSuppressed) ).
Usa il metodo
SetSuppression2 Method (IFeature) perchè l'altro è obsoleto dal 2004

la scrittura dovrebbe essere questa:
swfeat.SetSuppression2(swFeatureSuppressionAction_e.swUnSuppressFeature,swInConfigurationOpts_e Enumeration.swAllConfiguration)

Poi decidi nel secondo parametro su quale configurazioni o su tutte
 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Secondo me sta nel fatto che devi riattivare una feature, mentre tu stai riattivando un componente
( swComponentSuppressionState_e.swComponentSuppressed) ).
Usa il metodo
SetSuppression2 Method (IFeature) perchè l'altro è obsoleto dal 2004

la scrittura dovrebbe essere questa:
swfeat.SetSuppression2(swFeatureSuppressionAction_e.swUnSuppressFeature,swInConfigurationOpts_e Enumeration.swAllConfiguration)

Poi decidi nel secondo parametro su quale configurazioni o su tutte
Questo è vero, ma stranamente per sospenderla, prende anche il swcomponent 🤔
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Forse qualche errorino sulle Api lo fanno anche loro...;)
Quindi funziona ora?
 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Nooo, adesso devo anche tirar fuori massa e volume delle sottoparti 😭
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Dai che questa è facile, il volume e altre proprietà della parte escono dal metodo
Volume Property (IMassProperty2)

 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Spero che adesso non mi domandi altro... 🤔
 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Dai che questa è facile, il volume e altre proprietà della parte escono dal metodo
Volume Property (IMassProperty2)

invece è più difficile del previsto.
Non so il perchè, ma mi da il volume di tutte le parti alla stessa configurazione.
Reiterando per la massa, gira sempre nella prima configurazione
 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Posto per esempio, la parte del codice

dim swApp As SldWorks.SldWorks
dim swmodel As SldWorks.ModelDoc2
dim swAssy As SldWorks.AssemblyDoc
dim vmass As Variant
dim volume As Double
dim swcompBody As SldWorks.Body2
dim swcompmodel As SldWorks.ModelDoc2



Set swApp = Application.SldWorks
Set swmodel = swApp.ActiveDoc
Set swAssy = swmodel

dim vcomp as variant
vComp = swAssy.GetComponents(False)

If Not IsEmpty(vComp) Then
Dim I As Integer
For I = 0 To UBound(vComp)
Set swcomp = vComp(I)
Dim ModelC As AssemblyDoc
Set ModelC = swcomp.GetModelDoc2
Dim VModelC As Variant
VModelC = ModelC.GetComponents(False)
Dim ModelCC As Component2
Dim h As Integer
For h = 0 To UBound(VModelC)
Set ModelCC = VModelC(h)
Set swcompBody = ModelCC.GetBody
Set swcompmodel = ModelCC.GetModelDoc
volume = swcompmodel.GetUserPreferenceDoubleValue(swMaterialPropertyDensity)
vmass = swcompBody.GetMassProperties(volume)
If ModelCC.Name2 = "NOME" & UserForm1.ComboBox Then
UserForm2.Controls("VALORE1" & UserForm1.ComboBox).Value = Round(vmass(3), 2)
End If
If ModelCC.Name2 = "NOME2" & UserForm1.ComboBox Then
UserForm2.Controls("VALORE2" & UserForm1.ComboBox).Value = Round(vmass(3), 2)
End If
Next h
Next I
End If
 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Infatti se faccio un debug.print modelcc.ReferencedConfiguration, noto che gira sempre sulla stessa configurazione.
Ma tendenzialmente è lo stesso motore che ho usato per cambiare le quote, spegnere/accendere componenti e features.
non riesco a capire dove sbaglio
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Infatti se faccio un debug.print modelcc.ReferencedConfiguration, noto che gira sempre sulla stessa configurazione.
Ma tendenzialmente è lo stesso motore che ho usato per cambiare le quote, spegnere/accendere componenti e features.
non riesco a capire dove sbaglio
Si in effetti non c'è la possibilità di ricavare le proprietà di massa per ogni configurazione, questo perchè la configurazione viene caricata e aggiornata una volta che la attivi.
Secondo me devi ciclare tutte le configurazioni attivandole una alla volta e ricavando le proprietà di massa. Al termine lasci attiva la configurazione che eri partito prima del ciclo.
 

SimoneCRV

Utente poco attivo
Professione: Disegnatore/ Progettista
Software: Solidworks - Visualize
Regione: Veneto
Si in effetti non c'è la possibilità di ricavare le proprietà di massa per ogni configurazione, questo perchè la configurazione viene caricata e aggiornata una volta che la attivi.
Secondo me devi ciclare tutte le configurazioni attivandole una alla volta e ricavando le proprietà di massa. Al termine lasci attiva la configurazione che eri partito prima del ciclo.
Se dovesse servire, ho seguito questo esempio, opportunamente modificato poi, per risolvere il problema. Non è necessario ciclare tutte le configurazioni e al termine attivare quella iniziale.
L'esempio mostra poi quale enum devo fare per ricavare il volume.

Ho ricavato il volume, per ogni componente che andavo a ciclare, considerato che questo ultimo, è già nella configurazione che mi serve.

 
Hai installato un sistema per bloccare i banner/annunci

Abbiamo capito, le pubblicità sono fastidiose!

Il software di blocco dei banner fa un ottimo lavoro nel bloccare gli annunci, ma blocca anche le funzioni utili del nostro sito web. Per una migliore esperienza sul sito, disabilita il tuo AdBlocker su CAD3D.it. Grazie!

Ho disabilitato AdBlock