www.schorsch.com

Free Downloads

Contact | Sitemap | Search

Spacelin manual page

Table of Contents

Synopsys

    SPACELINES       3D construction lines
    FLATLINES        2D construction lines

Description

Spacelines/Flatlines are an Autocad extension to create auxiliary construction lines on a special layer.

Platforms

Currently, the following platforms are supported: (For R11, only english language versions)

Installation

Copy the application file "spacelin(.exe|.arx)" and the slide library file "spacelin.slb" to a location on your hard disk drive that Autocad searches from its "acadprefix" system variable.

The Autocad system variable "acadprefix" is automatically set from the "ACAD" environment variable on startup. Please refer to your systems user manual of your specific operating system platform to find out about how to set environment variables.

If you don't know how to proceed with the following steps, ask your system manager to help you. The program will still work without, but you will use it with much more convenience if you do so.

User Interface

Commands acting in 2D have names starting with "FL..." for "Flatlines". Commands acting in 3D have names starting with "SL..." for "Spacelines". Please refer to the actually installed program parameters file "acad.pgp" for the names of the keyboard shortcuts defined for your installation.
Points, vectors, angles or distances may be specified on the command line or interactively on screen. Most of the functions prompt for selecting one or more edges in the existing drawing as reference for positioning lines in space. The prompt:

    Edge:

accepts the selection of almost every straight edge in a drawing to specify either a direction vector, an angle reference or a location in space. There is no limitation whether this edge belongs to a specific entity type or not as long as the entity contains straight edges. Point, arc, circle, shape and text entities as well as curve fitted meshes and polylines do not contain straight edges. In R14, entities defined by other extension applications may or may not contain straight edges to select. Currently, only the entities defined by the built in acis modeller are recognised.

The menufiles sl11/sl12/sl14.mnu offer popup, screen, and icon menu sections with all spaceline and flatline commands for Autocad R11, R12 and R14 respectively. The spacelin.pgp file contains recommended keyboard shortcuts for many of the commands. You are encouraged to include the contents of those two files to your standard acad.mnu and acad.pgp files for convenience.

3D Frame

Length of all lines is restricted to fit inside a virtual box defined as the equivalent of drawing limits in space. If not explicitly set, this 3D frame shares X and Y values with the normal drawing limits, with both Z values set to 0.
The 3D frame settings are always relative to world coordinates and can be modified with the commands "SLFRAME" and "FLFRAME". The latter will not change Z values. There is a seperate set of frame extent values maintained for modelspace and paperspace. For obvious reasons, the paperspace frame does not have any Z values. The commands "SLLIM" and "FLLIM" reset the X and Y boundaries of the 3D frame to drawing limits.
The volume of the 3D frame can be displayed by the command "SHOWFRAME". This command does not modify the drawing database. The frame will just be displayed temporarily at the current viewport until the next redraw. The command "SHOWFRAME"can be used transparent to other Autocad commands if selected from the menu.
If a line to be generated by any function fails to pass through the virtual box of the 3D limits a warning message
    line [n] out of 3D limits!

is displayed and the line is not created. The number [n] is only displayed for those functions generating more then one line at a time.

2D commands:
FLFRAME
Set X and Y components of line frame.
FLLIM
Set X and Y components of line frame to limits.
3D commands:
SLFRAME
Set all components of line frame.
SLLIM
Set X and Y components of line frame to limits.
General command:
SHOWFRAME
Display frame extents until next redraw.

2D Versus 3D

Most functions exist in each a 2D and a 3D version. In 2D, points and selected edges will be projected to the X/Y plane of the current UCS (resp. to the current elevation) before processing. These commands are designed for use in plan view supporting 2D drafting operations. If the view is not plan to the current UCS, a warning message:
    View is not plan to UCS. Command results may not be obvious.
will be issued. Still, even 2D lines cannot be generated if they fall outside the 3D frame because the current UCS might be placed in an arbitrary position and angle relative to the World coordinate system.

In 3D Commands, entered values will be processed directly in relation to the current UCS. However, if the lower and upper Z value of the 3D frame are identical, most of the 3D lines are likely to be out of range.

Note that some auxiliary commands are supplied in each a 2D and a 3D version of identical behaviour for orthogonality.

Commands

SLX   SLY   SLZ      
Parallel to X/Y/Z Axis of UCS.
FLX   FLY            
Parallel to X/Y axis on current elevation.
 
