Tutorial / reference guide for RogCAD_for_Windows


Take a few seconds to read the introduction
and eight minutes to watch the four short
introductory videos.

What you read in this document will be more
easily assimilated if you've seen it put 
into practice.

Introduction to RogCAD for Windows

Introductory Videos


Introduction to data entry

INTERFACE buttons and menus

  data file format   
  repeating cubics   
  single plane buttons 

At this point you can create 
useful wireframe models.


  Screen capture and screen set
  macro files


At this point you can achieve 
simple surfaced models.



At this point you can model curved surfaces.


  repeating cubics along curved paths


  facades, grids, plan views, going inside

instruction document date 01/31/2023



There is nothing you can't model in RogCAD, and with a good level of realism.

Just a very few numbers typed into a text-file database 
gives RogCAD the information it needs to produce:

  cubic elements repeated along straight or complex curved paths, 
  with whatever spacing and number of elements the CAD modeler
  specifies, thus creating rows of windows, porch rails, mitered 
  and beveled framing members, floor tiles, etc.

  perspectively correct insertion of vertical or horizontal lines 
  on specified planes, most typically used for simulating the lines 
  of siding boards or roof shingles, which is part of the automatic 
  surface modeling,

  transformations which deform, rotate, slide (translate) and resize
  select portions of your database -- often used in conjunction with 
  libraries of objects for use in multiple projects.

  For instance, you can both modify and relocate cabinets, windows, 
  walls, doors, appliances and furniture quickly with the transformation 

Those characteristics, along with RogCAD's data text-files that are 
geared for complex curved surfaces, give you complete flexibility 
of design.

The RogCAD program code has a good algorithm for automatic surface 
modeling with automatic shading for light-source direction.  
Thoughtful definition of project elements assures accurate 
plane-sorting for surface modeling.

RogCAD's automatic surface modeling generates a smooth gradient 
lighting differential on curved surfaces.

There is nothing you can't model.


This first video gives a quick look at data-groups being
displayed one at a time along with the image files that
were presented to the client.

video length   62 seconds


The project in the two videos immediately below was modeled 
by this RogCAD author 22 years ago in September 2000.  

The first video serves as a good illustration of how a single 
click will correct the surface-modeling.  The plane defining
a roof often needs that click to finish off the surface-
modeling, as roof planes extending past walls will sometimes 
undermine the plane-sorting algorithm.

In this video, that click occurred on the macro button, since
the macro-g file had the plane-coloring instruction in it.
More typically, the plane button that is below the Auto 3 
button is clicked to make the correction.

A change of perspective is also demonstrated.

video length   2 minute 02 seconds


This video shows two methods for painting a string of cubics (joists 
in this case).  First, the string button is used, which functions 
identically to the SJK routine in the macro files.  

After using that function, the auto-surfacing method is demonstrated:

The joists/beams data-group is called again and those joists and beams 
are painted by clicking an Auto button which triggers the auto-surfacing 
routine, which employs auto plane-sorting.

video length   71 seconds


This fourth video shows the use of the fast-change button.  The views 
associated with it are entered into START.TXT by the CAD user.  The 
auto-surfacing function is called for each of five perspectives in the 
video.  Auto-3 plane-sorting worked best for each of those perspectives, 
and again, in each case the plane defining a roof section needed a 
single click for the quick fix.

After that, the use of the macro-g file is demonstrated.  You'll notice
that this author used an "Auto" button for the data-groups that consist
of rectilinear elements and the macro-g button for the data-groups that
consist of curved surfaces with special facade considerations.  

Both methods are frequently employed for both types of data-groups.
Macro-a files, which have a project-wide scope, routinely include
Auto function instructions.

Smooth gradient lighting on curved surfaces can be achieved both with
an "Auto" method or with a macro file instruction set.

The video ends with the demonstration of the macro-a button.  The macro-a
files contain surface-modeling information on a project-wide scope.
Once you've built a macro-a file for a particular perspective, a single
click will auto-surface your entire project.

video length   4 minutes 10 seconds



NOTE: Do not use the tab key when making data entries in Notepad
      or in any other text editor.

      The tab key will introduce fatal errors for data-reading which
      cannot be reversed by any means.  Even copying and pasting the
      corrupt data into a fresh text file will not correct it.
      You would need to begin the data-entry from scratch using a
      fresh text file.

The data-entry samples and images in the 
right-hand panel follow the same chronology
as what you are reading in the left-hand panel.


Keep all the files in the folders they came in 
except where instructed otherwise, and do not 
delete any folders.

Your work with RogCAD will involve just two 
folders -- "empties" and "datah".  Within the 
datah folder, you'll want to create subfolders 
named as you see fit for storing data files for
projects that are not current, otherwise you'll 
end up with a lot of unrelated data files in 
your working folder (the "datah" folder).    

Leave all the files in the "empties" folder intact.
Copy files from that folder as needed, and place 
them into the datah folder with a new name suitable
for your project.

(The data folder in RogCAD for Windows is named 
"datah" to distinguish it from the "data" folder
used in RogCAD for DOS.)

There are five types of data files used in RogCAD,
and four of them come in x, y and z versions:

  s-.txt   ax-.txt   x8-.txt   cx-.txt   mx-.txt
           ay-.txt   y8-.txt   cy-.txt   my-.txt
           az-.txt   z8-.txt   cz-.txt   mz-.txt

Numerical data is entered into those text files as

  "standard" points  :      s
   + cubics

   cubic elements    :      ax,ay,az      

   strings of cubics :      x8,y8,z8

   curves            :      cx,cy,cz

   combination of    :      mx,my,mz

Each data file into which you've entered data is 
called a "group", and you name them as you see fit.

When running RogCAD you can display any or all of
those groups on screen.  Whichever group you've
most recently called for display is the "active"

Projects are typically best broken into groups
such as:


Three other important text files that are 
kept in the datah folder are:


In START.TXT, you can edit:

  default view
  default color palette
  default background color for CLS
  fast-change views

You must enter the names of your data files
into GROUPNAMES.TXT or else RogCAD will not
recognize them.

S-0.TXT is an x-y orientation pair of lines.
RogCAD will not run if that file is removed
from the datah folder.


