Come passare da IModelDoc2 a IAssemblyDoc

Mithas

Utente Junior
Professione: Disegnatore/Progettista
Software: SolidWorks, AutoCAD, Inventor, DraftSight
Regione: Veneto
Salve a tutti,

qualcuno per caso saprebbe come fare il cast da IModelDoc2 a IAssemblyDoc in C# per un'applicazione Solidworks.

Di seguito la parte che mi da problemi.

private List<Node> Children(IModelDoc2 comp)
{
List<Node> data2 = new List<Node>();
IAssemblyDoc Assy = (IAssemblyDoc)comp; // qui dovrebbe avvenire il cast, ma mi da sempre un'errore
object[] comps = Assy.GetComponents(true);
foreach (IComponent2 iComp in comps)
{
if (!iComp.IsSuppressed())
data2.Add(CompInfo((IModelDoc2)iComp.GetModelDoc2()));
}
return (List<Node>)data2.GroupBy(x => x.Code);
}

Volevo riuscire a passare al metodo sempre ModelDoc2 e poi convertirlo in IAssemblyDoc all'interno, ma non mi viene in mente niente...

Grazie.

Mit
 

shirokko

Utente
Professione: Progettista cad-cam
Software: CimatronIT, Cimatron 13, Rhinoceros 6, Solidworks 2021, SolidCAM 2021
Regione: Marche
Non credo sia possibile un cast.

Però puoi provare ad usare il metodo GetDependencies dell'interfaccia IModelDocExtension.
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Concordo con shirokko,
stai ricavando il IModelDoc2 dell'assieme dal componente.
 

Mithas

Utente Junior
Professione: Disegnatore/Progettista
Software: SolidWorks, AutoCAD, Inventor, DraftSight
Regione: Veneto
Potreste farmi un esempio con IModelDocExtension
 

shirokko

Utente
Professione: Progettista cad-cam
Software: CimatronIT, Cimatron 13, Rhinoceros 6, Solidworks 2021, SolidCAM 2021
Regione: Marche
E la tua funzione assomiglierebbe a
Codice:
        private List<string> Children(IModelDoc2 comp)
        {
            List<string> data2 = new List<string>();
            ModelDocExtension extension = comp.Extension;
            string[] nomiDipendenze = extension.GetDependencies(true, true, true, true, true);

            for (int i = 0; i < nomiDipendenze.Length; i++)
            {
                data2.Add(nomiDipendenze[i]);
            }
            return data2;
        }
 

Mithas

Utente Junior
Professione: Disegnatore/Progettista
Software: SolidWorks, AutoCAD, Inventor, DraftSight
Regione: Veneto
Grazie mille. Ora provo.