@@ -52,11 +52,7 @@ vol_ed(struct rt_solid_edit *s, int arg, int UNUSED(a), int UNUSED(b), void *UNU
52
52
case ECMD_VOL_FSIZE :
53
53
break ;
54
54
case ECMD_VOL_CSIZE :
55
- s -> solid_edit_scale = 1 ;
56
- break ;
57
55
case ECMD_VOL_THRESH_LO :
58
- s -> solid_edit_scale = 1 ;
59
- break ;
60
56
case ECMD_VOL_THRESH_HI :
61
57
s -> solid_edit_scale = 1 ;
62
58
break ;
@@ -92,27 +88,28 @@ rt_solid_edit_vol_menu_item(const struct bn_tol *UNUSED(tol))
92
88
void
93
89
ecmd_vol_csize (struct rt_solid_edit * s )
94
90
{
95
- struct rt_vol_internal * vol =
96
- (struct rt_vol_internal * )s -> es_int .idb_ptr ;
91
+ struct rt_vol_internal * vol = (struct rt_vol_internal * )s -> es_int .idb_ptr ;
97
92
bu_clbk_t f = NULL ;
98
93
void * d = NULL ;
99
94
100
95
RT_VOL_CK_MAGIC (vol );
101
96
102
- /* must convert to base units */
103
- s -> e_para [0 ] *= s -> local2base ;
104
- s -> e_para [1 ] *= s -> local2base ;
105
- s -> e_para [2 ] *= s -> local2base ;
97
+ // Specified numerical input
98
+ if (s_ > e_inpara ) {
99
+ if (s -> e_inpara != 3 ) {
100
+ bu_vls_printf (s -> log_str , "x, y, and z cell sizes are required\n" );
101
+ rt_solid_edit_map_clbk_get (& f , & d , s -> m , ECMD_PRINT_RESULTS , BU_CLBK_DURING );
102
+ if (f )
103
+ (* f )(0 , NULL , d , NULL );
104
+ return ;
105
+ } else {
106
+ VMOVE (vol -> cellsize , s -> e_para );
107
+ return ;
108
+ }
109
+ }
106
110
107
- if (s -> e_inpara == 3 ) {
108
- VMOVE (vol -> cellsize , s -> e_para );
109
- } else if (s -> e_inpara > 0 && s -> e_inpara != 3 ) {
110
- bu_vls_printf (s -> log_str , "x, y, and z cell sizes are required\n" );
111
- rt_solid_edit_map_clbk_get (& f , & d , s -> m , ECMD_PRINT_RESULTS , BU_CLBK_DURING );
112
- if (f )
113
- (* f )(0 , NULL , d , NULL );
114
- return ;
115
- } else if (s -> es_scale > 0.0 ) {
111
+ // XY coord (usually mouse) based scaling
112
+ if (s -> es_scale > 0.0 ) {
116
113
VSCALE (vol -> cellsize , vol -> cellsize , s -> es_scale );
117
114
s -> es_scale = 0.0 ;
118
115
}
@@ -297,16 +294,18 @@ rt_solid_edit_vol_pscale(struct rt_solid_edit *s)
297
294
return BRLCAD_ERROR ;
298
295
}
299
296
300
- if (s -> e_para [0 ] <= 0.0 ) {
301
- bu_vls_printf (s -> log_str , "ERROR: SCALE FACTOR <= 0\n" );
302
- s -> e_inpara = 0 ;
303
- return BRLCAD_ERROR ;
304
- }
297
+ if (s -> e_inpara ) {
298
+ if (s -> e_para [0 ] <= 0.0 ) {
299
+ bu_vls_printf (s -> log_str , "ERROR: SCALE FACTOR <= 0\n" );
300
+ s -> e_inpara = 0 ;
301
+ return BRLCAD_ERROR ;
302
+ }
305
303
306
- /* must convert to base units */
307
- s -> e_para [0 ] *= s -> local2base ;
308
- s -> e_para [1 ] *= s -> local2base ;
309
- s -> e_para [2 ] *= s -> local2base ;
304
+ /* must convert to base units */
305
+ s -> e_para [0 ] *= s -> local2base ;
306
+ s -> e_para [1 ] *= s -> local2base ;
307
+ s -> e_para [2 ] *= s -> local2base ;
308
+ }
310
309
311
310
switch (s -> edit_flag ) {
312
311
case ECMD_VOL_CSIZE :
0 commit comments