Autocubes:     See right-hand panel 
                            beginning here -->

Depending on which type of data file 
you are using, autocube point numbers 
begin at one of the following:


A cube has eight points, therefore autocubes have
point numbers in accordance with the following

  4001 to 4008
  4011 to 4018
  4021 to 4028
  etc            Points xxx9 and xx10
                 are not used.

A cube has six sides, therefore autocubes have
plane numbers in accordance with the following

  4001 to 4006
  4011 to 4016
  4021 to 4026
  etc            Planes xxx7, xxx8, xxx9 and xx10
                 are not used.


This author typically separates exterior modeling
from interior modeling, and therefore does not 
typically model see-through window openings, 
which are illustrated immediately to the right. 
In fact, for strictly exterior modeling, exterior
walls are often just given zero thickness by 
virtue of using a single autocube to define the 
shell of the structure.

To achieve see-through window openings, one needs
to define wall sections as illustrated further 
down.  And that actually goes quickly, as many of
the values are simply repeated.

We'll pick up on that again after looking at the
two autocube diagrams below and to the right.



See the autocube diagram in the right-hand panel
for the point and plane numbering scheme for

As you build your model, you'll probably want to
make reference sketches on which to label points
and planes of your model.  It almost always comes
in handy.


The image immediately to the right is a repeat
of the incorrect method of creating window

It would not work with the auto-surfacing
routine because the walls would get auto-surfaced
over the window openings.

Rather, the walls need to be defined in segments,
thereby creating window openings.  In that case,
no autocubes are used for the window openings
themselves -- those openings exist simply as 
"absence of wall".


To the right is the model with those wall segments
defined, leaving voids which are regarded as
window openings.

The groups displayed here are:





It's important to break your project into groups
so that the auto-surfacing routine will work
properly on a project-wide scope.

