Hi,
The past few days,I checked boolean operations under some face attribute combinations.
(For example the faces that has hidden,hole,invert and/or conditions with complex etc...)
Some worked normally, and some output crash logs.
Other than that,an interesting result was obtained by unioning objects whose inverted normals.
(Actually several steps are necessary to get this result. invert and separate)
I think that it is useful even if there is "engraved edge" with the Boolean command.
Boolean with invert normal (Intersect)
Boolean with invert normal (Differnce)
Boolean with invert normal
Boolean with a face that has inverted normal and a hole.
The past few days,I checked boolean operations under some face attribute combinations.
(For example the faces that has hidden,hole,invert and/or conditions with complex etc...)
Some worked normally, and some output crash logs.
Other than that,an interesting result was obtained by unioning objects whose inverted normals.
(Actually several steps are necessary to get this result. invert and separate)
I think that it is useful even if there is "engraved edge" with the Boolean command.
Boolean with invert normal (Intersect)
Code:
Dump written 2019-2-1_11-10
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: {case_clause,[22,23]}
Stack trace:
[{wings_bool,'-build_parts/2-fun-1-',4,[{file,"wings_bool.erl"},{line,301}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{wings_bool,build_parts,2,[{file,"wings_bool.erl"},{line,306}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,236}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,234}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]
Boolean with invert normal (Differnce)
Code:
Dump written 2019-2-1_11-9
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: {case_clause,[22,23]}
Stack trace:
[{wings_bool,'-build_parts/2-fun-1-',4,[{file,"wings_bool.erl"},{line,301}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{wings_bool,build_parts,2,[{file,"wings_bool.erl"},{line,308}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,236}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,sub,2,[{file,"wings_bool.erl"},{line,73}]},
{wings_bool,'-sub/1-fun-0-',2,[{file,"wings_bool.erl"},{line,60}]},
{wings,handle_event_3,2,[{file,"wings.erl"},{line,414}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,981}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{lists,all,2,[{file,"lists.erl"},{line,1213}]},
{wings_wm,redraw_win,1,[{file,"wings_wm.erl"},{line,886}]},
{lists,foreach,2,[{file,"lists.erl"},{line,1338}]},
{wings_wm,redraw_all,0,[{file,"wings_wm.erl"},{line,865}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]
Boolean with invert normal
Code:
Dump written 2019-2-1_11-8
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: function_clause
Short stack trace:
[{lists,zip,2,[{file,"lists.erl"},{line,387}]},
{wings_bool,weld,2,[{file,"wings_bool.erl"},{line,500}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,237}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,231}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]
Long stack trace:
[{lists,zip,[[],[22]],[{file,"lists.erl"},{line,387}]},
{wings_bool,weld,2,[{file,"wings_bool.erl"},{line,500}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,237}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,231}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]
Boolean with a face that has inverted normal and a hole.
Code:
Dump written 2019-2-1_11-13
Version: 2.2.2
OS: Mac OS X (Darwin 18.2.0 x86_64)
GPU: Intel Inc. | Intel(R) Iris(TM) Pro Graphics 6200
Window: geom
Reason: {case_clause,[22,23]}
Stack trace:
[{wings_bool,'-build_parts/2-fun-1-',4,[{file,"wings_bool.erl"},{line,301}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{wings_bool,build_parts,2,[{file,"wings_bool.erl"},{line,308}]},
{wings_bool,merge_2,5,[{file,"wings_bool.erl"},{line,236}]},
{wings_bool,find_intersect_1,3,[{file,"wings_bool.erl"},{line,169}]},
{wings_bool,find_intersect,3,[{file,"wings_bool.erl"},{line,159}]},
{wings_sel,dfold_1,5,[{file,"wings_sel.erl"},{line,236}]},
{wings_bool,do_bool,2,[{file,"wings_bool.erl"},{line,83}]},
{wings_body,command,2,[{file,"wings_body.erl"},{line,234}]},
{wings_develop,time_command,2,[{file,"wings_develop.erl"},{line,87}]},
{wings,raw_command,4,[{file,"wings.erl"},{line,625}]},
{wings_wm,handle_event,3,[{file,"wings_wm.erl"},{line,982}]},
{wings_wm,send_event,2,[{file,"wings_wm.erl"},{line,948}]},
{wings_wm,do_dispatch,2,[{file,"wings_wm.erl"},{line,849}]},
{wings_wm,dispatch_event,1,[{file,"wings_wm.erl"},{line,758}]},
{wings_wm,get_and_dispatch,0,[{file,"wings_wm.erl"},{line,657}]},
{wings,init_part2,2,[{file,"wings.erl"},{line,106}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]