SLXY  SLYZ  SLZX     
With angle parallel to XY/YZ/ZX plane of UCS.
SLXZ  SLZY  SLYX     
With angle parallel to XZ/ZY plane of UCS.
FLXY  FLYX           
With angle to XY/YX plane on current elevation.
 
SLVECT    FLVECT     
Parallel to a vector in space/on current elevation.
SL2POINT  FL2POINT   
Along two points in space/on current elevation.
SLPARAL   FLPARAL    
Parallel to an edge in space/on current elevation.
SLNORM    FLNORM     
Normal (perpendicular) to an edge in space/on current elevation.
SLINTER   FLINTER    
Interpolating edges in space/on current elevation.
SLDIST               
Normal (perpendicular) to two edges in space (shortest distance).
 
FLGRID               
Grid on current elevation (ignore frame).
FLRECT               
Rectangle on current elevation (ignore frame).
 
3DLIM     SHOWLIM    
Set/show 3D limits.
SLON      SLOF       
Switch layer ZZ_SPACELIN on/off.
SLDEL                
delete visible construction lines.
 
SLHELP    FLHELP     
List available commands in 2D/3D.

Deleting Lines

the commands "SLDEL" and "FLDEL" delete all construction lines visible in the current viewport (after a "Yes or No" prompt). for technical reasons this commands work only in non perspective views. Of course, the auxiliary lines can also be deleted manually by the "ERASE" command and manipulated by any other Autocad command. They will still be recognized by "SLDEL" and "FLDEL", as long as they are not moved to another layer or put inside a block.

2D command:
FLDEL
Delete all construction lines visible on screen
3D command:
SLDEL
Delete all construction lines visible on screen

Layer Switches

Since construction lines are inserted on the special layer "ZZ_SPACELIN", visibility can be turned on and off with that layer. The commands "SLON" and "FLON", or "SLOF" and "FLOF" respectively turn the layer "ZZ_SPACELIN" on and off.
Please note though, that the commands creating new lines will not turn on the layer "ZZ_SPACELIN" again, so that lines created while it is off will stay invisible until it is turned on again manually. This may lead to confusion in some cases. For the same reason it is not recommended to freeze the layer "ZZ_SPACELIN".

2D commands:
FLON
Switch Layer ZZ_SPACELIN on.
FLOF
Switch Layer ZZ_SPACELIN off.
3D commands:
SLON
Switch Layer ZZ_SPACELIN on.
SLOF
Switch Layer ZZ_SPACELIN off.

Axial Functions

Lines will be drawn in parallel to one main axis of the current UCS. The commands repeat asking for a point to fix the position of each line. Enter <return> to exit the loop.

2D commands:
FLX
parallel to X axis on current elevation.
FLY
parallel to Y axis on current elevation.
3D commands:
SLX
parallel to X axis in space.
SLY
parallel to Y axis in space.
SLZ
parallel to Z axis in space.

Angular Functions

Lines are drawn parallel to one of the main planes of the current UCS. Note that each command exists in a right hand and a left hand version. The angle of the line relative to the first axis of the respective plane needs to be entered. In case of "SLXY" or "FLXY" the prompt would be:
    Angle in XY or adaption plane or Adapt/Last <default>:
The default input is a numeric angle entered on the keyboard or specified interactively by selecting two points relative to the X axis of the current UCS. Entering <return> selects the value last used by the specific function or zero if called the first time in an editing session. Alternatively one of the following keywords can be entered:

"Last"
selects the value used the last time any of the angular functions was called. This value is shared for all 2D and 3D angular functions.

"Adapt"
prompts the user to select an edge. The angle of this edge relative to the respective plane will be used.

adaption plane:
For similar edge adaption as above. Enter the plane relative to which the adaption angle is to be measured:
    "XY", "YZ", "ZX", "YX", "ZY", "XZ".
After this you are prompted to select the reference edge. The angle of the selected edge relative to the specified plane will be used to rotate the generated lines relative to the plane of the currently executed function (in our example from the X axis towards the Y axis).

Each command then repeats prompting for a point for the position of each line. Enter <return> to exit the loop.

2D commands:
FLXY
parallel to X/Y plane on current elevation.
FLYX
parallel to Y/X plane on current elevation.
3D commands:
SLXY
parallel to X/Y plane in space.
SLYZ
parallel to Y/Z plane in space.
SLZX
parallel to Z/X plane in space.
SLYX
parallel to Y/X plane in space.
SLZY
parallel to Z/Y plane in space.
SLXZ
parallel to X/Z plane in space.

