EXTENSION: .hop

DESCRIPTION: NCHops 5.0

WERKZEUGE:NCHops 5-Tools.txt

VARIABLES:NCHops 5-Globals.txt

LISTSINNCCODEDIRECTORY:TRUE

UNERLAUBTE_ZEICHEN:-äöüßÄÖÜ
PRG_NAME: [?NAME_AUSGABE][?PARTID][?WSSEITE][?UNIQUESUFFIX]

ORDER:TOP BOTTOM LEFT RIGHT FRONT BACK TILTED
ORDERSURFACE: SAW MITRE GROOVE BORINGDIAMETER POLYLINE MACRO REBATE
ORDERDISTANCE: TRUE


ALLOWEDPARTORIGINDEFINITIONSDE:Anschlag Links (Biesse);Anschlag Links
ALLOWEDPARTORIGINDEFINITIONSEN:Stops Left (Biesse);Stops Left
ALLOWEDPARTORIGINS:1

MINKREISTASCHENDURCHMESSER:8

# Macros for offset calculation 
BEGIN MACRO FUEGEOFFSET_X([?X];[?KANTE_LINKS];[?KANTE_RECHTS];[?FUEGEMASSZUGABE])
IF [?KANTE_LINKS]>0 AND [?KANTE_RECHTS]>0 THEN [?X]+2*[?FUEGEMASSZUGABE] ELSE IF [?KANTE_LINKS]>0 OR [?KANTE_RECHTS]>0 THEN [?X]+[?FUEGEMASSZUGABE] ELSE [?X] 
END MACRO

BEGIN MACRO FUEGEOFFSET_Y([?Y];[?KANTE_VORNE];[?KANTE_HINTEN];[?FUEGEMASSZUGABE])
IF [?KANTE_VORNE]>0 AND [?KANTE_HINTEN]>0 THEN [?Y]+2*[?FUEGEMASSZUGABE] ELSE IF [?KANTE_VORNE]>0 OR [?KANTE_HINTEN]>0 THEN [?Y]+[?FUEGEMASSZUGABE] ELSE [?Y] 
END MACRO

BEGIN MACRO NPVCALC_X([?AUFMASS_X];[?FUEGEMASSZUGABE];[?KANTEANSCHLAG_X])
IF [?KANTEANSCHLAG_X]>0 THEN [?FUEGEMASSZUGABE] ELSE 0
END MACRO

BEGIN MACRO NPVCALC_Y([?AUFMASS_Y];[?FUEGEMASSZUGABE];[?KANTEANSCHLAG_Y])
IF [?KANTEANSCHLAG_Y]>0 THEN [?FUEGEMASSZUGABE] ELSE 0 
END MACRO
# 

# The following MACRO defines the routing for rectangular workpieces. 
# The routing will be generated in any worpiece but will be executed only on demand.

BEGIN MACRO FORRMATDEF(doit)
KB ('Format','',kax-fxa,kay-fya,-_RZ-2,'',0,0)
KG01 ('',l-KANTEL-KANTER+kax+fxb,kay-fya,-_RZ-2,'')
KG01 ('',l-KANTEL-KANTER+kax+fxb,b-KANTEV-KANTEH+kay+fyb,_Z,'',0,0)
KG01 ('',kax-fxa,b-KANTEV-KANTEH+kay+fyb,_Z,'',0,0)
KG01 ('',kax-fxa,(b-KANTEV-KANTEH+kay+fyb)/2,_Z,'',0,0)
KG01 ('',kax-fxa,kay-fya,_Z,'',0,0)
END MACRO



PRGNR_START: 1
PRGNR_FORMAT: %03d
#PRG_NAME: [?AUFTRAG]_[?AUFTRAG_POSITION]_[?PRGNR]
PRG_NAME: [?NAME_AUSGABE][?PARTID][?WSSEITE][?UNIQUESUFFIX]

BEGIN PRGSTART
;BILD=[?PRG_NAME].bmp
;INFO=[?PRG_NAME]
;WZGV=NC1000
;MASCHINE=NC1000
;NCNAME=[?PRG_NAME]
;KOMMENTAR=Vorderseite des Bauteils [?BAUTEIL_NAME]
;DX=0
;DY=0
;DZ=0
;DIALOGDLL=Dialoge.Dll
;DIALOGPROC=StandardFormAnzeigen
START
Rohteil (LPX,LPY,LPZ,0,3)
SetUrsprung(NPVX,NPVY)
ZText ('[?NAME]',_rx/2,_ry/2,50,0,9,0,'',0,0,0,0,0)
ZRechteck (-120,-120,_rx+(2*120),_ry+(2*120),0,0,0)
ZText ('[?MATERIAL]',0,_ry+50,30,0,1,255,'',0,0,0,0,0)
ZText ('Projekt: '+'[?AUFTRAG]'+' - Pos.: '+'[?AUFTRAG_POSITION]',0+10,-50-30,20,0,1,255,'',0,0,0,0,0)
ZText ('[?BEMERKUNG]',_rx,_ry+120-30-10,20,0,5,255,'',0,0,0,0,0)
ZText ('[?ART_KANTE_O]',_rx/2,_ry+10,20,0,9,0,'',0,0,0,0,0)
ZText ('[?ART_KANTE_R]',-10-30,_ry/2,20,90,9,0,'',0,0,0,0,0)
ZText ('[?ART_KANTE_L]',_rx+10+30,_ry/2,20,270,9,0,'',0,0,0,0,0)
ZText ('[?ART_KANTE_U]',_rx/2,-10-30,20,0,9,0,'',0,0,0,0,0)
CALL B2Punkte_V4 ( VAL P1X:=0-NPVX,P1Y:=0,P2X:=_rx-NPVX,P2Y:=0,ABSTAND:=120-30+10,FARBE:=0,TEXT:='',TEXTHÖHE:=30,PFEILLÄNGE:=20,PFEILEINNERHALB:=1)
CALL B2Punkte_V4 ( VAL P1X:=0,P1Y:=0-NPVY,P2X:=0,P2Y:=_ry-NPVY,ABSTAND:=-120+30+10,FARBE:=0,TEXT:='',TEXTHÖHE:=30,PFEILLÄNGE:=20,PFEILEINNERHALB:=1)
NCINFO (7000,1,0,0,0,0,0,AggregatsZuordnung,0,0,0)
IF _ry > 1550
Fehlermeldung ('VORSICHT !!!! Platte zu gross')
ELSE
END
;.................................................................................
END PRGSTART

BEGIN WERKSTUECK
;WERKSTUECK
VARS
LPX := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=0 THEN "Formel{MACRO['FUEGEOFFSET_X';[?X];[?KANTE_LINKS];[?KANTE_RECHTS];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?X_FERTIG]"];*VAR*
LPY := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=0 THEN "Formel{MACRO['FUEGEOFFSET_Y';[?Y];[?KANTE_VORNE];[?KANTE_HINTEN];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?Y_FERTIG]"];*VAR*
LPZ := [?STAERKE];*VAR*
NPVX := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN "0" ELSE "-[?KANTEANSCHLAG_X]+Formel{MACRO['NPVCALC_X';[?AUFMASS_X];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_X]]}"];*VAR*
NPVY := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN "0" ELSE "-[?KANTEANSCHLAG_Y]+Formel{MACRO['NPVCALC_Y';[?AUFMASS_Y];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_Y]]}"];*VAR*
R := 0;*VAR*

