Custom Complex Linetypes
The syntax for complex linetypes is similar to that of simple linetypes
in that it is a comma-delimited list of pattern descriptions. The
difference is, is that complex linetypes can include shape and text
objects as pattern descriptors, as well as the normal dash-dot descriptors
of simple linetypes.
In this tutorial we are going to look at creating a complex linetype using
a text object as a descriptor.
The syntax for text object descriptors in a linetype definition is as
follows :
["string" , stylename] or
["string" , stylename , transform]
That's great Kenny, but I haven't a clue what this all means!!!
O.K. Don't worry, we'll go through it step by step.
Open up your AfraLisp.lin file that you created earlier and add the
following :
;
;AfraLisp Custom Linetypes
;Written November 2001
;
*dashdot3,_ . . . _ . . . _ , , , _
A,0.5,-0.25,0,-0.25,0,-0.25,0,-0.25
;
*AFRALISP,---- AL ---- AL ---- AL ---- AL
A,1.0,-0.25,["AL",STANDARD,S=1,R=0,X=0,Y=-0.25],-1.25
If you loaded and set this linetype, it
would look like this :
If we put this into words, we would be saying, "Draw a line 1 unit
long, lift the pen for 0.25 of a unit, then add "AL" as text
using "STANDARD" font style, now lift the pen for 1.25 units,
and then repeat the process".
Let's have a wee look at the "AFRALISP" linetype :
*AFRALISP,---- AL ---- AL ---- AL ----
AL
The first line, of course is the
linetype name followed by the description.
A,1.0,-0.25,["AL",STANDARD,S=1,R=0,X=0,Y=-0.25],-1.25
The second line contains the linetype definition. Lets, zoom into this.
"A"
is the alignment which is defaulted.
"1.0"
and "-0.25"
are pen commands as is "-1.25"
at the end of the definition.
["AL",STANDARD,S=1,R=0,X=0,Y=-0.25]
is the one that interests us.
The syntax of these fields are as follows :
string ("AL")
The text to be used in the complex linetype.
style (STANDARD)
The name of the text style to be elaborated. The specified text style must
be included. If it is omitted, use the currently defined style.
scale (1)
S=value. The scale of the style is used as a scale factor by which the
style's height is multiplied. If the style's height is 0, the S=value
alone is used as the scale.
Because the final height of the text is defined by both the S=value and
the height assigned to the text style, you will achieve more predictable
results by setting the text style height to 0. Additionally, it is
recommended that you create separate text styles for text in complex
linetypes to avoid conflicts with other text in your drawing.
rotate (0)
R=value or A=value. R= signifies relative or tangential rotation with
respect to the lines elaboration. A= signifies absolute rotation of the
text with respect to the origin; all text has the same rotation regardless
of its relative position to the line. The value can be appended with a d
for degrees (if omitted, degree is the default), r for radians, or g for
grads. If rotation is omitted, 0 relative rotation is used.
Rotation is centered between the baseline and the nominal cap heights box.
xoffset (0)
X=value. This field specifies the shift of the text in the X axis of the
linetype computed from the end of the linetype definition vertex. If
xoffset is omitted or is 0, the text is elaborated by using the lower-left
corner of the text as the offset. Include this field if you want a
continuous line with text. This value is not scaled by the scale factor
that is defined by S=.
yoffset (-0.25)
Y=value. This field specifies the shift of the text in the Y axis of the
linetype computed from the end of the linetype definition vertex. If
yoffset is omitted or is 0, the text is elaborated by using the lower-left
corner of the text as the offset. This value is not scaled by the scale
factor that is defined by S=.
Well that's about it for complex linetypes. But before I go, here's a
few more custom linetypes that you can play around and practice with :
;
;
;AfraLisp Custom Linetypes
;Written November 2001
;
;
*dashdot3,_ . . . _ . . . _ , , , _
A,0.5,-0.25,0,-0.25,0,-0.25,0,-0.25
;
*AFRALISP,---- AL ---- AL ---- AL ---- AL
A,1.0,-0.25,["AL",STANDARD,S=1,R=0,X=0,Y=-0.25],-1.25
;
*DIESEL,---- DIESEL ---- DIESEL ---- DIESEL ---- DIESEL ---- DIESEL
A,50,-2,["DIESEL",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-6.5
;
*BEER,---- BEER ---- BEER ---- BEER ---- BEER ---- BEER
A,50,-2,["BEER",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-6.5
;
*DRINKING_WATER,---- DRINKING H20 ---- DRINKING H20 ---- DRINKING H20
A,50,-2,["DRINKING H20",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-14
;
*ELECTRICAL,---- ELECT ---- ELECT ---- ELECT ---- ELECT ---- ELECT
A,50,-2,["ELECT",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-5.5
;
*HIGH_TENSION,---- HT ---- HT ---- HT ---- HT ---- HT ---- HT ----
A,50,-2,["HT",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-2
;
*OIL,---- OIL ---- OIL ---- OIL ---- OIL ---- OIL ---- OIL ----
A,50,-2,["OIL",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-3
;
*OPTIC,---- OPTIC ---- OPTIC ---- OPTIC ---- OPTIC ---- OPTIC ----
A,50,-2,["OPTIC",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-5.5
;
*PHONE,---- PHONE ---- PHONE ---- PHONE ---- PHONE ---- PHONE ----
A,50,-2,["PHONE",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-6
;
*PLANT_WATER,---- PLANT H20 ---- PLANT H20 ---- PLANT H20
A,50,-2,["PLANT H20",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-11
;
*SECURITY_FENCE,---- X ---- X ---- X ---- X ---- X ---- X ----
A,50,-2,["X",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-1
;
*SEWER,---- SEWAGE ---- SEWAGE ---- SEWAGE ---- SEWAGE ----
A,50,-2,["SEWAGE",STANDARD,S=1.25,R=0.0,X=-1,Y=-.5],-7
O.K. Now I'll put you all out of your misery!!
Under the Express Tools pull down menu you will find the following :
"Make Linetype" and "Make
Shape". (Sorry A2K only).
Now don't say I'm not nice to you!! |