(The RogCAD algorithm for determining overlapping
planes is not as sophisticated as what is found
in the most expensive software.  However, it's
beneficial to have your project broken in groups
for other reasons as well, so it's mostly a moot

To the right we see the group named
"s-simplefloor.txt" auto-surfaced.


Now, to the right we see the group named
"s-simplehouse-3.txt" auto-surfaced.


Finally, to the right we see the group named
"s-simpleroof-front" auto-surfaced.

Note that the lines representing shingles are
part of the auto-surfacing routine.

The spacing information for those lines was 
entered into the AUTOFRAMING section of 


Go ahead and run rogcad[version].exe

Click on the "group" button, then select
various groups for display.  It will be the most
illustrative if you select them from top to
bottom, clearing the screen after you've selected
all the groups of a cluster.

Click the CLS (clear screen) button to clear the
screen at any time.

Make sure to experiment with the view-change

M  (magnification)
V and H  (vertical and horizontal shift)
P/F XYZ  (perspective and focus)

Refer to the sample project videos higher on
this page to see some button-clicking in 

Below are still images that explain all the 
buttons and menu items.

Below that, we'll round out part one of these 
instructions by looking at data-entry more 

Extremely simple house:

See s-simplehouse-1.txt

STANDARD:            point numbers
1    0,0,0           followed by their
2    0,0,8           x y z values      
3    0,30,0                
4    0,30,8   
5    20,30,0    
6    20,30,8    
7    20,0,0     
8    20,0,8   
9    10,0,12    
10   10,30,12		            
999  999,999,999    end of data read

Use spaces or commas to separate 
numerical information.

Connect the points defined above,
or else RogCAD won't recognize the points:

1,2    3,4    5,6    7,8    1,3
3,5    5,7    7,1    2,4    4,6
6,8    8,2    8,9    9,2    6,10
10,4   9,10

Below, fewer standard points are defined,
while autocubes are used to define an inner and 
outer shell and to create simple window openings.

creating window openings, and is included as
a simple first example of using autocubes.

The correct method for creating window openings
is in the example that follows beneath this one.

See s-simplehouse-2.txt

1    10   1    12
2    10   29   12
3    10   0    12.5
4    10   30   12.5
999  999,999,999

1,2     3,4  
1,4002  1,4008  2,4004  2,4006
3,4012  3,4018  4,4014  4,4016

NOTE that we can connect standard points to 
autocube points, and we can define planes in
the same manner.

start                              rotation index
point  min xyz          max xyz    and base color
-----  -------          -------    --------------
4001   1,1,0            19,29,8          0,5
4011   0,0,0            20,30,8          0,5
4021   8,0,3            12,1,7           0,5
4031   0,4,3            1,8,7            0,5
4041   0,13,3           1,17,7           0,5
4051   0,22,3           1,26,7           0,5
4061   8,29,3           12,30,7          0,5
4071   19,4,3           20,8,7           0,5
4081   19,13,0          20,17,7          0,5
4091   19,22,3          20,26,7          0,5
999    999,999,999   999,999,999   0,0

Rotation indexes and base colors have been 
left at the default value for now.

Again, this is NOT the manner in which autocubes
are typically combined to build architectural 
structures.  It's for simple illustration.

Typically, you'll want to define autocubes in
a manner that will facilitate successful 
sorting of planes for auto-surfacing 
(automatic plane coloring).

That's covered in the example beneath this
autocube diagram:

incorrect window openings:

correct window openings:


Two images with menu buttons labeled:


    The enter key on your keyboard has no functionality in RogCAD.
    You must use the enter buttons provided on the user interface.

    Use your mouse to highlight and delete anything in the text boxes 
    as needed.  These little text boxes work just like any text displayed 
    by Windows.




While RogCAD is running, you can edit a data file, re-save it, and 
then recall that particular data group.  You might want to toggle 
the Show button to Hide to prevent wireframe lines displaying.

This does not apply to START.TXT or to GROUPNAMES.TXT.  Any editing 
in those files does not take effect until RogCAD is re-started.


There must be no line spaces in data files or in START.TXT within a 
defined section, since the data is read directly by the program.

Sections are plainly evidenced by a header in upper case lettering 
followed by a colon and a set of 999s at the bottom of the section 
(which tells the program to stop reading from that section).

Do not change the 999s or 0,0s at the end of the data reads.  
The program looks for those specific values.

Even sections without data must not contain line spaces 
between the header and the 999s.

(Line spaces are allowed in GROUPNAMES.TXT since that file is 
associated with a list box accessible at run time.)

The top of an s-.txt data file:

LIGHTDARK       Edit lighting direction preferences.
WIRECOLORS      Edit colors for wireframe line groups.
STANDARD        Edit data for standard points.
LINES           Edit data for point-pair lines.
AUTOPLANE       Edit data for planes.
AUTOCUBES       Edit data for autocubes. 
AUTOFRAMING     Edit data for framing lines.
TRANSFORM       Edit singles, resize, rotate, translate, wrap.

We already looked at:

   STANDARD points
   AUTOCUBES (single autocubes - not string of autocubes)

   earlier in this document.


Data editing in the text files:

Auto-surfacing editing:

Edit lighting-direction preferences by choosing the 
lightest and darkest sides for the planes of your data group.  
Refer to the autocube diagram earlier in this document.

Lighting-direction applies to all planes, not just those 
planes that are associated with autocubes.  The autocube
diagram serves as the guide all the same.

Only three sides of any rectangular element are visible for a
given perspective.  The RogCAD auto-surfacer subtracts 1 from
the base color of the side you specify as lightest, adds 1 to
the base color of the side you specify as darkest, and leaves
the third face color unchanged.

Assign a base color to your planes based on how you've set up 
your color palette.  Base color assignment is seen further down 
on this page.

Here we see side 6 designated as the lightest side
and side 3 designated as the darkest side.  Refer
to the autocube diagram higher in this document.


Wireframe colors:

You can break your standard points into five wireframe line groups, 
with each line group assigned a different color.

Here is what the wireframe color assignment looks like in s-.txt.
The first color is the background color for the data-file.
Wireframe line colors:
            LG1   LG2   LG3   LG4   LG5   cubics   cubics   cubics
255         254    3     3     3     3      3        3        3 

It's sometimes useful to add dummy points or planes 
to a data base in the course of editing.  Just add data 
that won't affect the  displayed output.  This could mean 
just repeating data, or defining points without defining 
point-pair lines to go with them.

This technique will save you from having to re-number 
points or planes.


Enter points for planes in a pattern consistent 
with framing lines and crosshatch lines.

Plane,  t1,b1,t2,b2,    direction,color
1   14,16,28,32              6,13   
2   29,32,30,33              6,13
3   20,18,27,25              6,13
4   27,25,22,24              6,13
5   2,4,10,12                6,13
6   6,8,10,12                6,13
7   4037,45,14,48            3,2
8   16,22,15,21              2,2
999  999,999,999,999   0,0

The direction value refers to which direction the 
plane is facing, in accordance with the auto-cube 

If you subject a plane to rotation using the 
transformation routines, then you will need to 
allow for that.

The color value is the base color, which is the
middle color of the three colors you choose for 
the plane.

Here is why we use the t1 b1 t2 b2 method.
The auto-surfacer will insert perspectively 
correct lines onto the planes entered into 

The two routines insert lines perpendicular to 
each other.  It's too difficult to ascertain which 
of the two routines to use for a given plane, so 
just experiment.  

If one is wrong - the other is right!

Plane, number of framing lines
6    24
1    5
2    16
14   5
4013   24
4012   24
4103   12

Triangular shapes can be treated just like four-
sided shapes when it comes to defining planes, 
cross hatching or using framing lines.  You simply
repeat one of the vertices.  It's as if one side 
of a four sided polygon had length zero.

    The three images in the right-hand 
    panel illustrate framing lines:

    Roof shingles, bricks,
    and a stick cabin.

Repeating cubics along an axis:

Here are examples of autocubes repeated along the x axis from an x8-.txt data file.

As with single autocubes, we specify minimum xyz values
and maximum xyz values.

The spacing dictates just that - how to space those repeating autocubes.
The units of measure are the same as used for xyz values.

First we see autocube block 200, meaning points begin at 2001.
End cube 208 has points 2081 to 2088.

Eight cubics will be drawn, spaced out along the x axis every 18 inches.

Below that we see block 300, with points beginning at 3001.
Seven cubics will be drawn, spaced out along the x axis every 18 inches.

We say "cubics" even though in this particular case, those cubics
are completely flat, two-dimensional, since we used 0 for both the
minimum and maximum value for z.

These flat cubics are 9" x 9" floor tiles, with a white and black
checker-board pattern.  By using additional blocks, we quickly tile
an entire room:  

      See the image of the kitchen 
      near the top of this document.

The final two values are rotation index and base color.

If you do not subject this data to a rotation by way of using
the transformation routines, then 0 is the correct value.

 90 degree => rotation index of 1
180 degree => rotation index of 2
270 degree => rotation index of 3
Other degrees => whatever works best: 0, 1, 2 or 3.

The rotation index and base color work in 
conjunction with the autosurfacing routine.

    x    y    z        x    y     z     spacing     end plane     rot,col
                                                   (201 - 299)   
    0    9    0        9    18    0       18          208           0,1

                                                   (301 - 399)   
    9    9    0       18    18    0       18          307           0,1

Cubics repeated along an axis, then mitered and beveled with transformations:


J plane   pl1   pl2   menu buttons

Keep in mind that these routines, as well as
the SJK (string of planes) routine, are
simply an alternative, or a possible addition
to, the auto-surfacing routine.

Also, keep in mind that these routines, if
utilized, are typically part of your macro-g
and/or macro-a file.

During your design phase, it's useful to test
your design using the menu buttons that 
correspond to these routines.

To incorporate these routines, as well as 
SJK (strings) discussed next, for planes
other than autocube planes, you must define 
your planes in accordance with the t1 b1 t2 b2 
methodology, as explained in the autoplane
and autoframing sections above.

You'll be prompted for a plane number 
and a color number.

Dense cross hatching occurs, coloring the plane.

J plane uses 8000 parallel lines.
pl1     uses 2000 parallel lines.
pl2     uses  500 parallel lines.

See SJK / String of planes up and to the right.


(SJK routine in macro-g and macro-a)

You'll be prompted for:

  a starting plane, an ending plane, the increment 

     "1" colors every plane from 
     starting plane to ending plane,  

     "2" colors every other plane,  

     "3" colors every third plane, etc. 

  a starting color, a color increment.  

     If you select a color increment of zero, 
     then every plane in the string will be 
     the same color.

Plane increments and color increments
can have a positive or negative value.

The SJK (sting of planes) routine is geared
for repeated cubics (autocubes) created
in x8, y8 and z8 data files,

and for creating either gradient lighting
or flat lighting on curved surfaces.

Repeatable cubic elements include:

  fence rails, posts, spindles, window elements, 
  construction framing members, bricks,
  cement block walls, etc.

You make use of the increment feature in SJK
to skip over planes in a patterned fashion,
using alternating colors as you do so.
You can reasonably simulate stone work with a
a little experimentation.


Use an increment of 10 or -10 to color a string 
of planes associated with autocubes.  Thus, for 
example, you can quickly paint autocube planes 
433, 443, 453 ... 623, which are all facing the 
same direction; typically using the same color 
for each.


Transformation snippets are stored at the bottom
of the data fles.

Here is a sampling of transformation snippets 
being used.  They are from three projects, so the 
three groups of snippets are not related to each 

You can see from the final group of snippets that 
we conduct transformation on top of transformation 
on top of transformation to our heart's desire.

You can skew a string of cubics, such as for 
creating mitered framing members.  Step 10 will 
transform points of successive cubics:

first, last, tranx, trany, tranz
2002   3102   0     2.24   -.415
2003   3103   0     2.24   -.415
999,999              999,999,999

Skewing single cubics:
Point number, New value
2006          4.3
2008          6.7
2026          4.3
2028          6.7

first, last, zangle, tranx, trany, tranz
1       358    270     -7    -13     0
999,999      999              999,999,999
first, last, zangle, tranx, trany, tranz
1        38      90    23.89   41.2    8
201      238      0    .125    62.72   8
401      438     90    .417    45.49   8
999,999      999              999,999,999
first, last, multX, multY, multZ
1  7998     .75    .75    .75
999,999              999,999,999
first, last, tranx, trany, tranz
1    7998     .5     0    0
999,999              999,999,999
first, last, yangle, tranx, trany, tranz
1    7998    -90       0     0    0
999,999      999             999,999,999
first, last, xangle, tranx, trany, tranz
1    7998    -90        0    0      0
999,999      999             999,999,999

---------------- End pasting here.

The images in the right-hand panel are 
examples of skewing, rotations and translations.

They are not related to the values in the 
snippets above.

Creating mitered framing members by skewing
cubics with STEP10TRANSLATE snippet:





  screen capture and screen set

  macro files (macro-g and macro-a)



Also see the section on data-file editing for auto-surfacing

RogCAD's auto-surfacing is performed by one of three
plane-sorting algorithms.  On the RogCAD interface, they
are designated by the buttons auto1, auto2 and auto3.

Depending on the arrangement of modeling elements and 
current perspective, any one of them might work best.

  The better job you do of defining points, planes and
  cubics in your data files -- the better the auto-sorting 
  of planes works:

  You might define planes or cubics separately for roof 
  overhangs.  And as discussed early in this document, you
  should create openings in walls by defining sections of 
  a wall, rather than defining a cubic as the opening.

  You should be able to achieve accurate plane-sorting
  for the auto-surfacing of your model with just a little
  care in defining the elements in your data groups.


  The better job you do of splitting your project design 
  into groups -- the easier and more enjoyable time you'll
  have with your project.

  Generally speaking, the more groups -- the better.

  There is no extra work involved to speak of
  and has the following advantages:

    It gives you more flexibility for 
    customized presentations of your project.

    It gives you methods for analyzing
    elements of your project.

    It keeps your screen uncluttered during
    the design phase.

    It makes it easier to use portions of
    your design in other projects.

If you need to make a correction after auto-surfacing 
completes, click on the "Plane" button underneath the auto3 
button before switching to another data group.  You will 
need only to provide the plane number.  It will be painted
with the correct color and with whatever framing lines are 
associated with it.  Be sure to have the hide/show button 
toggled to "hide" before doing that, so that there will be 
no wireframe lines drawn.

  If you want to call auto functions for the active 
  group one after another, such as when clicking auto2 
  right after auto1, call the group again first, or you 
  will get crazy colors.

To repeat what's stated on the menu-explanation diagram 
further up:  HL1, HL2 and HL3 correspond to auto1, auto2 and auto3.
Instead of using color, they create a surfaced model in white
with black border lines.

The Auto C button is for auto-surfacing curved surfaces with
smooth gradient lighting.  This is discussed in more detail
in the curves section further down.

There is no auto-surfacing button for the mx,my,mz data 
groups in the downloadable versions of RogCAD.  Those data 
files are for combining rectilinear and curved elements,
and the auto-surfacing routine for those groups combine
the curve painting routine with the standard routines,
necessarily sorting and painting the rectilinear elements
ahead of the curved elements; meaning that it's only useful
if your curved elements are in front of all the rectilinear

The primary purpose of having mx,my,mz data groups is that
you can build a skeletal version of your project using
just some major rectilinear and curved elements in one
data group, thereby allowing you to rotate a wireframe
model on the screen that shows the entire project so-to-speak
all at once -- no stopping to switch groups.  It's a handy
way to choose good perspectives for viewing your project.

You can actually use the normal auto buttons to auto-surface
the mx,my,mz groups, but you will get some odd colors on
the curved elements.

Finally, if you find that the manner in which you've defined 
elements in a data file is producing too many errors in the
auto-surfacing function, it's easy to define a small group
as needed at the end of your design process by appropriating 
whatever data you need from your troublesome data file(s).
Redundancy is fine.

  The other ever-present and excellent option for
  auto-surfacing, or auto-surfacing correction, is
  the macro-g and macro-a files.


To capture your screen in a .bmp image file,
click on the cap bmp button and enter a filename
including the .bmp extension.

To set a .bmp image, click on the set bmp button 
and enter a file name including the .bmp extension.

You can thus back up your work, provided you use
the exact same perspective/focus/magnification/
vertical shift/horizontal shift when you continue
your work.

You can also use the set bmp function to import
a photograph for use as background for your model.

This function works in conjunction with the
pic on / pic off button.

If you have "pic on" activated, then the .bmp image
remains displayed even as you move your wireframe
model about on screen.  This is a useful method
for duplicating perspectives based on a photograph.

Also, with "pic on" activated, the .bmp image will
disappear when you click CLS or FILL, but it will
reappear when you click the SET button.

With "pic off" activated (default mode), the .bmp
image disappears when moving your wireframe model
about.  It also disappears when you click CLS or
FILL and won't reappear unless you load the image
again using the set bmp button.

    The right-hand panel shows a RogCAD model
    which made use of imported .bmp images.

macro files


  macro-a = macro-1, macro-2, macro-3, etc.

  There is no file named macro-a.  
  It is short-hand terminology.

  macro-g performs functions on a per group basis.

  macro-a performs functions on a project-wide

Update your macro-g.txt file and possibly 
your macro-[1,2.. ].txt file(s) as you grow 
your design.

The set of instructions pertaining to your
data groups are the same in macro-a and macro-g.
If one of those macro files gets ahead of the
other during development, that's okay.  Just 
paste sections from one macro to the other.

The macro-a format on a per group basis is
slightly different from the macro-g format,
but it is still easy to paste information from
macro-g to macro-a and vice-versa.

Both types of macros come in handy.  The macro-g
file is nearly indispensible.

You can use those macro files to get your design
re-displayed quickly on the screen, provided you
have not changed your perspective significantly.

Otherwise, the auto-surfacing routine is the
method for getting a good surfaced-model of 
your project on screen.  It has little or no 
dependency on perspective point.

Regardless of whether or not you use the
screencapture/screenset method to re-display
your model, you should still make use of the
macro-g and macro-a files.  They give you
more flexibility.  

They are fun!

To make use of the .bmp screencapture/screenset
as a back-up for your work, you must use the 
exact same view when doing a screen set as was 
in effect when you made the .bmp screen capture.

Otherwise, any subsequent modeling will not
mesh with the bitmap (.bmp) image.


First, note the following

In macro-g.txt only:

You can disable sections for storage by placing 
an apostrophe in front of the name.  You can 
also store bits of data by placing them below 
the 0,0,0 marker at the bottom of a section.  
You thus give yourself the opportunity to enable 
and disable whole sections or bits of data, 
depending on which perspective you've chosen for 
the macro.

You can of course also save an entire macro-g 
file pertaining to a particular perspective by 
giving it a meaningful name and storing in your 
datah folder or wherever.  Just change its name 
back to macro-g.txt to make it the current 
macro-g file.

macro-a of course already has various names 
associated with it, namely macro-1, macro-2,
macro-3, etc.  There is no file named macro-a.
macro-a is simply the term used to refer to the 
files just mentioned.

Building a macro-g file


  macro-g file = macro-g.txt

Look at the macro-g files in the datah folders
of the various projects that are included in
this RogCAD software bundle in order to fully
appreciate the manner and style of creating
macro-g files.

macro-g.txt is the macro file into which you type
modeling instructions for as many data groups as 
you wish.

Each section of instructions in the macro-g file
is for a particular data group.

You can have only one section of instructions 
for each particular group in macro-g.txt.

In macro-g.txt only:

Your sections for data groups can be placed
in any order.  RogCAD will find the group it 
is looking for, which of course is the active 
group (the group you last called using the 
Group button).

After calling a data group, you click the macro-g

You can set the density for plane coloring used 
by the macro files.  200 - 500 are good numbers for 
MACROSJK, and 400 - 8000 are good numbers for
for MACROPLANE.  Those are the two values beneath
the filename in the snippet below.

This is what an empty section in
macro-g.txt looks like:


(We of course also use data files of the 
ax,ay,az,cx,cy,cx,mx.my,mz,x8,y8,z8 variety 
in both the macro-g file and the macro-a files.)

Refer to INSTRUCTIONS PART ONE and to the
interface labeling to review what the above 
five functions do.

They work in the precise same manner in the 
macro-g file and the macro-a files as they 
do in the RogCAD interface.

Here is what a macro-g section might look 
like once you've entered instructions:

   41  49  1  6  0
   101 109 1  6  0
   81  89  1  5  0
   21  24  1  5  0
   61  63  1  6  0
   1   5   1  6  0
   1  51  11  31  90  6
   61 111 71  91  90  6
   2   12  7
   3   13  7
   4   14  7
   12  32  6
   13  33  6
   73  93  6
   75  95  6
   77  97  6
   79  99  6

Do not change or rearrange the delineators.

As always, there must be no line spaces
between the lines of data.

And as always, data may be separated by either
a space, spaces, or a comma.

Keep your columns straight for easy reading.

end of macro-g


Refer to MACRO-G immediately above for general

The differences between macro-a and macro-g
are as follows:

  In macro-a, there must be no line spaces 
  between sections.

  The filenames are specified in a different

  macro-a has two additional functions in
  the group sections, namely AUTOSURFACE

  In macro-a, the sections are read by RogCAD 
  in sequence (the order in which they appear.)

  In macro-a, you may repeat data-groups.
  It comes in handy.  For instance -- 
  framinglines are carried out after planes
  are painted.  But perhaps that sequence
  is not working for you in a particular
  situation.  The solution is simple --
  Just add another section for that same
  data group, this time with values entered
  only for plane painting.

  Copy/paste makes everything go fast.

Next, we look at an example of a macro-a 
file containing four group sections.

At the end of this snippet, notice the 
GROUPEND command.  It ends the data-read.

There must be just one MACROGROUPS header
and one GROUPEND in a macro-a file.

And just as with macro-g, do not make any
changes to the delineators.

MACROSJK and MACROPLANE density is set at
the beginning of the macro-a file and 
applies to all data groups in the macro-a


To change a single color:

  Make sure the RGB increment is set to zero.  
  (small gray Inc button)
  The default increment value is zero.

  Type in the color number you wish to change 
  into either the top or bottom box to the left 
  of the plus and minus buttons.

  Click each of the three "plus" buttons one time 

  Now you will see the current RGB values for the
  particular color.

  Select a non-zero increment.  "1" or "5" is 
  usually the best choice.

  Click plus or minus buttons and notice both the
  text box value changing and the color in the
  color chart changing. 

  You can also type in RGB values followed by
  clicking the enter button.  
  Valid RGB values are 0 to 255.

Save Palette:

The changes you made to the palette are not saved
as a new .pal file unless you click the "Save
Palette" button and give the file a new name (or
the same name as the current .pal file if you're
sure you want to overwrite that file).