Vector Functions

Lines will be drawn parallel to a specified vector.
    Direction vector or <Adapt>:
The vector may be entered in two different ways.

"Adapt"
(or <return>) You are prompted to select an edge, which is then used as a reference vector (the lines will be parallel to this edge).

Direction vector:
The vector can be entered through a point relative to the origin of the current UCS.

Then the commands repeat asking for a point for the position of each line. Enter <return> to exit the loop.

2D command:
FLVECT
vector projected to current elevation.
3D command:
SLVECT
vector in space.

2 Point Functions

Each line is drawn through two specified points. The commands keep prompting for points to position each line. Enter <return> to exit the loop.

2D command:
FL2POINT
points projected to current elevation.
3D command:
SL2POINT
points in space.

Parallel Functions

Lines are drawn parallel to user selected edges of the existing drawing. You can select from three methods to specify value and direction of the offset:
    Point/Vector/distance <default>:
<default>

The default input is a numeric distance entered on the keyboard or by selecting a distance on screen. <Return> selects the distance last used or zero if called the first time in an editing session.
You are repeatedly prompted to select a reference edge and a point each. The functions calculate the direction vector from the edge to the specified point. The parallel will be offset in that direction to the distance first entered. If this distance is zero the prompt for the point is omitted and the line immediately drawn. Enter <return> to exit the loop.

"Vector"

prompts you to specify an offset vector by

    Direction vector or <Adapt>:

The vector may be entered in two ways:

"Adapt"

(default) Prompts you to select an edge, which is taken as reference vector for the offset. The length of the edge determines the offset distance. The direction of the vector depends on the exact location of the selection point. The vector starts from the endpoint of the edge which is closer to the point you picked to select it.

Direction vector:

The vector can be entered through a point relative to the origin of the current UCS.

You are repeatedly prompted to select a reference edge and each parallel line is immediately drawn. Enter <return> to exit the loop.

"Point"

The user will be repeatedly prompted to select a reference edge and a point to draw the line through. Enter <return> to exit the loop.

2D command:
FLPARAL
parallel to line projected to current elevation.
3D command:
SLPARAL
parallel to line in space.

Normal (Perpendicular) Functions

Lines are drawn as normals to user selected edges of the existing drawing through an entered point. The commands repeatedly ask for an edge and a point each to compute the position of a line.
Enter <return> to exit the loop.

2D command:
FLNORM
normal to edge projected to current elevation.
3D command:
SLNORM
normal to edge in space.

Interpolating Functions

A specified number of lines is drawn between two existing edges of the drawing:
    number of lines <default>:
Enter <return> to select the number last used, or one if called the first time in an editing session. You are then repeatedly prompted to select two existing edges of the drawing. The edges must not be collinear or the functions will exit on printing a warning message. Enter <return> to exit the loop.

If the selected edges are parallel, the function draws the lines(s) dividing the distance between them according to a regular grid. All lines will be in the same plane as the two edges.

If the edges are not parallel, the result differs if the edges intersect in space or if they don't. In testing this, the edges are assumed to be of infinite length. In 2D, All non paallel edges intersect.

If the edges intersect you are prompted to specify the angle to position the lines:

	Point or <Inner>/Outer angle:

"Outer"
The lines are drawn dividing the outer (larger) angle defined by the edges into two or more regular sections.

"Inner"
(Or <return>) The are be drawn dividing the inner angle defined by the edges into two or more regular sections.

Point:
The angle to fill can also be specified on screen by clicking at the proper location. A rubber band line appears starting from the intersection point (or the intersection point of their projection to the X Y plane in 2D) to help you find the right place.

All lines will be in the same plane as the two edges and will meet at their intersection point (or the intersection point of their projection to the X Y plane in 2D).

If the edges in 3D do not intersect then the prompt looks like:

	<Inner>/Outer angle:

Input options similar as above. You cannot specify the angle to fill on screen, because there is no proper location to do so. Since the edges have no common plane in this case, the line(s) don't either. But they are parallel to the plane defined if they would intersect, while maintaining their directions. Relative to this plane, the angles are computed exactly the same way as in the intersecting case. The location of the lines is defined by dividing the shortest distance between the two edges into two or more regular sections. As the result of all these operations, the line(s) are member of a spiral staircase helix or of a hyperbolic paraboloid. (Can anyone explain this in a simpler way?)

