Aerospace Fastener creation has invalid (colinear) orientation vector

Peter Bayer
Peter Bayer Altair Community Member
edited August 2023 in Community Q&A

Hi,

after creating rivet connections (RBE3-CBUSH-RBE3) via Aerospace -> Connections -> Fastener Setup, I encountered the following error in the solver run:

*** ERROR # 41 ***
CBUSH 1100028 has an invalid orientation vector (zero length
or parallel to the element axis).

Checking the orientation of the faulty CBUSH elements shows the y and z directions are colinear, as seen below (green y vector covers the z vector). This issue only happens for the elements with an x axis identical to the global coordinate system.

image

the post script for generating the properties can be found here:

...Altair/2022.1/hwdesktop/hm/scripts/EngineeringSolutions/aerospace/rivetConnection/postscript.tcl

 

My guess would be that the orientation for the elements in question is defined in the follwing code (from line 262 in the file), but I was not able to generate the correct directions while playing around with it.

if { $orientVector == [list 0.0 0.0 0.0] ||  $orientVector == [list 0 0 0] } {                   # Get the vector for the CBUSH element                   set vecG12 [getVector2NodesId $G1 $G2]                    # Check if given CBUSH is parallel to global X-axis                   set globalX [list 1 0 0]                   set angle 0                   catch { set angle [::math::linearalgebra::angle $globalX $vecG12 ] }                   # Converting to degrees                   set pi [ expr {atan(1) * 4} ]                   set angle [expr {$angle * 180 / $pi}] 				if { $angle < 15 || $angle > 165 } { 					set orientVector [list 0 1 0] 					if { $vectY == 0 } { 						*clearmark nodes 1  						*createmark nodes 1 $G1 						*vectorcreate 1 0 1 0 0                             *clearmark nodes 1  						*createmark vectors 1 -1 						set vectY [hm_getmark vectors 1]                             *clearmark vectors 1  					} 					*setvalue elems id=$ent_id vectorid=$vectY                         if { $cfgValue == $bar_config } {                               dict set ::rcPostScript::conBarVectDict $curr_ce_id $orientVector                         } 					*attributeupdateint elements $ent_id 3240 1 2 0 1 					*attributeupdatedouble elements $ent_id 9402 1 1 0 0 					*attributeupdatedouble elements $ent_id 9403 1 1 0 1 					*attributeupdatedouble elements $ent_id 9404 1 1 0 0 					*attributeupdateint elements $ent_id 882 1 2 0 0 				} else {	 					set orientVector [list 1 0 0] 					if { $vectX == 0 } { 						*clearmark nodes 1  						*createmark nodes 1 $G1 						*vectorcreate 1 1 0 0 0                             *clearmark nodes 1  						*createmark vectors 1 -1 						set vectX [hm_getmark vectors 1]                             *clearmark vectors 1  					}                        if { $cfgValue == $bar_config } {                               dict set ::rcPostScript::conBarVectDict $curr_ce_id $orientVector                         }                          					*setvalue elems id=$ent_id vectorid=$vectX                        					*attributeupdateint elements $ent_id 3240 1 2 0 1 					*attributeupdatedouble elements $ent_id 9402 1 1 0 1 					*attributeupdatedouble elements $ent_id 9403 1 1 0 0 					*attributeupdatedouble elements $ent_id 9404 1 1 0 0 					*attributeupdateint elements $ent_id 882 1 2 0 0 				}                     			} else { 				set G1 [hm_getvalue elems id=$ent_id dataname=node1] 				if { $vectX == 0 } { 					*clearmark nodes 1  					*createmark nodes 1 $G1           					*vectorcreate 1 [lindex $orientVector 0] [lindex $orientVector 1] [lindex $orientVector 2] 0                       *clearmark nodes 1  					*clearmark vectors 1  					*createmark vectors 1 -1 					set vectX [hm_getmark vectors 1]                       *clearmark vectors 1  				} 				*setvalue elems id=$ent_id vectorid=$vectX 				*attributeupdateint elements $ent_id 3240 1 2 0 1 				*attributeupdatedouble elements $ent_id 9402 1 1 0 [lindex $orientVector 0] 				*attributeupdatedouble elements $ent_id 9403 1 1 0 [lindex $orientVector 1] 				*attributeupdatedouble elements $ent_id 9404 1 1 0 [lindex $orientVector 2] 				*attributeupdateint elements $ent_id 882 1 2 0 0  				lset orientVector 0 [format %.2f [lindex $orientVector 0]] 				lset orientVector 1 [format %.2f [lindex $orientVector 1]] 				lset orientVector 2 [format %.2f [lindex $orientVector 2]] 			}

In the attachment is a section of the model for reference

Any help is appreciated, thanks!

Answers