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

macro per eliminare parti vuote

painaz

Utente Standard
Professione: ingegnere
Software: proe
Regione: veneto
#1
Per formulare la domanda faccio prima un esempio:

livello 0 top (eventualmente senza geometria)
livello 1 albero (figlio di top, con geometria)
livello 2 distanziale (figlio di albero, senza geometria)
livello 3 ingranaggio (figlio di distanziale, con geometria)

esiste una macro che elimina la parte vuota in modo tale da ottenere

livello 0 top (eventualmente senza geometria)
livello 1 albero (figlio di top, con geometria)
livello 2 ingranaggio (figlio di albero, senza geometria)

uso una vecchia 10.50
 

painaz

Utente Standard
Professione: ingegnere
Software: proe
Regione: veneto
#3
provo a smuovere le acquee....

la macro dovrebbe essere così:

DEFINE ripulisci
LOCAL X
LOCAL parte
LOCAL lista_parti
PB_LTAB_UPDATE
LET lista_parti 'PBT_LTAB'
LET X 1
LOOP
LET X (X+1)
EXIT_IF (X>(LTAB_ROWS lista_parti))
LET Parte (READ_LTAB lista_parti X 2)
EDIT_PART Parte
INQ_ENV 7
LET ang_b_sx (INQ 101)
LET ang_a_dx (INQ 102)
IF (Pbsx=Padx)
EDIT_PART PARENT
SMASH_SUBPART Parte
END_IF
END_LOOP
END
END
DISPLAY 'FATTO!'
END_DEFINE

la macro funziona nello scorrere correttamente tutti gli elementi della lista parti.
uso la PBT_LTAB che è fatta così:

Column Description Data Type Example
1 The (user) partname String "Top"
2 The unique partID string "~1"
3 Shared part ID String "#3"
4 Part scale String "1:1"
5 Rownumber of part in PartBrowser Number 0 (first row starts at 0)
6 Icon for collapsed parttree String " "

(vedi: http://me10macro.awardspace.com/tipstricks.html )

per capire se una parte è vuota confronto il suo punto più un alto a destra e quello più in basso a sinistra

INQ_ENV 7 (INQ 101) basso a sx

INQ_ENV 7 (INQ 101) alto a dx

è il meglio che ho trovato. Ma non funziona, immagino perchè se la geometria è effettivamente vuota, che punti confronto?

Qualche suggerimento?

Esiste ancora qualche pio "guru" di Me10 che mi dia la dritta giusta?
 
Ultima modifica:

painaz

Utente Standard
Professione: ingegnere
Software: proe
Regione: veneto
#4
bingo!

anche se il forum sembra vuoto la metto, a qualcuno potrebbe sempre servire:

DEFINE ripulisci
LOCAL X
LOCAL parte
LOCAL lista_parti
PB_LTAB_UPDATE
LET lista_parti 'PBT_LTAB'
LET X 1
LOOP
LET X (X+1)
EXIT_IF (X>(LTAB_ROWS lista_parti))
LET Parte (READ_LTAB lista_parti X 2)
EDIT_PART Parte
INQ_SELECTED_ELEM SELECT GEO ALL CONFIRM
IF ((INQ 14)=0)
EDIT_PART PARENT
SMASH_SUBPART Parte
END_IF
END_LOOP
END
END
DISPLAY 'FATTO!'
END_DEFINE