Do not include the .pal extension.

Get Palette works the same way.  

Palettes are saved to the pals folder.

You can use the Make bmp button to create a .bmp
picture of the current color chart.  Do type in
the extension .bmp after your filename.  You will
find your bitmap file in the pal-bmps folder.

To use the Graduated feature: 

Type in a start color in the left upper box 
and an end color in the left lower box.  

The upper box must contain a lower numbered 
color than the lower box.  

Type in starting and ending RGB values. 

The red value must be higher in the upper box 
than the red value in the lower box.

Same of course is true for green and blue.

Click Graduated, then its enter button.

Of very little importance:

BC background color button is for changing the
color used in conjunction with the FILL button.

To change background color:

  Make sure the RGB increment is set to zero.

  Click on the BC button.

  Type into the box just above the Back Color
  button your desired color number from the
  color chart.

  Click each of the three "plus" buttons 
  immediately to the right, one time each.

  Click the enter button immediately to the right.

  (All these clicks are on the lower set of the
  color buttons.)  This will fill the screen with
  your desired color.

From then on, during your current session, the 
screen is filled with that color when you click 
the Fill Screen button.  

The above method is rarely used.
Background color is edited in START.TXT.

In the video below, an old house photo is imported
into RogCAD.  Perspective, focus, magnification,
vert & horiz shift are adjusted until the original
parameters of the old photograph are matched.

