Estrarre parametri da un disegno Mechanical Desktop

Nenma

Utente poco attivo
Professione: Geometra
Software: Autocad
Regione: LOMBARDIA
Buongiorno ho un problema nel poter estrarre il dati parametrici dei blocchi di AutoCAD mechanical desktop in pratica non riesco a trovare dove sono salvate i parametri che regolano il blocco
l'oggetto e di tipo "AmgstdPart"

Purtroppo non trovo e non ho trovato niente neanche Nei forum dedicati in Autodesk se qualcuno riesce ad aiutarmi ad affrontare questo problema ne sarei molto grato
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Allega un dwg con alcune tipologie di componenti mechanical
 

Nenma

Utente poco attivo
Professione: Geometra
Software: Autocad
Regione: LOMBARDIA
ok... vuoi anche del codice? se non hai le mie librerie riesci a vederli lo stesso? cmq proviamo...

ho allegato la parte standard "STRUTTURA".... la mia idea era clikkarci sopra e recuperare in una variabile le dimensioni che vedi nella sezione dettagli alla voce "Dimensioni"
 

Allegati

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Mi dispiace, senza mechanical non riesco neanche a visualizzare il dwg, con Cadworx lo vedo ma in ogni caso senza la struttura dei dati è veramente ostico capire dove cercare.
 

dieva

Utente Standard
Professione: CAD Manager - AutoCAD sw developer
Software: AutoCAD | BricsCAD | 3DSMax | Revit
Regione: puglia
Buongiorno ho un problema nel poter estrarre il dati parametrici dei blocchi di AutoCAD mechanical desktop in pratica non riesco a trovare dove sono salvate i parametri che regolano il blocco
l'oggetto e di tipo "AmgstdPart"

Purtroppo non trovo e non ho trovato niente neanche Nei forum dedicati in Autodesk se qualcuno riesce ad aiutarmi ad affrontare questo problema ne sarei molto grato
In Mechanical con le classiche funzioni AutoLISP (entsel, entget ...) per l'interrogazione dei dati di un oggetto ottieni liste di dati codificati.

allego un txt nel quale ti mostro un esempio di risultati.
Noterai che nella lista ci sono per esempio campi come (300 . "2100") e (300 . "1000") che rappresentano la l'altezza e la larghezza del componente più grande.
 

Allegati

Nenma

Utente poco attivo
Professione: Geometra
Software: Autocad
Regione: LOMBARDIA
In Mechanical con le classiche funzioni AutoLISP (entsel, entget ...) per l'interrogazione dei dati di un oggetto ottieni liste di dati codificati.

allego un txt nel quale ti mostro un esempio di risultati.
Noterai che nella lista ci sono per esempio campi come (300 . "2100") e (300 . "1000") che rappresentano la l'altezza e la larghezza del componente più grande.
grazie mille. hai idea di come posso portare quei valori in un array vba? la mia idea era cliccare (getobject) su uno o più oggetti e poi far fare al codice il resto dei calcoli...
 

Nenma

Utente poco attivo
Professione: Geometra
Software: Autocad
Regione: LOMBARDIA
In Mechanical con le classiche funzioni AutoLISP (entsel, entget ...) per l'interrogazione dei dati di un oggetto ottieni liste di dati codificati.

allego un txt nel quale ti mostro un esempio di risultati.
Noterai che nella lista ci sono per esempio campi come (300 . "2100") e (300 . "1000") che rappresentano la l'altezza e la larghezza del componente più grande.

Allora sto facendo progressi ma non abbandonatemi 😅

il codice qui sotto fa un ciclo di tutte le parti standard presenti nel disegno "AmgstdPart"... ne fa vedere il nome e la descrizione della vista.... adesso devo riuscire a fare altro per esempio modificare i parametri.. e anche se possibile inserirli nel disegno tramite codice....



Codice:
Public Sub provarecuperopartistandard()
    ' Reference to AcadmApplication
    Dim mcad As AcadmApplication
    Set mcad = ThisDrawing.Application.GetInterfaceObject("AcadmAuto.AcadmApplication")

    ' Get Mcad2DStructureMgr
    Dim structMgr As Mcad2DStructureMgr
    Set structMgr = mcad.ActiveDocument.StructureMgr2D

' Create Mcad2dStdPartCompGroupDescriptor
    Dim compGroup1 As Mcad2dStdPartComponentDescriptor
    Set compGroup1 = structMgr.Create2dStdPartComponentDescriptor
  
    Dim powViews1() As McadStdPartComponentViewDescriptor
    powViews1 = structMgr.GetSingleStdPartViewsForMigr

    Dim view1 As Variant
    Dim powView1 As McadStdPartComponentViewDescriptor
  
    For Each view1 In powViews1
      
        'If TypeOf view1 Is McadStdPartComponentViewDescriptor Then
            'Set powView1 = view1
            'icompGroup.AddView powView1
            'MsgBox ""
        'End If
       
           Set powView1 = view1
           MsgBox view1.FullViewName & "-" & view1.Name
    
    
  
    Next



End Sub
 

dieva

Utente Standard
Professione: CAD Manager - AutoCAD sw developer
Software: AutoCAD | BricsCAD | 3DSMax | Revit
Regione: puglia
Allora sto facendo progressi ma non abbandonatemi 😅

il codice qui sotto fa un ciclo di tutte le parti standard presenti nel disegno "AmgstdPart"... ne fa vedere il nome e la descrizione della vista.... adesso devo riuscire a fare altro per esempio modificare i parametri.. e anche se possibile inserirli nel disegno tramite codice....



Codice:
Public Sub provarecuperopartistandard()
    ' Reference to AcadmApplication
    Dim mcad As AcadmApplication
    Set mcad = ThisDrawing.Application.GetInterfaceObject("AcadmAuto.AcadmApplication")

    ' Get Mcad2DStructureMgr
    Dim structMgr As Mcad2DStructureMgr
    Set structMgr = mcad.ActiveDocument.StructureMgr2D

' Create Mcad2dStdPartCompGroupDescriptor
    Dim compGroup1 As Mcad2dStdPartComponentDescriptor
    Set compGroup1 = structMgr.Create2dStdPartComponentDescriptor

    Dim powViews1() As McadStdPartComponentViewDescriptor
    powViews1 = structMgr.GetSingleStdPartViewsForMigr

    Dim view1 As Variant
    Dim powView1 As McadStdPartComponentViewDescriptor

    For Each view1 In powViews1
    
        'If TypeOf view1 Is McadStdPartComponentViewDescriptor Then
            'Set powView1 = view1
            'icompGroup.AddView powView1
            'MsgBox ""
        'End If
     
           Set powView1 = view1
           MsgBox view1.FullViewName & "-" & view1.Name
  
  

    Next



End Sub
Mi spiace . non so aiutarti.
nelle API VBA di mechanical le descrizioni non sono molto presenti e per capire cosa si ottiene bisogna testare praticamente il loro funzionamento .

ci saranno metodi per ottenere le property (height, width...) direttamente dall'oggetto... (?)
 

tracciatura.net

Utente poco attivo
Professione: Tecnico
Software: AutoCAD - Inventor - Tekla - Nesting
Regione: Piemonte
Io potrei aiutarti collegandomi in desktop remoto, non avendo mechanical non posso vedere nulla