Copy Link
Add to Bookmark
Report
CAD-3D to DXF Converter
REM
REM CAD-3D to DXF Converter
REM by Dave Edwards
REM Copyright 1990 Antic Publishing
REM
DIM T(5000, 2), COLORS(15)
PRINT "CAD-3D to DXF Converter"
PRINT "by Dave Edwards"
PRINT "Copyright 1990 Antic Publishing Inc."
VERNUM: INPUT "Input AutoCAD version number (9 or 10)"; VNUM
IF VNUM < 9 THEN GOTO VERNUM:
IF VNUM > 10 THEN GOTO VERNUM:
INPUT "Input name of CAD-3D file ( .3D2 extension required) - "; NAME3D$
INPUT "Input name of output DXF file ( .DXF extension required) - "; NAMEDXF$
PRINT "AutoCAD Colors - other color numbers are permissible..."
PRINT "1 - RED 4 - CYAN"
PRINT "2 - YELLOW 5 - BLUE"
PRINT "3 - GREEN 6 - MAGENTA"
PRINT " 7 - WHITE"
OPEN "R", #1, NAME3D$, 1
FIELD 1, 1 AS VALUE$
OPEN "O", #2, NAMEDXF$
PRINT #2, "0": PRINT #2, "SECTION"
PRINT #2, "2": PRINT #2, "ENTITIES"
GET #1: GET #1
GOSUB TYPE1: NO = NI
PRINT "Number of Objects - "; NO
FOR X = 1 TO 32
GET #1: GET #1
NEXT X
FOR X = 0 TO 15
GET #1: GET #1
NEXT X
GET #1: GET #1: PALTYPE = VAL("&H" + HEX$(ASC(VALUE$)))
IF PALTYPE = 1 THEN GOTO SHADE14:
IF PALTYPE = 2 THEN GOTO CUSTOM:
PRINT "CAD-3D Color Palette Type is Seven-Shade"
INPUT "Input Color number for First Primary color - "; FIRSTCOLOR
FOR X = 0 TO 7: COLORS(X) = FIRSTCOLOR: NEXT X
INPUT "Input Color number for Second Primary color - "; SECONDCOLOR
FOR X = 8 TO 15: COLORS(X) = SECONDCOLOR: NEXT X
GOTO START:
SHADE14:
PRINT "CAD-3D Color Palette Type is Fourteen-Shade"
INPUT "Input Color number for Primary color - "; PRIMCOLOR
FOR X = 0 TO 15: COLORS(X) = PRIMCOLOR: NEXT X
GOTO START:
CUSTOM:
PRINT "CAD-3D Color Palette Type is Custom"
FOR X = 0 TO 15
PRINT "Input Color Number for Custom Color #"; X; : INPUT COLORNUM
COLORS(X) = COLORNUM
NEXT X
START:
GET #1: GET #1: GET #1: GET #1
FOR X = 1 TO 150
GET #1
NEXT X
FOR I = 1 TO NO
OBJNAME$ = ""
FOR J = 1 TO 9
GET #1
IF ASC(VALUE$) = 0 THEN SW1 = 1
IF SW1 <> 1 THEN OBJNAME$ = OBJNAME$ + VALUE$
NEXT J
SW1 = 0
PRINT "Processing Object - "; OBJNAME$
GOSUB TYPE1: NV = NI
FOR K = 0 TO NV - 1
GOSUB TYPE2:
T(K, 0) = NR
GOSUB TYPE2:
T(K, 1) = NR
GOSUB TYPE2:
T(K, 2) = NR
NEXT K
GOSUB TYPE1: NF = NI
FOR L = 0 TO NF - 1
PRINT #2, "0": PRINT #2, "3DFACE": PRINT #2, "8": PRINT #2, OBJNAME$
GOSUB TYPE1: PRINT #2, "10": PRINT #2, T(NI, 0)
PRINT #2, "20": PRINT #2, T(NI, 1)
PRINT #2, "30": PRINT #2, T(NI, 2): N4 = NI
GOSUB TYPE1: PRINT #2, "11": PRINT #2, T(NI, 0)
PRINT #2, "21": PRINT #2, T(NI, 1)
PRINT #2, "31": PRINT #2, T(NI, 2)
GOSUB TYPE1: PRINT #2, "12": PRINT #2, T(NI, 0)
PRINT #2, "22": PRINT #2, T(NI, 1)
PRINT #2, "32": PRINT #2, T(NI, 2)
PRINT #2, "13": PRINT #2, T(N4, 0)
PRINT #2, "23": PRINT #2, T(N4, 1)
PRINT #2, "33": PRINT #2, T(N4, 2)
IF VNUM = 9 THEN GET #1: GOTO VER9:
PRINT #2, "70"
GET #1: N5 = VAL("&H" + HEX$(ASC(VALUE$)))
IF N5 = 7 THEN N6 = 0
IF N5 = 3 THEN N6 = 1
IF N5 = 5 THEN N6 = 2
IF N5 = 1 THEN N6 = 3
IF N5 = 6 THEN N6 = 4
IF N5 = 2 THEN N6 = 5
IF N5 = 4 THEN N6 = 6
IF N5 = 0 THEN N6 = 7
PRINT #2, N6
VER9: PRINT #2, "62"
GET #1: N7 = VAL("&H" + HEX$(ASC(VALUE$)))
PRINT #2, COLORS(N7)
NEXT L
NEXT I
PRINT #2, "0": PRINT #2, "ENDSEC": PRINT #2, "0": PRINT #2, "EOF"
CLOSE : END
TYPE1: GET #1: N1 = VAL("&H" + HEX$(ASC(VALUE$))) * 256
GET #1: N2 = VAL("&H" + HEX$(ASC(VALUE$)))
NI = N1 + N2
RETURN
TYPE2: GET #1: N1 = VAL("&H" + HEX$(ASC(VALUE$))) * 256
GET #1: N2 = VAL("&H" + HEX$(ASC(VALUE$)))
N = N1 + N2
IF N > 4500 THEN N = N - 65536
NR = N / 100
RETURN