The pic off / pic on button is set to pic on.

This type of work has come up several times for
this author.  Old photos are often all we have to
go by when modeling buildings or portions there-of
that no longer exist.

This author has been commissioned for just such
tasks by renovators of historic buildings.

After clearing the screen again, the "SET" button
is clicked, restoring the .bmp image:

Get commissioned for historic restoration.
41 seconds:

The images below were all helped along by
utilizing the macro text files:

macro-a, continued from left-hand panel:

In the snippets that follow you'll see:

steps    (the front steps of a house)

s refers to s type of group.
s-steps.txt is the group thus referenced.

The number entered into the AUTOSURFACE
function corresponds to either Auto1, Auto2, 
Auto3, Auto1N, HL1, HL2, HL3 or HL1N
as used in the RogCAD interface at run-time.

1 = Auto1  2 = Auto2  3 = Auto3    7 = Auto1N
4 = HL1    5 = HL2    6 = HL3     10 = HL1N

Auto1N and HL1N can be used for narrow planes.
The object might get surfaced a couple seconds

Lightest and darkest side for auto-surfacing
is set in the data-files.

The other additional function in macro-a is
the HIDESHOW function.  When the value is
set to 0, the wireframe lines of that data group
will not display.  That setting is by far the 
most common, since wireframe lines would defeat 
the purpose of surface-modeling.  However, 
situations do come up where it's actually 
desirable to display the wireframe lines for
a data group as part of the finished model.

