Try this:
DRAW LEVEL ALL
BLANK UNDO
EDIT BLOCKTYPE BOX
EDIT BLOCK COORDINATE WORKPLANE
EDIT BLOCK RESETLIMIT "0"
EDIT BLOCK ALL UNLOCK
EDIT BLOCK LIMITTYPE MODEL
VIEW MODEL ; SHADE RESTORE
VIEW MODEL ; WIREFRAME OFF
GRAPHICS LOCK
STRING firstmodelname = FOLDER('model')[0].name
EDIT MODEL $firstmodelname SELECT FLAT
BLANK EXCEPT
//a sík felületek ID-it kirakjuk egy külső file-ba
//pront flat surfaces' ID to a temp file
STRING tempfile = "C:\temp\macrotemp.tmp"
DELETE FILE $tempfile
DIALOGS MESSAGE OFF
ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT
TRACEFILE OPEN $tempfile
SIZE MODEL
TRACEFILE CLOSE
DIALOGS ERROR OFF
FILE CLOSE infile
DIALOGS MESSAGE ON
DIALOGS ERROR On
//majd visszaolvassuk egy listába
//reread file to a list
STRING LIST tempfilecontent = {}
FILE OPEN $tempfile FOR READ AS infile
FILE READ $tempfilecontent FROM infile
FILE CLOSE infile
BOOL feluletek = 0
STRING LIST id_lista = {}
//make a new list without header
FOREACH line IN $tempfilecontent {
IF size(tokens($line)) > 3 AND position($line, $firstmodelname) != -1 {
$feluletek = 1
}
IF $feluletek {
IF length($line) > 2 {
INT k = add_last($id_lista, tokens($line)[0])
}
}
}
EDIT MODEL ALL DESELECT ALL
//calculate bounding box for each surface
REAL LIST $Z_s = {}
FOREACH id IN $id_lista {
STRING mycmd = "EDIT MODEL '" + $firstmodelname + "' SELECT '"+ $id + "'"
DOCOMMAND $mycmd
EDIT BLOCK RESET
INT K = add_last($Z_s, $Block.Limits.ZMax)
}
BLANK UNDO
EDIT MODEL ALL DESELECT ALL
//seek for the biggest value
INT i = 0
REAL maxZ = max($Z_s)
WHILE $i < size($id_lista) {
IF compare( $Z_s[$i] , $maxZ, 0.001) {
STRING mycmd = "EDIT MODEL '" + $firstmodelname + "' SELECT '"+ $id_lista[$i] + "'"
DOCOMMAND $mycmd
GRAPHICS UNLOCK
RETURN
}
$i = $i + 1
}
(there is no filtering for cylinder top..)