If the edges (intersecting or not) form a right angle, the options for "Inner" and "Outer" produce their results depending which ends of the edges have been picked when selecting them. The vector of an edge is taken to start at the endpoint closer to the point picked. The inner angle will be the angle starting from the vector of the first selected edge towards the vector of the second one.

2D command:
FLINTER
interpolating two edges projected to current elevation.
3D command:
SLINTER
interpolating two edges in space.

Distance Function (3D)

Lines are drawn connecting the points on two selected edges of a drawing that define the smallest distance or those edges. This line is a normal to both edges even if they intersect.

The commands repeats prompting for two edges in turn to determine the position of each line. Enter <return> to exit the loop.

3D command
SLDIST
normal to two edges in space.

Grid Function (2D)

The command generates a grid on the current elevation. The lines of the grid are parallel to the X and Y axis of the current UCS. First the starting point must be entered:
    Lower Left corner of grid: 
Then you are prompted for the mode to divide the grid in X direction:
    X Spacing or <Variable>:

If a real distance is entered the next prompt asks for:

    Number of Cells: <1>:

So the grid will have the specified number of spaces of the specified width in X direction.

"Variable"
(or <return>) leads to a repetition of the prompt:
    X Variable spacing:

Enter a number of distances one after another and then <return> to continue. In this mode the X direction of the grid will contain one or more different spaces each of its specified width.
If <return> is entered the first time the prompt appears, the previous prompt is displayed again.

The same applies for the Y direction whith the respective prompts:

    Y Spacing or <Variable>:
and:
    Number of Cells: <1>:
or:
    Y Variable spacing:

As soon as all the Values are specified the grid is drawn. Frame settings are ignored.

2D command
FLGRID
grid on X Y plane.

Rectangle (2D)

Enter two points which are used as opposite corners of a rectangle parallel to the X and Y axis of the current UCS on the current elevation. Frame settings are ignored.

2D command
FLRECT
rectangle on X Y plane.

Environment

In R11, the setting of the 3D frame is stored in a block on the layer "ZZ_SPACELIN" for use in future editing sessions.
In R12 or higher, the setting of the 3D frame is stored in an anonymous block on the layer "ZZ_SPACELIN".

Files

spacelin(.exe|.arx) ADS/ARX application.
sl11.mnu Menu file template for Autocad R11.
sl12.mnu Menu file template for Autocad R12.
sl14.mnu Partial menu file for Autocad R14.
spacelin.slb Slide library for icon/image menus.
spacelin.pgp Template file for keyboard shortcuts.
autoload.sl Template autoloading function for Autocad R12/14.
 
sl_man.html This file.
README.txt General info.

Diagnostics

The error and diagnostic messages are mostly self explanatory, but here are some more detailed explanations all the same:
Cannot project vertical vector!
A vertcal edge (parallel to the current Z direction) has been selected while processing a 2D function. The projection of a vertical line to the groundplane results in a point, which can not be used to define a direction.
Edges must not be collinear!
Interpolating between two collinear lines does not make sense. Use "SLPARAL" or "FLPARAL" with zero distance instead.
Edges must not be parallel!
The location of the points of least distance between two edges can't be determined if the edges are parallel. The mathematical solution to this special case would be an infinite number of point pairs.
Point must not be element of line!
We can't compute the normal vector if the selected edge and point coincide.
Points must not be identical!
Projected points must not be identical!
We need two seperate point locations to create lines from points. This is true even in two dimensions.
Can't select edges in a fitted 3D-MESH.
Can't select edges in a fitted POLYLINE.
Fitted polylines and fitted 3D meshes are supposed to be curves and therefore can't be used to extract straight edges from.
Can't select a POLYLINE-ARC!
Can't select a LWPOLYLINE-ARC!
An arc, even when part of a polyline, is not a straight edge.
line [n] out of 3D limits!
Skipped line while drawing.
Invalid paper/model space lineframe.
Corner points must be given in sequence lower left to upper right in world coordinates. This is a little clumsy, especially when the command is invoked while some other UCS is active. Notice: The points entered are translated to world coordinates internally and *then* checked for sequence. Best workaround is to change to world coordinates before modifying frames.
View is not plan to World. Command results may not be obvious.
Don't say I didn't tell you.
** 3D-command not allowed in Paperspace **
Well, thats obvious, isn't it?
** Command not allowed in perspective view **
Not so obvious, but still true for technical reasons: "SLDEL" and "FLDEL" can't be executed in a perspective viewport.
Unable to make <something>!
Internal error while calling the Autocad development system programming interface.
Unable to get old lineframe data.
Unable to set lineframe data.
Internal error while trying to store or retreive the 3D frame data to or from our special block. A new block should be created automatically when this error occurs.