1  9  1  4  0
121 129 1   10  0
21  29  1   10  0
1   9   1   6   0
61  70  1   10  0
41  49  1   6   0
101 109 1   10  0
81  89  1   6   0
1  11  10  20  18  7
1  10  11  20  6   5
41 51  50  60  16  7
41 50  51  60  5   5
81 91  90  100 11  7
81 90  91  100 3   5
233 234 235 236  9  7
233 235 234 236  6  6



RogCAD now has a Grad 150 button on its
interface.  It works like the Graduated
button, except that you enter just high-
value numbers for red, green, blue in the
top red/green/blue row.  

Graduated colors will fill the chart from
colors 1 to 150.



Curved surfaces are built from one of three basic
orientations: x based, y based, or z based.  An
arched doorway would be x or y based.  A curved
walkway would be z based.  Other objects might 
land somewhere in between and be modeled using 
either x, y, or z, or rotated through any angle 
by using the TRANSFORMATION functions.

The following image shows some simple arcs made 
with cx-.txt.  To the right is a snippet from 
cx-.txt used to generate them. 

You'll notice in the images above and below that 
each arc consists of two long curved parallel
lines and 50 short lines connecting them.  What 
we really have are 49 small rectangles simulating
a curve.  Each (double) curve consists of 100 
data points, regardless of the arc length.

You can specify any even number of points for
your curve.  

The number of planes generated will be half the 
number of points you specify minus 1.
More on that further down.

These points, lines and planes are generated
automatically by the curve routine.  You just 
specify the start degree, the arc length, two
radii, the offset, and the modifiers (which 
consist of three numbers).  

If the radii (y and z in this case, since the
curve is wrapping around the x-axis in cx-.txt)
are equal, then you will generate a perfectly
circular curve.

If the radii are not equal, you will generate an
elliptical curve.

Each curve must consist of two curve-lines, though
they need not be uniform within that pair in any 

You can vary the radius between the top line and
the bottom line, or you can vary the offset, or 
both, depending on what architectural element you
are building.

You can generate a limitless variety of irregular
curved surfaces.

You can also make the two curve-lines (top line 
and bottom line) identical, thereby effectively 
generating a single lined curve if you need to.

You can terminate the data read by placing the
999 beneath whichever line pair you wish to be 
your last.

Curve painting

Keep in mind that RogCAD's auto-surfacing
routine will paint your curves for you with
smooth gradient lighting.  

The Auto C button activates it at run-time.

You edit DARKESTCOLOR in the cx,cy,cz,mx,my,mz
data files by specifying a color number.  Your
curves will be given smooth gradient lighting,
with the closest plane based on perspective 
receiving the lightest color.

But there are plenty of circumstances where
you will prefer to use the macro-files,
or -- when testing your design -- the string 
button on the user-interface.

The string button is the equivalent of the 
SJK routine in macro-g.txt and the macro-a files.