KanteLinks:=[?KANTE_LINKS];VAR Kantendicke links
KanteRechts:=[?KANTE_RECHTS];VAR Kantendicke rechts
KanteVorne:=[?KANTE_VORNE];VAR Kantendicke vorne
KanteHinten:=[?KANTE_HINTEN];VAR Kantendicke hinten

ToolFormat:=[?formatwkz];*VAR*
ToolNut:=[?nutwkz];*VAR*
ToolFalz:=[?falzwkz];*VAR*
ToolGehrung:=[?gehrungwkz];*VAR*
ToolSaege:=[?saegewkz];*VAR*
ToolKreistasche:=[?ktwkz];*VAR*
ToolAuskl:=[?ausklwkz];*VAR* Werkzeug fuer Ausklinkungen
ANKOERNUNGDURCH:=[?ankoernd];*VAR*
ANKOERNUNGDURCHHOR:=[?ankoerndhor];*VAR*
ANKOERNUNGTIEF:=[?anktief];*VAR*
START
;AUFLAGEFERTIGHAUPTSEITE=[?AUFLAGEFERTIGHAUPTSEITE]
[?POLYDEFINITIONS]
END WERKSTUECK

BEGIN WERKSTUECKRUECKSEITE
;WERKSTUECKRUECKSEITE
VARS
LPX := Formel[IF [?AUFLAGEFERTIGNEBENSEITE]=0 THEN "Formel{MACRO['FUEGEOFFSET_X';[?X];[?KANTE_LINKS];[?KANTE_RECHTS];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?X_FERTIG]"];*VAR*
LPY := Formel[IF [?AUFLAGEFERTIGNEBENSEITE]=0 THEN "Formel{MACRO['FUEGEOFFSET_Y';[?Y];[?KANTE_VORNE];[?KANTE_HINTEN];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?Y_FERTIG]"];*VAR*
LPZ := [?STAERKE];*VAR*
NPVX := Formel[IF [?AUFLAGEFERTIGNEBENSEITE]=1 THEN "0" ELSE "-[?KANTEANSCHLAG_X]+Formel{MACRO['NPVCALC_X';[?AUFMASS_X];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_X]]}"];*VAR*
NPVY := Formel[IF [?AUFLAGEFERTIGNEBENSEITE]=1 THEN "0" ELSE "-[?KANTEANSCHLAG_Y]+Formel{MACRO['NPVCALC_Y';[?AUFMASS_Y];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_Y]]}"];*VAR*
R := 0;*VAR*
ToolFormat:=[?formatwkz];*VAR*
ToolNut:=[?nutwkz];*VAR*
ToolFalz:=[?falzwkz];*VAR*
ToolGehrung:=[?gehrungwkz];*VAR*
ToolSaege:=[?saegewkz];*VAR*
ToolKreistasche:=[?ktwkz];*VAR*
ToolAuskl:=[?ausklwkz];*VAR* Werkzeug fuer Ausklinkungen
ANKOERNUNGDURCH:=[?ankoernd];*VAR*
ANKOERNUNGDURCHHOR:=[?ankoerndhor];*VAR*
ANKOERNUNGTIEF:=[?anktief];*VAR*
START
;AUFLAGEFERTIGNEBENSEITE=[?AUFLAGEFERTIGNEBENSEITE]

[?POLYDEFINITIONS]
[?POLYWSEXEC]
END WERKSTUECKRUECKSEITE

BEGIN WERKSTUECKFORMAT
;WERKSTUECKFORMAT
VARS
LPX := Formel[IF 0=0 THEN "Formel{MACRO['FUEGEOFFSET_X';[?X];[?KANTE_LINKS];[?KANTE_RECHTS];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?X_FERTIG]"]+[?AUFMASS_X];*VAR*
LPY := Formel[IF 0=0 THEN "Formel{MACRO['FUEGEOFFSET_Y';[?Y];[?KANTE_VORNE];[?KANTE_HINTEN];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?Y_FERTIG]"]+[?AUFMASS_Y];*VAR*
LPZ := [?STAERKE];*VAR*
NPVX := Formel[IF 0=1 THEN "0" ELSE "-[?KANTEANSCHLAG_X]+Formel{MACRO['NPVCALC_X';[?AUFMASS_X];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_X]]}"]+[?AUFMASS_X]/2;*VAR*
NPVY := Formel[IF 0=1 THEN "0" ELSE "-[?KANTEANSCHLAG_Y]+Formel{MACRO['NPVCALC_Y';[?AUFMASS_Y];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_Y]]}"]+[?AUFMASS_Y]/2;*VAR*
VW_AUFMASS := Formel[[?AUFMASS_X]/2];*VAR*
R := 0;*VAR*
ToolFormat:=[?formatwkz];*VAR*

l:=[?X_FERTIG];*VAR*
b:=[?Y_FERTIG];*VAR*
KANTEL:=[?KANTE_LINKS];*VAR*
KANTER:=[?KANTE_RECHTS];*VAR*
KANTEV:=[?KANTE_VORNE];*VAR*
KANTEH:=[?KANTE_HINTEN];*VAR*
kax:=[?KANTEANSCHLAG_X];*VAR*
kay:=[?KANTEANSCHLAG_Y];*VAR*
fxa:=Formel[IF 0=1 THEN 0 ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=4) AND [?KANTE_LINKS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=2 OR [?ANSCHLAG]=3) AND [?KANTE_RECHTS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*
fxb:=Formel[IF 0=1 THEN 0 ELSE IF ([?ANSCHLAG]=2 OR [?ANSCHLAG]=3) AND [?KANTE_LINKS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=4) AND [?KANTE_RECHTS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*
fya:=Formel[IF 0=1 THEN 0 ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=2) AND [?KANTE_VORNE]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=3 OR [?ANSCHLAG]=4) AND [?KANTE_HINTEN]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*
fyb:=Formel[IF 0=1 THEN 0 ELSE IF ([?ANSCHLAG]=3 OR [?ANSCHLAG]=4) AND [?KANTE_VORNE]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=2) AND [?KANTE_HINTEN]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*

START
;AUFLAGEFERTIGHAUPTSEITE=[?AUFLAGEFERTIGHAUPTSEITE]

MACRO['FORRMATDEF';'doit']
[?POLYWSEXEC]
END WERKSTUECKFORMAT

BEGIN WERKSTUECKSYNCFORMAT
;WERKSTUECKSYNCFORMAT
VARS
LPX := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=0 THEN "Formel{MACRO['FUEGEOFFSET_X';[?X];[?KANTE_LINKS];[?KANTE_RECHTS];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?X_FERTIG]"]+[?AUFMASS_X];*VAR*
LPY := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=0 THEN "Formel{MACRO['FUEGEOFFSET_Y';[?Y];[?KANTE_VORNE];[?KANTE_HINTEN];[?FUEGEMASSZUGABE]*[?FUEGEN]]}" ELSE "[?Y_FERTIG]"]+[?AUFMASS_Y];*VAR*
LPZ := [?STAERKE];*VAR*
;NPVX := Formel[[?AUFMASS_X]/2];*VAR*
;NPVY := -Formel[[?AUFMASS_Y]/2];*VAR*
NPVX := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN "0" ELSE "-[?KANTEANSCHLAG_X]+Formel{MACRO['NPVCALC_X';[?AUFMASS_X];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_X]]}"]+[?AUFMASS_X]/2;*VAR*
NPVY := Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN "0" ELSE "-[?KANTEANSCHLAG_Y]+Formel{MACRO['NPVCALC_Y';[?AUFMASS_Y];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_Y]]}"]+[?AUFMASS_Y]/2;*VAR*
VW_AUFMASS := Formel[[?AUFMASS_X]/2];*VAR*
R := 0;*VAR*
ToolFormat:=[?formatwkz];*VAR*
ToolNut:=[?nutwkz];*VAR*
ToolFalz:=[?falzwkz];*VAR*
ToolGehrung:=[?gehrungwkz];*VAR*
ToolSaege:=[?saegewkz];*VAR*
ToolKreistasche:=[?ktwkz];*VAR*
ToolAuskl:=[?ausklwkz];*VAR* Werkzeug fuer Ausklinkungen
ANKOERNUNGDURCH:=[?ankoernd];*VAR*
ANKOERNUNGTIEF:=[?anktief];*VAR*