Any other error is considered unknown and will probably be handled by the ADS programming interface or by the operating system. In other words: Things may crash!

Undetected errors are handled as if no error occured.

Caveats

This program will not replace your spatial imagination. Spacelin is designed as an auxiliary tool to help the user to locate points in space that would be even more difficult to find without. It cannot help you if you are unsure what points you're actually looking for. This would require artificial intelligence, which is beyond my capabilities to implement.
The results of many 3D functions are not obvious from some viewpoints. It is recommended to use several viewports in order to watch from different points of view what is going on.

The block on the layer "ZZ_SPACELIN" is kept unique. Do not insert other blocks on that layer or they will, all exept one, be deleted next time the application is loaded. There is no way to determine ahead of time which one of the blocks found will be used and which are discarded. This means that the stored 3D frame settings are likely to get lost in the process.

The invisible block cannot be removed from the drawing in any straightforward way (except with the help of autolisp or ads/arx). As a consequence it is impossible to purge the layer "ZZ_SPACELIN", even if you have removed all spacelines from the drawing. This is also true if you inserted another drawing as a block which used spacelin.

Bugs and Limitations

Due to numerical instability of floating point operations it can happen that lines are not placed correctly in some circumstances. This problem has been observed with interpolated lines parallel to one axis of the current UCS. Usually the lines will be drawn all on top of each other at the location of the first reference edge in those cases. I try to eliminate some of the problem cases with every release cycle, but there may still be a few hidden somewhere.

Polylines with a width are usually drawn by Autocad with the outside edges of successive segments connected to make a continuous path. If the angle between the segments is "very sharp" though, the ends are broken up and closed seperately with orthogonal lines through the endpoint. Spacelin tries to follow this behaviour and find the connecting resp. ending lines. However, it may fail to do so correctly in boundary cases.
The way Autocad draws polylines where the successing segments have differing starting and ending widths can most politely be described as "erratic". There are even cases where polylines are drawn with gaps! It is no wonder that there is no documentation available for this behaviour. Spacelin will not always do the same thing as Autocad in such cases.

In drawings edited with Autocad R12/14, the block to store the frame data is made an anonymous block, which will not be listed by the "?" option of the "insert" and "block" commands. There is a bug in Autocad R11 which makes it impossible to handle anonymous blocks if one of them resides at the beginning of the internal block table. In drawings edited by R11, the 3D frame data will therefore be stored in a normal block whith the name "ZZ_LIMITS". This block will then appear at the end of block listings of that drawing. If a drawing is transferred to or from R11, SPACELIN will replace its data block to make it an anonimous or a named block as apropriate.

How to report bugs:
if you think you found a bug in spacelin, you can do the following: a) Try to reduce the problem to the most simple drawing configuration possible. b) Write the most precise description of the problem possible. c) Send both together to the email address at the bottom of this page.
If I can reproduce the problem, if I think it really is a problem (in contrast to a feature not explained well enough in the documentation), and if I see a way to do something about it, I will give it a try.

Author

Georg Mischler

Legalese

  Spacelines 1.0  Copyright © 1995 Georg Mischler.
  Spacelines 1.1  Copyright © 1998 Georg Mischler.
  All rights reserved.

  Permission to use and  copy this  software  for any  purpose and
  without fee is hereby granted provided that the  software is not
  altered in any way,  both the above  copyright notices  and this
  permission notice appear in all supporting documentation and the
  full documentation is included.
  Commercial distribution of this software is permitted,  provided
  that it is distributed  unmodified  and in its  entiety with all
  documentation, and the price charged is not significantly higher
  than the cost of copying and distributing this  software and its
  documentation.

  THIS  SOFTWARE  IS PROVIDED  "AS IS"  WITHOUT EXPRESS OR IMPLIED
  WARRANTY.  ALL IMPLIED  WARRANTIES OF FITNESS FOR ANY PARTICULAR
  PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
spacelin homepage
http://www.schorsch.com/en/download/spacelin/sl_man.html
Copyright © 2004-2020 schorsch.com