The methods described below might seem a bit 
slow, but once you've entered the numbers into
macro-g.txt and/or macro-a.txt, you can display 
the curves in surfaced form with the click of
a button.

The above image shows the same simple arcs of the
previous image after being auto-surfaced using
the string routine manually or as part of 
macro-g.txt or a macro-a text-file.

You can of course paint the planes of a curved
surface one at a time, and you might find
yourself doing that for a plane here and there
on the user-interface while testing your design.

But of course the simplest way to paint an arc 
or a portion thereof, is to use the string 
(or SJK) method. 

See the SJK section higher in this document,
just above the TRANSFORMATIONS section, to review
the methodology.

Devote enough of your color palette to allow for
the number of points (and therefore planes) you
are specifying for your curve data.

You use the "graduated" button on the user-
interface to create a smooth gradient differential
for your palette over your specified range of
color numbers.

Typically, when shading a full circle object
using the string button (or SJK routine), one 
would shade the planes furthest away first,
covering 180 degrees, then the planes that are

And recall that a color increment of 0 will color 
all the planes the same color.

Here is the code snippet that generated the image
to the left.

of                radius   offset  weight
points  start,arc  Z  Y    X,Y,Z  left,inc  stretch

         90  180   10,10   0,0,0      0,0       0
         90  180   11,11   0,0,0      0,0       0
        180  180   13,13   0,0,0      0,0       0
        180  180   14,14   0,0,0      0,0       0
        270  180   16,16   0,0,0      0,0       0
        270  180   17,17   0,0,0      0,0       0
        350  180   19,19   0,0,0      0,0       0
        350  180   20,20   0,0,0      0,0       0
        360  180    0,0    0,0,0      0,0       0
        360  180    0,0    0,0,0      0,0       0

number of points/pair must be even number.

number of planes/pair = (num of points / 2) - 1

num of pts   point numbers    plane numbers
----------   -------------    -------------
20            1-20             1-9    
20           21-40            21-29 
34           41-74            41-56 
12           75-86            75-79

              8000 max

