puts "========" puts "0029830: Data Exchange, STEPCAFControl_Reader poor performance - quadratic dependence" puts "========" puts "" set copy_cmd tcopy if $use_sharing { set copy_cmd copy } set dx 2 set dy 4 set dz 6 set nx0 20 set ny 10 set nz 10 if [info exists D] {Close D} if [info exists D1] {Close D1} for {set npass 1} {$npass <= 2} {incr npass} { set nx [expr $nx0 * $npass] puts "Creating assembly of $nx*$ny*$nz boxes" plane a 0 0 0 1 0 0 mkface a a 0 3 0 2 shape co C for {set i 0} {$i < $nx} {incr i} { for {set j 0} {$j < $ny} {incr j} { for {set k 0} {$k < $nz} {incr k} { eval $copy_cmd a a1 ttranslate a1 $dx*$i $dy*$j $dz*$k add a1 co } } } XNewDoc D XAddShape D co puts "Assigning colors to components" set i 0 set j 0 set k 0 set shlist [explode co] set lab [lindex [XFindComponent D co_1] 0] set taglist [split $lab :] foreach c $shlist { set r [expr ($i%3)/3.] set g [expr ($j%3)/3.] set b [expr ($k%3)/3.] set lab [join $taglist :] XSetColor D $lab $r $g $b incr k if {$k%3 == 0} { incr j if {$j%3 == 0} { incr i } } set taglist "[lrange $taglist 0 end-1] [expr [lindex $taglist end] + 1]" } puts "Writing STEP model" chrono cr1 restart WriteStep D . chrono cr1 stop Close D puts "Reading STEP model" chrono cr2 restart ReadStep D1 . chrono cr2 stop # check one solid with different locations XGetOneShape result D1 if $use_sharing { checknbshapes result -face 1 checknbshapes result -face [expr $nx*$ny*$nz] -t } else { checknbshapes result -face [expr $nx*$ny*$nz] checknbshapes result -face [expr $nx*$ny*$nz] -t } if {$npass == 2} { XShow D1 vfit vsetdispmode 1 checkview -screenshot -3d -path ${imagedir}/${test_image}.png } Close D1 set time_write_$npass [lindex [dchrono cr1 counter "WriteStep_$npass"] end] set time_read_$npass [lindex [dchrono cr2 counter "ReadStep_$npass"] end] } puts "time_write_1=$time_write_1" puts "time_write_2=$time_write_2" puts "time_read_1=$time_read_1" puts "time_read_2=$time_read_2" set time_raise_write [expr $time_write_2 / $time_write_1] set time_raise_read [expr $time_read_2 / $time_read_1] puts "time_raise_write=$time_raise_write" puts "time_raise_read=$time_raise_read"