l := [?X_FERTIG];*VAR*
b := [?Y_FERTIG];*VAR*

KANTEL:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE [?KANTE_LINKS]];*VAR*
KANTER:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE [?KANTE_RECHTS]];*VAR*
KANTEV:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE [?KANTE_VORNE]];*VAR*
KANTEH:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE [?KANTE_HINTEN]];*VAR*
kax:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE [?KANTEANSCHLAG_X]];*VAR*
kay:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE [?KANTEANSCHLAG_Y]];*VAR*
fxa:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=4) AND [?KANTE_LINKS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=2 OR [?ANSCHLAG]=3) AND [?KANTE_RECHTS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*
fxb:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE IF ([?ANSCHLAG]=2 OR [?ANSCHLAG]=3) AND [?KANTE_LINKS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=4) AND [?KANTE_RECHTS]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*
fya:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=2) AND [?KANTE_VORNE]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=3 OR [?ANSCHLAG]=4) AND [?KANTE_HINTEN]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*
fyb:=Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN 0 ELSE IF ([?ANSCHLAG]=3 OR [?ANSCHLAG]=4) AND [?KANTE_VORNE]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE IF ([?ANSCHLAG]=1 OR [?ANSCHLAG]=2) AND [?KANTE_HINTEN]>0 THEN [?FUEGEMASSZUGABE]*[?FUEGEN] ELSE 0];*VAR*

START
;AUFLAGEFERTIGHAUPTSEITE=[?AUFLAGEFERTIGHAUPTSEITE]
MACRO['FORRMATDEF';'doit']
[?POLYDEFINITIONS]
[?POLYWSEXEC]
END WERKSTUECKSYNCFORMAT

BEGIN FORMATIERUNG
;CALL Hauben_Position ( VAL POS:=9)
; WZF(Toolformat,_VE,_V,_VA,_SD,_ANF,'')
;CALL Oszilieren ( VAL ECKENVERRUNDUNG:=0,RICHTUNG:=1,TIEFE:=-_RZ-2.5,AUFMASS:=VW_AUFMASS,ANF:=_ANF,OSZI:=2)
; CALL _Format_V4 ( VAL ECKENVERRUNDUNG:=0,RICHTUNG:=1,TIEFE:=-_RZ-2.5,AUFMASS:=VW_AUFMASS,ANF:=_ANF)
WZF(ToolFormat,_VE,_V,_VA,_SD,_ANF,'')
KSP ('???','???',-_rz-2,1,2,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('Format',4,4,1,0,0,1,0,0,0,0)
EP (2,_ANF,0)

;VERXY (Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN "0" ELSE "-KanteOX+Formel{MACRO['NPVCALC_X';[?AUFMASS_X];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_X]]}"],Formel[IF [?AUFLAGEFERTIGHAUPTSEITE]=1 THEN "0" ELSE "-KanteOY+Formel{MACRO['NPVCALC_Y';[?AUFMASS_Y];[?FUEGEMASSZUGABE]*[?FUEGEN];[?KANTEANSCHLAG_Y]]}"])
END FORMATIERUNG

