home *** CD-ROM | disk | FTP | other *** search
- /* CMD: SubDivider
- * Make Ginsu of your Model in Modeler *
- * By Jon Tindall Copyright © 1993 MetroGrafx *
- * fri feb 26 1993 revised 24june93 */
-
- arg xgrid ygrid zgrid
- if xgrid="" then xgrid=3
- if ygrid="" then ygrid=3
- if zgrid="" then zgrid=3
- Ax='Y'
- address "LWModelerARexx.port"
- libadd = addlib("LWModelerARexx.port",0)
-
- SIGNAL ON ERROR
- SIGNAL ON SYNTAX
- sysnam = 'Slicer'
-
- call req_begin sysnam
-
-
- xgridId = req_addcontrol("X Grid",'N',0)
- ygridId = req_addcontrol("Y Grid",'N',0)
- zgridId = req_addcontrol("Z Grid",'N',0)
-
-
- call req_setval xgridId, 3
- call req_setval ygridId, 3
- call req_setval zgridId, 3
-
-
- x = req_post()
- if (x) then do
- xgrid= req_getval(xgridId)
- ygrid= req_getval(ygridId)
- zgrid= req_getval(zgridId)
-
- if xgrid<1 then xgrid=1
- if ygrid<1 then ygrid=1
- if zgrid<1 then zgrid=1
- call req_end()
- end
- else do
- call req_end()
- exit
- end
-
-
- CurLay=curlayer()
- box=boundingbox() /* Should check out empty list ... */
- parse var box n x1 x2 y1 y2 z1 z2
- s1="!Layer "CurLay": " n" Points"
- s2="!Object Bounds"
- s3='@'x1 y1 z1 /* low values */
- s4='@'x2 y2 z2 /* high values */
-
- xcube=(x2-x1)/xgrid
- ycube=(y2-y1)/ygrid
- zcube=(z2-z1)/zgrid
-
-
- empty=emptylayers()
-
- if empty~="" then do
- scr=word(empty,1)
- End
- else do
- call notify 1, '@'sysnam, "!Need an empty layer for scratch work."
- exit 10
- return
- end
-
-
-
-
-
-
- If ygrid>1 Then Do
- call setlayer(scr)
- call Add_Begin
- call ADD_POINT(x1-xcube y1+ycube 0) /* build y slices */
- call ADD_POINT(x2+xcube y1+ycube 0)
- call ADD_POLYGON(1 2)
- call Add_end
-
- do n=1 to ygrid-2
- IF n=1 then do
- call COPY()
- end
- call MOVE(0 ycube 0)
- call PASTE()
-
- END
- call setlayer(CurLay)
- call setblayer(scr)
- call AXISDRILL('SLICE', 'Z')
- call setlayer(scr)
- call CUT()
- END
-
-
- If xgrid>1 Then Do
- call setlayer(scr)
-
- call Add_Begin
- call ADD_POINT(x1+xcube y1-ycube 0) /* build x slices */
- call ADD_POINT(x1+xcube y2+ycube 0)
- call ADD_POLYGON(1 2)
- call Add_end
-
- do n=1 to xgrid-2
- IF n=1 then do
- call COPY()
- end
- call MOVE(xcube 0 0)
- call PASTE()
-
- END
- call setlayer(CurLay)
- call SETBLAYER(scr)
- call AXISDRILL('SLICE', 'Z')
- call setlayer(scr)
- call CUT()
- END
-
-
-
-
- If zgrid>1 Then Do
- call setlayer(scr)
- call Add_Begin
- call ADD_POINT(0 y1-ycube z1+zcube) /* build Z slices */
- call ADD_POINT(0 y2+ycube z1+zcube)
- call ADD_POLYGON(1 2)
- call Add_end
-
- do n=1 to zgrid-2
- IF n=1 then do
- call COPY()
- end
- call MOVE (0 0 zcube)
- call PASTE()
- END
-
- call setlayer(CurLay)
- call setblayer(scr)
- call axisdrill('slice', 'x')
- call setlayer(scr)
- call CUT()
- call setlayer(CurLay)
- END
-
- EXIT
-
- SYNTAX:
- ERROR:
- say 'Sorry, Error #'RC' on line 'SIGL' has been detected.'
- say errortext(rc)
- t=Notify(1,'!Well, Byte Me!','!An error has occured.','@'ErrorText(rc),'Line 'SIGL,sourceline(SIGL))
- call end_all
- exit
-
-