mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
DCAF require VISUALIZATION for correct work. In some scenario DRAWEXE can generate a dublicates of the internal static singletons. This means each dynamic library will have their own instance of the static singleton. Update all direct library loading to use the DCAF plugin mechanism. This will ensure that the DCAF plugin is loaded only once and that the correct instance is used. Originally issue is reproduced only Linux with dlopen with "RTLD_LAZY". Can be resolved additionally adding "RTLD_LAZY | RTLD_GLOBAL" for dlopen
155 lines
4.4 KiB
Plaintext
155 lines
4.4 KiB
Plaintext
puts "============================================================================"
|
|
puts "0028104: Data Exchange - Extract sub-assembly (XDE)"
|
|
puts "============================================================================"
|
|
puts ""
|
|
|
|
pload OCAF
|
|
|
|
Close D0 -silent
|
|
Close D1 -silent
|
|
Close D2 -silent
|
|
Close D3 -silent
|
|
Close D4 -silent
|
|
Close D5 -silent
|
|
Close D6 -silent
|
|
|
|
box b1 0 0 0 10 10 10
|
|
box b2 0 0 0 10 10 10
|
|
box b3 0 0 0 10 10 10
|
|
compound b1 b2 b3 c
|
|
|
|
XOpen [locate_data_file bug30189.xbf] D0
|
|
|
|
XNewDoc D2
|
|
XAddShape D2 c
|
|
XNewDoc D3
|
|
XAddShape D3 c
|
|
XNewDoc D4
|
|
XAddShape D4 c
|
|
XNewDoc D5
|
|
XAddShape D5 c
|
|
XNewDoc D6
|
|
XAddShape D6 c
|
|
|
|
# All copy
|
|
XNewDoc D1
|
|
XExtract D1 D0 0:1:1:1
|
|
# Exctact part
|
|
XExtract D2 D0 0:1:1:3
|
|
# Exctact component
|
|
XExtract D3 D0 0:1:1:2:1
|
|
# Exctact part as a component
|
|
XExtract D4 0:1:1:1 D0 0:1:1:3
|
|
# Exctact compontnt as a component
|
|
XExtract D5 0:1:1:1 D0 0:1:1:2:1
|
|
# Exctact compontnt as a component
|
|
XExtract D6 0:1:1:1 D0 0:1:1:2:1 0:1:1:2:2 0:1:1:2:3 0:1:1:3
|
|
|
|
# checking labels structure and number of colors and shape
|
|
set err_compare_ref ""
|
|
set statD0 [XStat D0]
|
|
set statD1 [XStat D1]
|
|
set cur_list [split $statD0 \n]
|
|
set ref_list [split $statD1 \n]
|
|
set nb_ref [llength $ref_list]
|
|
set nb_cur [llength $cur_list]
|
|
set ref_Compare 0
|
|
set isNextLayer 0; set isNextColor 0
|
|
for { set i 0 } { $i < $nb_cur } { incr i } {
|
|
set refstr [lindex $ref_list $i]
|
|
set curstr [lindex $cur_list $i]
|
|
set isOK 1
|
|
if {[regexp "Number of colors" $refstr]} {
|
|
set isNextColor 1
|
|
} elseif {[regexp "Number of layers" $refstr]} {
|
|
set isNextLayer 1
|
|
} elseif {$isNextLayer || $isNextColor} {
|
|
set refProp [split $refstr " "]
|
|
set curProp [split $curstr " "]
|
|
if {[llength $refProp] != [llength $curProp]} {
|
|
set isOK 0
|
|
} else {
|
|
for { set j 0 } { $j < [llength $refProp] && $isOK} { incr j } {
|
|
set isFind 0
|
|
for { set k 0 } { $k < [llength $refProp] && $isOK} { incr k } {
|
|
if {[lindex $refProp $j] == [lindex $curProp $k]} {
|
|
set isFind 1
|
|
break
|
|
}
|
|
}
|
|
set isOK $isFind
|
|
}
|
|
}
|
|
set isNextLayer 0; set isNextColor 0
|
|
} elseif {$refstr != $curstr} {
|
|
set isOK 0
|
|
}
|
|
if {!$isOK} {
|
|
incr ref_Compare
|
|
append err_compare_ref " Reference data - $refstr\n"
|
|
append err_compare_ref " Current data - $curstr\n"
|
|
append err_compare_ref "----------------------------------------------\n"
|
|
}
|
|
}
|
|
|
|
if { $ref_Compare > 0} {
|
|
puts "Error : $ref_Compare differences with reference data found :\n$err_compare_ref"
|
|
} else {
|
|
puts "Comparison of current result with reference data - OK\n"
|
|
}
|
|
|
|
XGetOneShape res0 D0
|
|
XGetOneShape res1 D1
|
|
compare res0 res1
|
|
|
|
set propsD2 [XCheckProps D2]
|
|
if { ![regexp "0:1:1:5 +\"nut" $propsD2] } {
|
|
puts "Error: Incorrectly extracted shapes from D0 0:1:1:3 to D2"
|
|
}
|
|
if { ![regexp "RED" [XGetAllColors D2]] } {
|
|
puts "Error: Incorrectly extracted attributes from D0 0:1:1:3 to D2"
|
|
}
|
|
|
|
set propsD3 [XCheckProps D3]
|
|
if { ![regexp "0:1:1:5 +\"nut" $propsD3] && ![regexp "0:1:1:6 +\"nut_1" $propsD3] } {
|
|
puts "Error: Incorrectly extracted shapes from D0 0:1:1:2:1 to D3"
|
|
}
|
|
if { ![regexp "RED" [XGetAllColors D3]] } {
|
|
puts "Error: Incorrectly extracted attributes from D0 0:1:1:2:1 to D3"
|
|
}
|
|
|
|
set dumpD4 [Xdump D4]
|
|
if { ![regexp "PART SOLID 0:1:1:5 +\"nut" $dumpD4] && ![regexp "refers to 0:1:1:5" $dumpD4] } {
|
|
puts "Error: Incorrectly extracted shapes from D0 0:1:1:3 to D4 0:1:1:1"
|
|
}
|
|
if { ![regexp "RED" [XGetAllColors D4]] } {
|
|
puts "Error: Incorrectly extracted attributes from D0 0:1:1:3 to D4 0:1:1:1"
|
|
}
|
|
|
|
set dumpD5 [Xdump D5]
|
|
if { ![regexp "PART SOLID 0:1:1:5 \"nut" $dumpD5] && ![regexp "refers to 0:1:1:5')' \"nut_1" $dumpD5] } {
|
|
puts "Error: Incorrectly extracted shapes from D0 0:1:1:2:1 to D5 0:1:1:1"
|
|
}
|
|
if { ![regexp "RED" [XGetAllColors D5]] } {
|
|
puts "Error: Incorrect XExtract D0 0:1:1:2:1 D5 0:1:1:1"
|
|
}
|
|
|
|
set dumpD6 [Xdump D6]
|
|
if { ![regexp "nut_1" $dumpD6] && ![regexp "nut_2" $dumpD6] && ![regexp "rod_1'" $dumpD6] && ![regexp "refers to 0:1:1:5" $dumpD6]} {
|
|
puts "Error: Incorrectly extracted shapes from D0 0:1:1:2:1 0:1:1:2:2 0:1:1:2:3 0:1:1:3 to D6 0:1:1:1"
|
|
}
|
|
set colorD6 [XGetAllColors D6]
|
|
if { ![regexp "RED" $colorD6] && ![regexp "DARKGOLDENROD1" $colorD6]} {
|
|
puts "Error: Incorrectly extracted attributes from D0 0:1:1:2:1 0:1:1:2:2 0:1:1:2:3 0:1:1:3 to D6 0:1:1:1"
|
|
}
|
|
|
|
checkprops res0 -equal res1
|
|
|
|
Close D0 -silent
|
|
Close D1 -silent
|
|
Close D2 -silent
|
|
Close D3 -silent
|
|
Close D4 -silent
|
|
Close D5 -silent
|
|
Close D6 -silent
|