BEGIN BOHRUNG_VERT
WZB (Formel[NCTOOLINFO(NCTOOLID('V';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
Bohrung ([?FX],[?FY],[?D],-[?TIEF],Formel[IF [?D]>14 THEN 30 ELSE 10],0,0,0,0,0,0,0)
END BOHRUNG_VERT

BEGIN ANKOERNUNG_VERT
WZB (Formel[NCTOOLINFO(NCTOOLID('V';'[?ankoernd]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
Bohrung ([?FX],[?FY],ANKOERNUNGDURCH,-ANKOERNUNGTIEF,10,0,0,0,0,0,0,0)
END ANKOERNUNG_VERT

BEGIN BOHRUNG_VERT_DURCH
WZB (Formel[NCTOOLINFO(NCTOOLID('V';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
Bohrung ([?FX],[?FY],[?D],-_RZ-3,Formel[IF [?D]>14 THEN 30 ELSE 10],0,0,0,0,0,0,0)
END BOHRUNG_VERT_DURCH


BEGIN LOCHREIHE
WZB (Formel[NCTOOLINFO(NCTOOLID('V';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
Formel[IF IDENTISCH("[?DIR]";"X") THEN 
"CALL _Rbohx_einpass ( VAL EINPASSEN:=0,SPX:=[?FX],SPY:=[?FY],SPY2:=0,RASTER:=[?RASTER],EPX:=[?FXE],T:=-[?TIEF],D:=[?D],TLF:=10)" ELSE IF IDENTISCH("[?DIR]";"Y") THEN 
"CALL _Rbohy_einpass ( VAL EINPASSEN:=0,SPX:=[?FX],SPX2:=0,SPY:=[?FY],RASTER:=[?RASTER],EPY:=[?FYE],T:=-[?TIEF],D:=[?D],TLF:=10)" ELSE "; Geht net"]
END LOCHREIHE


BEGIN BOHRUNG_HOR_LINKS
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,0,0,0,0,0)
END BOHRUNG_HOR_LINKS

BEGIN BOHRUNG_HOR_RECHTS
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,180,0,0,0,0)
END BOHRUNG_HOR_RECHTS

BEGIN BOHRUNG_HOR_VORNE
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,90,0,0,0,0)
END BOHRUNG_HOR_VORNE

BEGIN BOHRUNG_HOR_HINTEN
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,270,0,0,0,0)
END BOHRUNG_HOR_HINTEN

BEGIN ANKOERNUNG_HOR_LINKS
WZB (Formel[NCTOOLINFO(NCTOOLID('B';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],ANKOERNUNGDURCHHOR,-ANKOERNUNGTIEF,0,0,0,0,0,0,0)
END ANKOERNUNG_HOR_LINKS

BEGIN ANKOERNUNG_HOR_RECHTS
WZB (Formel[NCTOOLINFO(NCTOOLID('B';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],ANKOERNUNGDURCHHOR,-ANKOERNUNGTIEF,0,0,180,0,0,0,0)
END ANKOERNUNG_HOR_RECHTS

BEGIN ANKOERNUNG_HOR_VORNE
WZB (Formel[NCTOOLINFO(NCTOOLID('B';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],ANKOERNUNGDURCHHOR,-ANKOERNUNGTIEF,0,0,90,0,0,0,0)
END ANKOERNUNG_HOR_VORNE

BEGIN ANKOERNUNG_HOR_HINTEN
WZB (Formel[NCTOOLINFO(NCTOOLID('B';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF)
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],ANKOERNUNGDURCHHOR,-ANKOERNUNGTIEF,0,0,270,0,0,0,0)
END ANKOERNUNG_HOR_HINTEN


BEGIN BOHRUNG_SCHRAEG
WZB (4,_VE,_V,_VA,_SD,_ANF) ; Bohrkopf RICHTUNG=[?RICHTUNG]
Formel[CASE [?RICHTUNG] OF
     0 : "HorzB ([?FX],[?FY],Formel{[?STAERKE]-[?DELTAZ]},[?D],-[?TIEF],0,[?WINKEL]-90, 180,0,0,0,0)";
     1 : "HorzB ([?FX],[?FY],Formel{[?STAERKE]-[?DELTAZ]},[?D],-[?TIEF],0,-[?WINKEL], 90,0,0,0,0)";
     2 : "HorzB ([?FX],[?FY],Formel{[?STAERKE]-[?DELTAZ]},[?D],-[?TIEF],0,-[?WINKEL], 0,0,0,0,0)";
OTHERWISE: "HorzB ([?FX],[?FY],Formel{[?STAERKE]-[?DELTAZ]},[?D],-[?TIEF],0,-[?WINKEL], 270,0,0,0,0)";
END]
END BOHRUNG_SCHRAEG


BEGIN BOHRUNG_HOR_RECHTS_WINKEL 
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF);
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,Formel[[?ROTATIONZ]+180])
END BOHRUNG_HOR_RECHTS_WINKEL 

BEGIN BOHRUNG_HOR_LINKS_WINKEL 
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF);
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,Formel[[?ROTATIONZ]])
END BOHRUNG_HOR_LINKS_WINKEL 

BEGIN BOHRUNG_HOR_VORNE_WINKEL 
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF);
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,Formel[[?ROTATIONZ]+90])
END BOHRUNG_HOR_VORNE_WINKEL 

BEGIN BOHRUNG_HOR_HINTEN_WINKEL 
WZB (Formel[NCTOOLINFO(NCTOOLID('H';'[?D]');'Aggregat')],_VE,_V,_VA,_SD,_ANF);
HorzB ([?FX],[?FY],Formel[[?STAERKE]-[?Z]],[?D],-[?TIEF],0,0,Formel[[?ROTATIONZ]+270])
END BOHRUNG_HOR_HINTEN_WINKEL 



BEGIN FALZ
Formel[IF ([?FY]=[?FYE]) AND ([?FY]<100) THEN ';FalzVorne
WZF (ToolFalz,_VE,_V,_VA,_SD,_ANF,'')
SP (Formel{MIN([?FX];[?FXE])},Formel{[?FY]+ABS([?BREITE]/2)},-[?TIEF],2,1,_ANF,0,0,0)
G01 (Formel{MAX([?FX];[?FXE])},Formel{[?FY]+ABS([?BREITE]/2)},-[?TIEF],0)
EP(1,_ANF,0)' ELSE '']
Formel[IF ([?FY]=[?FYE]) AND ([?FY]>100) THEN ';oben
WZF (ToolFalz,_VE,_V,_VA,_SD,_ANF,'')
SP (Formel{MAX([?FX];[?FXE])},Formel{[?FY]-ABS([?BREITE]/2)},-[?TIEF],2,1,_ANF,0,0,0)
G01 (Formel{MIN([?FX];[?FXE])},Formel{[?FY]-ABS([?BREITE]/2)},-[?TIEF],0)
EP(1,_ANF,0)' ELSE '']
Formel[IF ([?FX]=[?FXE]) AND ([?FX]<100) THEN ';links
WZF (ToolFalz,_VE,_V,_VA,_SD,_ANF,'')
SP (Formel{[?FX]+ABS([?BREITE]/2)},Formel{MAX([?FY];[?FYE])},-[?TIEF],2,1,_ANF,0,0,0)
G01 (Formel{[?FX]+ABS([?BREITE]/2)},Formel{MIN([?FY];[?FYE])},-[?TIEF],0)
EP(1,_ANF,0)' ELSE '']
Formel[IF ([?FX]=[?FXE]) AND ([?FX]>100) THEN ';rechts
WZF (ToolFalz,_VE,_V,_VA,_SD,_ANF,'')
SP (Formel{[?FX]-ABS([?BREITE]/2)},Formel{MIN([?FY];[?FYE])},-[?TIEF],2,1,_ANF,0,0,0)
G01 (Formel{[?FX]-ABS([?BREITE]/2)},Formel{MAX([?FY];[?FYE])},-[?TIEF],0)
EP(1,_ANF,0)' ELSE '']
END FALZ


BEGIN FALZEINGESETZT
;FalzEinAusgesetzt
WZF (ToolFalz,_VE,_V,_VA,_SD,_ANF,'')
SP (Formel[IF [?FX]<>[?FXE] AND [?FY]>[?BREITE] THEN MIN([?FX];[?FXE]) ELSE IF [?FX]<>[?FXE] AND [?FY]<=[?BREITE] THEN MAX([?FX];[?FXE]) ELSE IF [?FX]=[?FXE] AND [?FX]>[?BREITE] THEN [?FX]+[?BREITE]/2+30 ELSE  [?FX]-[?BREITE]/2-30]Formel[IF [?FY]=[?FYE] AND [?FY]>[?BREITE] AND MIN([?FX];[?FXE])=0 THEN '-50' ELSE IF [?FY]=[?FYE] AND [?FY]<[?BREITE] AND MAX([?FX];[?FXE])=[?X_FERTIG] THEN '+50' ELSE '' ],Formel[IF [?FY]<>[?FYE] AND [?FX]>[?BREITE] THEN MAX([?FY];[?FYE]) ELSE IF [?FY]<>[?FYE] AND [?FX]<=[?BREITE] THEN MIN([?FY];[?FYE]) ELSE IF [?FY]=[?FYE] AND [?FY]>[?BREITE] THEN [?FY]+[?BREITE]/2+30 ELSE  [?FY]-[?BREITE]/2-30]Formel[IF [?FX]=[?FXE] AND [?FX]<[?BREITE] AND MIN([?FY];[?FYE])=0 THEN '-50' ELSE IF [?FX]=[?FXE] AND [?FX]>[?BREITE] AND MAX([?FY];[?FYE])=[?Y_FERTIG] THEN '+50' ELSE '' ],-[?TIEF],1,1,1,0,0,0,0,0,0,1,-[?TIEF],0,0,0,0,0,0,0,0,0)
G01 (Formel[IF [?FX]<>[?FXE] AND [?FY]>[?BREITE] THEN MIN([?FX];[?FXE]) ELSE IF [?FX]<>[?FXE] AND [?FY]<=[?BREITE] THEN MAX([?FX];[?FXE]) ELSE IF [?FX]=[?FXE] AND [?FX]>[?BREITE] THEN [?FX]-[?BREITE]/2 ELSE  [?FX]+[?BREITE]/2]Formel[IF [?FY]=[?FYE] AND [?FY]>[?BREITE] AND MIN([?FX];[?FXE])=0 THEN '-50' ELSE IF [?FY]=[?FYE] AND [?FY]<[?BREITE] AND MAX([?FX];[?FXE])=[?X_FERTIG] THEN '+50' ELSE '' ],Formel[IF [?FY]<>[?FYE] AND [?FX]>[?BREITE] THEN MAX([?FY];[?FYE]) ELSE IF [?FY]<>[?FYE] AND [?FX]<=[?BREITE] THEN MIN([?FY];[?FYE]) ELSE IF [?FY]=[?FYE] AND [?FY]>[?BREITE] THEN [?FY]-[?BREITE]/2 ELSE  [?FY]+[?BREITE]/2]Formel[IF [?FX]=[?FXE] AND [?FX]<[?BREITE] AND MIN([?FY];[?FYE])=0 THEN '-50' ELSE IF [?FX]=[?FXE] AND [?FX]>[?BREITE] AND MAX([?FY];[?FYE])=[?Y_FERTIG] THEN '+50' ELSE '' ],-[?TIEF],0)
G01 (Formel[IF [?FX]<>[?FXE] AND [?FY]>[?BREITE] THEN MAX([?FX];[?FXE]) ELSE IF [?FX]<>[?FXE] AND [?FY]<=[?BREITE] THEN MIN([?FX];[?FXE]) ELSE IF [?FX]=[?FXE] AND [?FX]>[?BREITE] THEN [?FX]-[?BREITE]/2 ELSE  [?FX]+[?BREITE]/2]Formel[IF [?FY]=[?FYE] AND [?FY]<[?BREITE] AND MIN([?FX];[?FXE])=0 THEN '-50' ELSE IF [?FY]=[?FYE] AND [?FY]>[?BREITE] AND MAX([?FX];[?FXE])=[?X_FERTIG] THEN '+50' ELSE '' ],Formel[IF [?FY]<>[?FYE] AND [?FX]>[?BREITE] THEN MIN([?FY];[?FYE]) ELSE IF [?FY]<>[?FYE] AND [?FX]<=[?BREITE] THEN MAX([?FY];[?FYE]) ELSE IF [?FY]=[?FYE] AND [?FY]>[?BREITE] THEN [?FY]-[?BREITE]/2 ELSE  [?FY]+[?BREITE]/2]Formel[IF [?FX]=[?FXE] AND [?FX]>[?BREITE] AND MIN([?FY];[?FYE])=0 THEN '-50' ELSE IF [?FX]=[?FXE] AND [?FX]<[?BREITE] AND MAX([?FY];[?FYE])=[?Y_FERTIG] THEN '+50' ELSE '' ],-[?TIEF],0)
G01 (Formel[IF [?FX]<>[?FXE] AND [?FY]>[?BREITE] THEN MAX([?FX];[?FXE]) ELSE IF [?FX]<>[?FXE] AND [?FY]<=[?BREITE] THEN MIN([?FX];[?FXE]) ELSE IF [?FX]=[?FXE] AND [?FX]>[?BREITE] THEN [?FX]+[?BREITE]/2+30 ELSE  [?FX]-[?BREITE]/2-30]Formel[IF [?FY]=[?FYE] AND [?FY]<[?BREITE] AND MIN([?FX];[?FXE])=0 THEN '-50' ELSE IF [?FY]=[?FYE] AND [?FY]>[?BREITE] AND MAX([?FX];[?FXE])=[?X_FERTIG] THEN '+50' ELSE '' ],Formel[IF [?FY]<>[?FYE] AND [?FX]>[?BREITE] THEN MIN([?FY];[?FYE]) ELSE IF [?FY]<>[?FYE] AND [?FX]<=[?BREITE] THEN MAX([?FY];[?FYE]) ELSE IF [?FY]=[?FYE] AND [?FY]>[?BREITE] THEN [?FY]+[?BREITE]/2+30 ELSE  [?FY]-[?BREITE]/2-30]Formel[IF [?FX]=[?FXE] AND [?FX]>[?BREITE] AND MIN([?FY];[?FYE])=0 THEN '-50' ELSE IF [?FX]=[?FXE] AND [?FX]<[?BREITE] AND MAX([?FY];[?FYE])=[?Y_FERTIG] THEN '+50' ELSE '' ],-[?TIEF],0)
EP(1,1,0)
END FALZEINGESETZT


BEGIN NUTEINGESETZT
;CALL Hauben_Position ( VAL POS:=9)
Formel[IF [?FY]=[?FYE] AND [?FX]<>[?FXE] THEN "WZS (ToolNut,_VE,_V,_VA,_SD,_ANF)
CALL _Nuten_X ( VAL NB:=Formel{ABS([?BREITE])},NT:=-[?TIEF],EBENE:=1,ARAND:=Formel{[?FY]-ABS([?BREITE])/2},ALINKS:=Formel{MIN([?FX];[?FXE]))},ARECHTS:=Formel{[?WS_X]-(MAX([?FX];[?FXE]))},RK:=0)" ELSE ""]
Formel[IF [?FX]=[?FXE] AND [?FY]<>[?FYE] THEN "WZS (ToolNut,_VE,_V,_VA,_SD,_ANF)
CALL _Nuten_Y ( VAL NB:=Formel{ABS([?BREITE])},NT:=-[?TIEF],EBENE:=0,ARAND:=Formel{[?FX]-ABS([?BREITE])/2},AUNTEN:=Formel{MIN([?FY];[?FYE])},AOBEN:=Formel{[?WS_Y]-(MAX([?FY];[?FYE]))},RK:=0)" ELSE ""]
Formel[IF [?FY]=[?FYE] OR [?FX]=[?FXE] THEN "" ELSE "WZS (ToolNut,_VE,_V,_VA,_SD,_ANF)
CALL _Nuten_X ( VAL NB:=Formel{ABS([?BREITE])},NT:=-[?TIEF],EBENE:=1,ARAND:=Formel{[?FY]-ABS([?BREITE])/2},ALINKS:=Formel{MIN([?FX];[?FXE]))},ARECHTS:=Formel{[?WS_X]-(MAX([?FX];[?FXE]))},RK:=0)"]
END NUTEINGESETZT


BEGIN SAEGEN
;CALL Hauben_Position ( VAL POS:=12)
WZS (ToolSaege,_VE,_V,_VA,_SD,_ANF)
CALL _saege_frei ( VAL SX:=[?FX],SY:=[?FY],SZ:=-[?VORRITZTIEFE],EX:=[?FXE],EY:=[?FYE],EZ:=-[?SCHNITTTIEFE],BL:=[?RADIUSKORREKTUR],EINPASSEN:=0,EL:=[?ANFAHRTSTRECKE],AL:=[?ANFAHRTSTRECKE],PARALLEL:=0,K:=3,KW:=-Formel[90-ABS([?GEHRUNGSWINKEL])],BH:=_rz,RITZVERSATZ:=0.05)
END SAEGEN


BEGIN GEHRUNG
Formel[IF ((90-ABS([?GEHRUNGSWINKEL]))<=22,5) THEN ';CALL Hauben_Position ( VAL POS:=8)' ELSE '']
Formel[IF ((90-ABS([?GEHRUNGSWINKEL]))<=45) AND ((90-ABS([?GEHRUNGSWINKEL]))>2,5) THEN ';CALL Hauben_Position ( VAL POS:=7)' ELSE '']
Formel[IF ((90-ABS([?GEHRUNGSWINKEL]))<=67,5) AND ((90-ABS([?GEHRUNGSWINKEL]))>45) THEN ';CALL Hauben_Position ( VAL POS:=6)' ELSE '']
Formel[IF ((90-ABS([?GEHRUNGSWINKEL]))>67,5) THEN ';CALL Hauben_Position ( VAL POS:=3)' ELSE '']
Formel[IF ([?FY]=[?FYE]) AND ([?FY]>100) AND [?FX]<>[?FXE] THEN 'WZS (ToolGehrung,_VE,_V,_VA,_SD,_ANF)
CALL _saege_frei ( VAL SX:=Formel{MAX([?FXE];[?FX])},SY:=Formel{[?FY]+[?BREITE]/2},SZ:=_rz-3,EX:=Formel{MIN([?FXE];[?FX])},EY:=Formel{[?FY]+[?BREITE]/2},EZ:=-2,BL:=2,EINPASSEN:=0,EL:=20,AL:=20,PARALLEL:=0,K:=2,KW:=-Formel{90-ABS([?GEHRUNGSWINKEL])},BH:=0,RITZVERSATZ:=0.05)' ELSE '']
Formel[IF ([?FY]=[?FYE]) AND ([?FY]<100) THEN 'WZS (ToolGehrung,_VE,_V,_VA,_SD,_ANF)
CALL _saege_frei ( VAL SX:=Formel{MIN([?FXE];[?FX])},SY:=Formel{[?FY]-[?BREITE]/2},SZ:=_rz-3,EX:=Formel{MAX([?FXE];[?FX])},EY:=Formel{[?FY]-[?BREITE]/2},EZ:=-2,BL:=2,EINPASSEN:=0,EL:=20,AL:=20,PARALLEL:=0,K:=2,KW:=-Formel{90-ABS([?GEHRUNGSWINKEL])},BH:=0,RITZVERSATZ:=0.05)' ELSE '']
Formel[IF ([?FX]=[?FXE]) AND ([?FX]<100) THEN 'WZS (ToolGehrung,_VE,_V,_VA,_SD,_ANF)
CALL _saege_frei ( VAL SX:=Formel{[?FX]-[?BREITE]/2},SY:=Formel{MAX([?FYE];[?FY])},SZ:=_rz-3,EX:=Formel{[?FX]-[?BREITE]/2},EY:=Formel{MIN([?FYE];[?FY])},EZ:=-2,BL:=2,EINPASSEN:=0,EL:=20,AL:=20,PARALLEL:=0,K:=2,KW:=-Formel{90-ABS([?GEHRUNGSWINKEL])},BH:=0,RITZVERSATZ:=0.05)' ELSE '']
Formel[IF ([?FX]=[?FXE]) AND ([?FX]>100) THEN 'WZS (ToolGehrung,_VE,_V,_VA,_SD,_ANF)
CALL _saege_frei ( VAL SX:=Formel{[?FX]+[?BREITE]/2},SY:=Formel{MIN([?FYE];[?FY])},SZ:=_rz-3,EX:=Formel{[?FX]+[?BREITE]/2},EY:=Formel{MAX([?FYE];[?FY])},EZ:=-2,BL:=2,EINPASSEN:=0,EL:=20,AL:=20,PARALLEL:=0,K:=2,KW:=-Formel{90-ABS([?GEHRUNGSWINKEL])},BH:=0,RITZVERSATZ:=0.05)' ELSE '']
END GEHRUNG


BEGIN KREISTASCHE
;CALL Hauben_Position ( VAL POS:=9)
WZF (ToolKreistasche,_VE,_V,_VA,_SD,_ANF,'')
CALL _Kreistasche_V4 ( VAL X_MITTE:=[?FX],Y_MITTE:=[?FY],RADIUS:=[?D]/2,TIEFE:=-[?TIEF],ZUSTELLUNG:=-[?TIEF],AB:=0,ABF:=_ANF,INTERPOL:=1,UMKEHREN:=0)
END KREISTASCHE

BEGIN KREISTASCHEDURCHGEHEND
;CALL Hauben_Position ( VAL POS:=9)
WZF (ToolKreistasche,_VE,_V,_VA,_SD,_ANF,'')
CALL _Kreisbahn_V4 ( VAL X_MITTE:=[?FX],Y_MITTE:=[?FY],TIEFE:=-_rz-5,ZUTIEFE:=0,RADIUS:=[?D]/2,RADIUSKORREKTUR:=1,AB:=2,AUFMASS:=0,BEARB_UMKEHREN:=1,WINKEL:=120,ANF:=_ANF,ABF:=_ANF,RAMPE:=1,INTERPOL:=0)
END KREISTASCHEDURCHGEHEND

BEGIN KREISTASCHEHORIZONTAL_LINKS
WZF (2301,_VE,_V,_VA,_SD,_ANF,'')
CALL _HorTasche_V4 ( VAL EBENE:=2,XPOS:=[?FX],YPOS:=[?FY],ZPOS:=Formel[[?STAERKE]-[?Z]],BREITE:=[?D],HOEHE:=[?D],TIEFE:=-[?TIEF],ZUTIEFE:=0,RADIUS:=Formel[[?D]/2],UMKEHREN:=0,INTERPOL:=1,PENDELN:=0)
END KREISTASCHEHORIZONTAL_LINKS

BEGIN KREISTASCHEHORIZONTAL_RECHTS
WZF (2301,_VE,_V,_VA,_SD,_ANF,'')
CALL _HorTasche_V4 ( VAL EBENE:=4,XPOS:=[?FX],YPOS:=[?FY],ZPOS:=Formel[[?STAERKE]-[?Z]],BREITE:=[?D],HOEHE:=[?D],TIEFE:=-[?TIEF],ZUTIEFE:=0,RADIUS:=Formel[[?D]/2],UMKEHREN:=0,INTERPOL:=1,PENDELN:=0)
END KREISTASCHEHORIZONTAL_RECHTS

BEGIN KREISTASCHEHORIZONTAL_VORNE
WZF (2301,_VE,_V,_VA,_SD,_ANF,'')
CALL _HorTasche_V4 ( VAL EBENE:=1,XPOS:=[?FX],YPOS:=[?FY],ZPOS:=Formel[[?STAERKE]-[?Z]],BREITE:=[?D],HOEHE:=[?D],TIEFE:=-[?TIEF],ZUTIEFE:=0,RADIUS:=Formel[[?D]/2],UMKEHREN:=0,INTERPOL:=1,PENDELN:=0)
END KREISTASCHEHORIZONTAL_VORNE

BEGIN KREISTASCHEHORIZONTAL_HINTEN
WZF (2301,_VE,_V,_VA,_SD,_ANF,'')
CALL _HorTasche_V4 ( VAL EBENE:=3,XPOS:=[?FX],YPOS:=[?FY],ZPOS:=Formel[[?STAERKE]-[?Z]],BREITE:=[?D],HOEHE:=[?D],TIEFE:=-[?TIEF],ZUTIEFE:=0,RADIUS:=Formel[[?D]/2],UMKEHREN:=0,INTERPOL:=1,PENDELN:=0)
END KREISTASCHEHORIZONTAL_HINTEN


BEGIN AUSKLINKUNG
;CALL xp600isoH5_Hauben_Position ( VAL POS:=9)
;Ausklinkung [?FPT1X]/[?FPT1Y] [?FPT2X]/[?FPT2Y] [?FPT3X]/[?FPT3Y] [?FPT4X]/[?FPT4Y]
Formel[IF ([?FPT1X]=0 AND [?FPT1Y]=0) OR ([?FPT4X]=0 AND [?FPT4Y]=0) THEN  ";links/vorne
KB ('[?POLYDEFINDEXINCREMENT]','',Formel{MAX([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},-30,-_rz-2,'')
KG01 ('',Formel{MAX([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},Formel{MAX([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
KG01 ('',-30,Formel{MAX([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
WZF(ToolAuskl,_VE,_V,_VA,_SD,_ANF,'1')
KSP ('???','???',-_rz-2,1,1,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEXINCREMENT]',0,2,0,0,0,0,0,0,0,0)
EP (0,_ANF,0)"
ELSE IF ([?FPT1X]=[?X_FERTIG] AND [?FPT1Y]=0) OR ([?FPT4X]=[?X_FERTIG] AND [?FPT4Y]=0) THEN ";rechts/vorne
KB ('[?POLYDEFINDEXINCREMENT]','',Formel{MIN([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},-30,-_rz-2,'',0,0)
KG01 ('',Formel{MIN([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},Formel{MAX([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
KG01 ('',[?WS_X]+30,Formel{MAX([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
WZF(ToolAuskl,_VE,_V,_VA,_SD,_ANF,'1')
KSP ('???','???',-_rz-2,2,1,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEXINCREMENT]',0,2,0,0,0,0,0,0,0,0)
EP (0,_ANF,0)"
ELSE IF ([?FPT1X]=[?X_FERTIG] AND [?FPT1Y]=[?Y_FERTIG]) OR ([?FPT4X]=[?X_FERTIG] AND [?FPT4Y]=[?Y_FERTIG]) THEN  ";rechts/hinten
KB ('[?POLYDEFINDEXINCREMENT]','',Formel{MIN([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},[?WS_Y]+30,-_rz-2,'')
KG01 ('',Formel{MIN([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},Formel{MIN([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
KG01 ('',[?WS_X]+30,Formel{MIN([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
WZF(ToolAuskl,_VE,_V,_VA,_SD,_ANF,'1')
KSP ('???','???',-_rz-2,1,1,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEXINCREMENT]',0,2,0,0,0,0,0,0,0,0)
EP (0,_ANF,0)"
ELSE IF ([?FPT1X]=0 AND [?FPT1Y]=[?Y_FERTIG]) OR ([?FPT4X]=0 AND [?FPT4Y]=[?Y_FERTIG]) THEN  ";links/hinten
KB ('[?POLYDEFINDEXINCREMENT]','',Formel{MAX([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},[?WS_Y]+30,-_rz-2,'',0,0)
KG01 ('',Formel{MAX([?FPT1X];[?FPT2X];[?FPT3X];[?FPT4X])},Formel{MIN([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
KG01 ('',-30,Formel{MIN([?FPT1Y];[?FPT2Y];[?FPT3Y];[?FPT4Y])},-_rz-2,'',0,0)
WZF(ToolAuskl,_VE,_V,_VA,_SD,_ANF,'1')
KSP ('???','???',-_rz-2,2,1,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEXINCREMENT]',0,2,0,0,0,0,0,0,0,0)
EP (0,_ANF,0)"
ELSE ";In der Kante
KB ('[?POLYDEFINDEXINCREMENT]','',Formel{IF [?FPT1Y]=[?FPT2Y] AND [?FPT1X]=0 THEN [?FPT1X]-30 ELSE IF [?FPT1Y]=[?FPT2Y] AND [?FPT1X]>0 THEN [?FPT1X]+30 ELSE [?FPT1X]},Formel{IF [?FPT1X]=[?FPT2X] AND [?FPT1Y]=0 THEN [?FPT1Y]-30 ELSE IF [?FPT1X]=[?FPT2X] AND [?FPT1Y]>0 THEN [?FPT1Y]+30 ELSE [?FPT1Y]},-_rz-2,'',0,0)
KG01 ('',[?FPT2X],[?FPT2Y],-_rz-2,'',0,0)
KG01 ('',[?FPT3X],[?FPT3Y],-_rz-2,'',0,0)
KG01 ('',[?FPT4X],[?FPT4Y],-_rz-2,'',0,0)
KG01 ('',Formel{IF [?FPT3Y]=[?FPT4Y] AND [?FPT4X]=0 THEN [?FPT4X]-30 ELSE IF [?FPT3Y]=[?FPT4Y] AND [?FPT4X]>0 THEN [?FPT4X]+30 ELSE [?FPT4X]},Formel{IF [?FPT3X]=[?FPT4X] AND [?FPT4Y]=0 THEN [?FPT4Y]-30 ELSE IF [?FPT3X]=[?FPT4X] AND [?FPT4Y]>0 THEN [?FPT4Y]+30 ELSE [?FPT4Y]},-_rz-2,'',0,0)
WZF(ToolAuskl,_VE,_V,_VA,_SD,_ANF,'1')
KSP ('???','???',-_rz-2,2,1,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEXINCREMENT]',0,4,0,0,0,0,0,0,0,0)
EP (0,_ANF,0)"]
END AUSKLINKUNG


BEGIN NCMACRO
Formel[IF (IDENTISCH(LINKS('[?MAKRONAME]';7);'unbenutzt')) THEN 'CALL [?MAKRONAME] ( VAL LÄNGE:=DX,AUFSCHLAGO:=[?P1],AUFSCHLAGU:=[?P2],MITTEX:=DX/2,MITTEY:=60,MATERIAL:=Formel{IF (IDENTISCH(LINKS("[?MATERIAL]";4);"0440")) THEN 2 ELSE 1},LOCH:=30)' ELSE ''] 
Formel[IF IDENTISCH('[?MAKRONAME]';'RT') THEN "WZF (Formel{IF IDENTISCH('[?P2]';'') THEN 'ToolKreistasche' ELSE '[?P2]'},_VE,_V,_VA,_SD,_ANF,'')
CALL _RechteckTasche_V4 ( VAL X_MITTE:=[?MIDDLEX],Y_MITTE:=[?MIDDLEY],TASCHENLAENGE:=[?REALLAENGE],TASCHENBREITE:=[?REALBREITE],RADIUS:=Formel{IF IDENTISCH('[?P4]';'') THEN '0' ELSE '[?P4]'},WINKEL:=[?WINKEL] ,TIEFE:=-Formel{IF IDENTISCH('[?P1]';'') THEN '0' ELSE '[?P1]'},ZUSTELLUNG:=Formel{IF IDENTISCH('[?P3]';'') THEN '0' ELSE '[?P3]'},AB:=1,ABF:=_ANF,INTERPOL:=0,UMKEHREN:=0)" ELSE ""]
Formel[IF IDENTISCH('[?MAKRONAME]';'RA') THEN "WZF (Formel{IF IDENTISCH('[?P2]';'') THEN '201' ELSE '[?P2]'},_VE,_V,_VA,_SD,_ANF,'')
CALL _Rechteck_V4 ( VAL X_MITTE:=[?MIDDLEX],Y_MITTE:=[?MIDDLEY],TASCHENLAENGE:=[?REALLAENGE],TASCHENBREITE:=[?REALBREITE],RADIUS:=Formel{IF IDENTISCH('[?P4]';'') THEN '0' ELSE '[?P4]'},WINKEL:=[?WINKEL],TIEFE:=-Formel{IF IDENTISCH('[?P1]';'') THEN '0' ELSE '[?P1]'},ZUTIEFE:=Formel{IF IDENTISCH('[?P3]';'') THEN '0' ELSE '[?P3]'},RADIUSKORREKTUR:=2,AB:=2,AUFMASS:=0,ANF:=_ANF,ABF:=_ANF,UMKEHREN:=0,RAMPE:=1,RAMPENLÄNGE:=50,QUADRANT:=0,INTERPOL:=0)" ELSE ""]
END NCMACRO


RADIUSKORREKTUR: 0 1 2

BEGIN POLYDEFFIRST
KB ('[?POLYDEFINDEX]','',[?XSTART],[?YSTART],-[?STARTZ],'',0,0)
KG01 ('',[?XEND],[?YEND],-[?ENDZ],'',0,0)
END POLYDEFFIRST

BEGIN POLYDEFFIRSTCLOCKWISE
KB ('[?POLYDEFINDEX]','',[?XSTART],[?YSTART],-[?STARTZ],'',0,0)
CALL _KG02R ( VAL EN:='',EX:=[?XEND],EY:=[?YEND],EZ:=-[?ENDZ],R:=[?ARCRADIUS],EI:='',0,0)
END POLYDEFFIRSTCLOCKWISE

BEGIN POLYDEFFIRSTCOUNTERCLOCKWISE
KB ('[?POLYDEFINDEX]','',[?XSTART],[?YSTART],-[?STARTZ],'',0,0)
CALL _KG03R ( VAL EN:='',EX:=[?XEND],EY:=[?YEND],EZ:=-[?ENDZ],R:=[?ARCRADIUS],EI:='',0,0)
END POLYDEFFIRSTCOUNTERCLOCKWISE

BEGIN POLYDEFBODY
KG01 ('',[?XEND],[?YEND],_Z,'',0,0)
END POLYDEFBODY

BEGIN POLYDEFBODYCLOCKWISE
CALL _KG02R ( VAL EN:='',EX:=[?XEND],EY:=[?YEND],EZ:=_Z,R:=[?ARCRADIUS],EI:='',0,0)
END POLYDEFBODYCLOCKWISE

BEGIN POLYDEFBODYCOUNTERCLOCKWISE
CALL _KG03R ( VAL EN:='',EX:=[?XEND],EY:=[?YEND],EZ:=_Z,R:=[?ARCRADIUS],EI:='',0,0)
END POLYDEFBODYCOUNTERCLOCKWISE

BEGIN POLYDEFLAST
KG01 ('',[?XEND],[?YEND],_Z,'',0,0)
END POLYDEFLAST

BEGIN POLYDEFLASTCLOCKWISE
CALL _KG02R ( VAL EN:='',EX:=[?XEND],EY:=[?YEND],EZ:=_Z,R:=[?ARCRADIUS],EI:='',0,0)
END POLYDEFLASTCLOCKWISE

BEGIN POLYDEFLASTCOUNTERCLOCKWISE
CALL _KG03R ( VAL EN:='',EX:=[?XEND],EY:=[?YEND],EZ:=_Z,R:=[?ARCRADIUS],EI:='',0,0)
END POLYDEFLASTCOUNTERCLOCKWISE

BEGIN POLYEXEC
WZF(Formel[IF IDENTISCH("[?WERKZEUGINFO]";"") THEN "ToolFormat" ELSE "[?WERKZEUGINFO]"],_VE,_V,_VA,_SD,_ANF,'')
KSP ('???','???',-[?ZUSTELLUNGENDZ],[?RADIUSKORREKTUR],0,0,0,0,0,0,0,0,1,-[?ZUSTELLUNGENDZ],0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEX]',[?MINSEGMENTINDEX],Formel[[?MAXSEGMENTINDEX]+1],0,0,0,0,0,0,0,0)
EP (0,_ANF,0)
END POLYEXEC
 
BEGIN POLYWSEXEC
WZF(ToolFormat,_VE,_V,_VA,_SD,_ANF,'')
KSP ('???','???',-_rz-2,1,2,_ANF,0,0,0,0,0,0,1,-_rz-2,0,0,0,0,0,0,0,0,0)
KonturFraesen ('[?POLYDEFINDEX]',[?MINSEGMENTINDEX],Formel[[?MAXSEGMENTINDEX]+1],0,0,0,1,0,0,0,0)
EP (0,_ANF,0)
END POLYWSEXEC

BEGIN ARBEITSINFO
[DISTINTA : CAMPI]

campoD0=LABL,A,4,4,NULL,0,0
campoD1=PROG,A,256,40,NULL,0,2
campoD2=QNTA,U,4,4,NULL,0,0
campoD3=CONT,U,4,4,NULL,0,0
campoD4=COMM,A,256,60,NULL,0,0

[DISTINTA : RIGHE]

[BEGIN LOOP]
,[?PRG_NAME],[?ANZAHL],0,[?BAUTEIL_NAME],
[END LOOP]
END ARBEITSINFO

BEGIN ZUSCHNITTSINFO
Aufkb;Plakb;Elnr;Aufpos;Teilbez;Stück;Zuslange;Zusbreite;Optlange;Optbreite;Auftrag;Teilbez;Zusatzinformation;TInfo1,Kantevkb;Kantevdicke;Kantehkb;Kantehdicke;Kantelkb;Kanteldicke;Kanterkb;Kanterdicke;Belagikb;Belagakb;Drehbar
[BEGIN LOOP]
[?AUFTRAG];[?MATERIAL];[?COUNTER];[?AUFTRAG_POSITION];[?LAENGE];[?BREITE];[?LAENGE];[?BREITE];[?SYMBOLNAME];[?BAUTEIL_NAME];[?PRG_NAME];[?BEMERKUNG];[?ART_KANTE_U];[?STAERKE_KANTE_U];[?ART_KANTE_O];[?STAERKE_KANTE_O];[?ART_KANTE_L];[?STAERKE_KANTE_L];[?ART_KANTE_R];[?STAERKE_KANTE_R];[?ART_BELAG_INNEN];[?ART_BELAG_AUSSEN];0
[END LOOP]
END ZUSCHNITTSINFO