Up to 400 pairs (you'll never come close).

Obviously, it's advantageous to use multiples
of ten for number of points if you want to
get a handle on what the plane numbers are.

There can be circumstances where you'll want
to vary the number of points in the sections 
(pairs of curve lines) within a data file.

But to make things easy to keep track of,
it's best to use the same number of points
throughout a data file.

Beneath this image of chairs, you'll see the data that generates the chair-back.


number                   radius            offset             weight
of                      ---------         ------------       --------
points  start   arc      X      Y         X     Y     Z      left inc   stretch

        295.9   51.8    17.75  17.75      7   17.05  32.5      0    0      0
        299     58      19.5   19.5       7   17.05  32.5      0    0      0
        299     58      19.5   19.5       7   17.05  32.5      0    0      0
        299     58      19.5   19.5       7   17.05  20.75     0    0      0
        299     58      19.5   19.5       7   17.05  20.75     0    0      0
        295.9   51.8    17.75  17.75      7   17.05  20.75     0    0      0
        295.9   51.8    17.75  17.75      7   17.05  20.75     0    0      0
        295.9   51.8    17.75  17.75      7   17.05  32.5      0    0      0
         0      90      10     10         0     0     0        0    0      0
         0      90      10     10         0     0     0        0    0      0

Complex curves

You can model complex shapes, such as a boat hull
with complex curved boards, each board molded to 
its neighbor.  Molding one complex curve to another
is very simple. 

You simply repeat the bottom line of a pair as the
first line of the next pair.  The variation need
(and typically should) occur only within a curve 
pair (of lines).

The "left,inc" feature, as seen in the data segment
below, is the trickiest to use.  Comprehensive 
instructions for it are just a bit difficult to 
put into writing.  

What it does is deform your curve in a "weighted"
fashion in the direction parallel to the axis of 
rotation.  You can weight the deformation in 
various ways by choosing various values for "left" 
and "inc".  

More on that after the data segment:

More discussion follows this data section:

Here is the data that generated the boat hull with the dark blue background above:

number                   radius            offset             weight
of                      ---------         ------------       --------
points  start   arc      X      Y         X     Y     Z      left inc   stretch

          90    160     18      44        0     0     8       -90   2.6   -4.0
          90    160     18      43        0     0     7       -90   2.6   -3.6
          90    160     18      43        0     0     7       -90   2.6   -3.6
          90    160     17.33   41        0     0     5       -90   2.6   -3.2
          90    160     17.33   41        0     0     5       -90   2.6   -3.2
          90    160     16      39        0     0     3       -90   2.6   -2.8
          90    160     16      39        0     0     3       -90   2.6   -2.8
          90    160     14      37.5      0     0     1.5     -90   2.6   -2.4
          90    160     14      37.5      0     0     1.5     -90   2.6   -2.4
          90    160     11.33   36        0     0     0       -90   2.6   -2
          90    160     11.33   36        0     0     0       -90   2.6   -2
          90    160      8.33   35        0     0     -1      -90   2.6   -1.6
          90    160      8.33   35        0     0     -1      -90   2.6   -1.6
          90    160       .33   33        0     0     -3      -90   2.6   -.8
          0      90      10     10        0     0     0        0    0      0
          0      90      10     10        0     0     0        0    0      0

Don't worry about what "left" or "inc" stand for.
Try numbers between -90 and 90 for the value of 

Choosing left = -90 and inc = 1.3 will gradually
pull the curve higher from one end to the other.

Having non-zero values for "left" and "inc" leads
necessarily to assigning a value for "stretch".

"stretch" provides the magnitude of the deformation.

Assign positive or negative values, and remember,
you can modify the top curve-line differently from
the bottom curve-line with any of these variables.

Choosing inc > 1.3 when left = -90 will cause the 
curve to begin to dive back down again along its 
way.  The higher the value for inc, the sooner the
curve begins to dive again.  

Setting left = -90 and inc = 3.5 will bring the 
tail end of the curve back down to the same height
as the front end.  Very high values of inc create 
a roller coaster curve.  The lower the value of
"left", the higher the value "inc" can be without
getting the roller coastering.

Different values of "left" yield different shaped
curves, even if the overall rise is the same.  

By the way, the use of the words "height", "rise" 
and "dive" above are arbitrary.  Depending on which
curve module (x, y or z) you're in, those terms 
could just as well be referring to sideways motion.


The first use of this routine was the modeling of
port holes on the hull of a simple ship, the image
of which is a little higher on this page.

The key to success in using this routine is lots of
experimenting, which fortunately does not take much

The databases below will at least provide you with
a good baseline.

The most important thing to remember is to specify
spacing = 0 in the "string of autocube" sections.

The data files for that are x8, y8 and z8.

Determining the correct xyz values for this 
routine can be vexing.  To avoid confusion, you
might want to rely on the ZWRAP transformation
snippet for all tasks of this nature, then rotate 
your database with the rotation snippets.

  min xyz       max xyz    spacing  cube  rot,col
  -------       -------    -------  ----  -------
-1  -1  -.5     0   1  .5     0      35     0,52

 0  -1  -2      1   1   2     0     135     0,52



-1  -1  -2     0   1   -1     0      35     0,52

 0  -1  -2      1   1   2     0     135     0,52


In the TRANSLATE snippets below, we create a
diameter for our curve.  Since we're wrapping
our curve around the y axis using YWRAP (see
further down), we create a diameter by translating
the x or z values.  Switching from x to z would 
necessitate switching the x and z values in the 
AUTOCUBE section above.

Transformations snippets for hub1 and hub2

               x     y     z
1      358     50    0     0
999,999      999,999,999

1001  1358     50    0     0
999,999      999,999,999


start   start            how    lift
first   last    angle    many  
1       8       10       36      0
999,999         999        999,999

1001    1008    10       36      0
999,999         999        999,999

You'll notice in the YWRAP snippets above for hub1 
and hub2 that the first and last point refer to
the first autocube of the string.

The number under "how many" needs to be less 
than or equal to the number of cubics you are 

Our end cube here is 35, therefore we are 
stringing 36 cubics (0 to 35).

The lift value is a simple thing.  You'll see it
used in the ZWRAP snippet for the spiraling steps
below.  Any number, decimal or whole, is valid.

  min xyz       max xyz    spacing  cube  rot,col
  -------       -------    -------  ----  -------
-3  -4   0     3   4   1      0     71      0,42

Transformations snippets for steps

first  last     x    y    z  
1      718     0    50    0
999,999         999,999,999
start    start    angle      how 
first    last     per cube   many   lift
1          8        10       71      1
999,999           999            999,999





Utilizing four methods to generate six facade elements in a single CAD model:

The roof shingles, siding and garage door
joints are simulated with framing lines.

The rock gardens utilize SJK, varying both 
plane and color increments.

The cement-block wall on the garage is 
modeled by using repeating autocubes in 

The natural stone on the front of the house
is a photograph.  

  Paint Shop Pro version 4.12 freeware is 
  used to give the photograph a perspective
  that matches the CAD model.

  The photograph is then imported into RogCAD
  using the set bmp button after the ground
  data group has been called.

  The rest of the data groups are then
  called by way of a macro file.  

  This is just one of the many advantages 
  of splitting your project into many small 


We use the x8,y8,z8 data files to create custom 
grids by which to analyze the positioning and 
sizing of the elements of our project.  Using
multi-color lines within the grids and within 
your objects makes for easy distinctions and 

x8-X-Y-GRID.txt, x8-X-Z-GRID.txt, x8-Y-Z-GRID.txt
are general-purpose grids included in the sample
datah folders.  To increase or decrease their
magnification, you could simply use a RESIZE
snippet.  Though to avoid confusion, you might
want to change the values in the AUTOCUBES

It's definitely handy to use the TRANSLATE,
ZROTATETRANSLATE snippets to shift grids around
from time to time, possibly saving various
incarnations of your grids using various names.

Plan views and side elevation views of your
model are obtained by choosing the x / y / z
"full" or "zoom" views from the "fast change"
button's list box.  It's useful, especially in
conjunction with grids as a background, for
showing you just what values are needed for
rotating and sliding your objects using the 
transormation snippets.

You can also use a RESIZE snippet to create a
plan drawing by setting all the z values in your 
data file to zero.  Similarly, you can create
side elevation views by setting x or y values
to zero.

You can take your perspective point inside an
object.  Some errant lines can occassionally
appear in such case (a quirk inherent in the
programming language used to create RogCAD).  
Try shifting your perspective a bit.  If errant 
lines persist, you can simulate an inside view 
by placing your perspective point outside the 
object and adjusting your magnification and 
focal point to create the same view as if you 
were truly inside.  RogCAD allows for wide 
angle lens shots by bringing the perspective 
point in close and selecting a focal point and 
magnification to create the desired effect.

x8-.txt was used to make three grids:


            001-198   201-298   401-598   601-798
              200       200       200       231

The z values are all zero of course.

The top three rows have spacing of two
which yields actual spacing of one 
(figure the logic) and form the gray lines 
of x8-X-Y-GRID.txt.

The 600 group cubes have spacing of ten, and
form the red lines of x8-X-Y-GRID.txt.

300,400,500 are duplicates of 000,100,200.
700 is a duplicate of 600.

By subjecting 3001 - 5998 and 7001 - 7998
to a rotation and translation we achieve 

Additional rotations produce x8-Y-Z-GRID.txt.

0  0  0      1  65  0       2       9        0,0
0  0  0      1  65  0       2     109        0,0
0  0  0      1  65  0       2     209        0,0
0  0  0      1  65  0       2     309        0,0
0  0  0      1  65  0       2     409        0,0
0  0  0      1  65  0       2     509        0,0
0  0  0      1  65  0      10     606        0,0
0  0  0      1  65  0      10     706        0,0


first, last, zangle, tranx, trany, tranz

3001   5998    90      65      0      0
7001   7998    90      65      0      0
999,999      999             999,999,999
first, last, xangle, tranx, trany, tranz

1     7998     90      0      0      0
999,999      999             999,999,999
first, last, yangle, tranx, trany, tranz

1     7998     90      0      0      0
999,999      999             999,999,999