! ========================================= ! Shen-Yeh Chen ! 05/01/1998 ! ========================================= ! This macro will offset the coordinates of the selected nodes in CSYS ! (NOFFST == Node OFFSeT) ! --------------------------------------------------------- ! ! Syntax : ! ! x_noffst,_DX,_DY,_DZ ! x_noffst ! ! Input ! Leaving ALL of the arguments blank, or set all arguments to zeros ! will invoke a GUI for inputing the offset values. Rotation of the ! mesh can be done by setting the CSYS to the polar coordinate system. ! ! External programs called : ! None ! ========================================= /nop ! suppress printout for this macro /prep7 /NERR,0,10000 MODMSH,DETACH MODMSH,NOCHECK ! ! GET NUMBER OF NODES *GET,ZNNODE,NODE,,NUM,MAX ! ! ARRAYS FOR NODAL COORDINATES *dim,X_NOFFST_X,,ZNNODE *dim,X_NOFFST_Y,,ZNNODE *dim,X_NOFFST_Z,,ZNNODE *dim,X_NOFFST_S,,ZNNODE ! ! ARRAY FOR SELECT INDEX *vget,X_NOFFST_S(1),node,1,nsel ! ! GET COORDINATE *vmask,X_NOFFST_S(1) *vget,X_NOFFST_X(1),node,1,loc,x *vmask,X_NOFFST_S(1) *vget,X_NOFFST_Y(1),node,1,loc,y *vmask,X_NOFFST_S(1) *vget,X_NOFFST_Z(1),node,1,loc,z ! ! OFFSET THE COORDINATE X_NOFFST_DIST=ARG1**2.0+ARG2**2.0+ARG3**2.0 *IF,X_NOFFST_DIST,EQ,0.0,THEN *ASK,X_NOFFST_DX,Delta X *ASK,X_NOFFST_DY,Delta Y *ASK,X_NOFFST_DZ,Delta Z *ELSE X_NOFFST_DX=ARG1 X_NOFFST_DY=ARG2 X_NOFFST_DZ=ARG3 *ENDIF *voper,X_NOFFST_X(1),X_NOFFST_X(1),add,X_NOFFST_DX *voper,X_NOFFST_Y(1),X_NOFFST_Y(1),add,X_NOFFST_DY *voper,X_NOFFST_Z(1),X_NOFFST_Z(1),add,X_NOFFST_DZ ! ! MOVE THE NODES NOW SHPP,OFF *vmask,X_NOFFST_S(1) NMODIF,(1:ZNNODE),X_NOFFST_X(1:ZNNODE),X_NOFFST_Y(1:ZNNODE),X_NOFFST_Z(1:ZNNODE) ! X_NOFFST_X(1) = ! delete parameters (cleanup) X_NOFFST_Y(1) = X_NOFFST_Z(1) = X_NOFFST_S(1) = ZNNODE= X_NOFFST_DX= X_NOFFST_DY= X_NOFFST_DZ= X_NOFFST_DIST= MODMSH,CHECK /NERR,DEFA /go ! resume printout