// Element
// aaabalk.vel
//
//Application
// pelare
//
//Description
// Detta element skapar en stålpelare av profiltyp
//
//Implementaion
//
//
//
//Authur
// Mats Hallgren November 1997
//
//Copyright
// Byggnadstekniska Byrån i Stockholm AB
//
//Version
// 1.0 (1997-11-17)
//
//////////////////////////////////////////
#include <drawlib.vel> ?
#include <math.vel>
#include <base.vel>
#include <libvel.vel>
#include <objlib.vel>
#define CENTRUML 1000 ?
// Variabel deklaration
element aaabalk {
saved
// def balktabell & dialog
float LENGTH = 3.0m ?
float h = 96mm ?
float b = 100mm ?
float t = 8.0mm ?
float d = 5.0mm ?
float R = 12mm ?
float F = 0.561 ?
float g = 16.7 ?
string MATERIAL = "steel" ?
string shape = "HEA" ?
string ipe = "100" ?
string hea = "100" ?
string heb = "100" ?
string balktyp = "Synlig kant" ?
string OMKap1 = "Ök X+" ?
float TKap1 = 0 ?
string OMKap2 = "Uk X+" ?
float TKap2 = 0 ?
float Rotl = 0.0 ?
float Rotp = 0.0 ?
float Rote = 0.0 ?
// allmän variabel variabel
integer DOSTRETCH = 1 ?
integer extrude1 ?
integer balk2 ?
integer balk3 ?
integer balk2A ?
float Angel3D1 = 0 ?
float Angel3D2 = 0 ?
float Turn1 = 0 ?
float Turn2 = 0 ?
float Adist1 = 0 ?
float Bdist1 = 0 ?
float Adist2 = 0 ?
float Bdist2 = 0 ?
float lengd1=0 ?
float lengd2=0 ?
float kaplengd=0 ?
float YTA=0 ?
float VIKT=0 ?
integer Dim = 0 ?
float AngelP11 = 0 ?
float AngelP12 = 0 ?
float AngelP21 = 0 ?
float AngelP22 = 0 ?
float di1 = 0 ?
float di2 = 0 ?
float di3 = 0 ?
float di4 = 0 ?
float di5 = 0 ?
float di6 = 0 ?
float di7 = 0 ?
private
// funtionsdeklarationer
void OnCreate ()
void OnEdit ()
void OnWrite ()
void OnSave ()
void setValueBALK ()
void start ()
void rita3D ()
integer cutEdge1 (integer , integer)
integer cutEdge2 (integer , integer)
void vy1 ()
void vy2 ()
void vy3 ()
views
plan
View3d
dialog
aaabalkDlg
}
// Dialog deklaration
link aaabalkDlg {
balktyp RBshape
LENGTH Tlength
shape OMshape
ipe OMipe
hea OMhea
heb OMheb
MATERIAL QYmaterial
Rotl Trotl
Rotp Trotp
Rote Trote
OMKap1 OMkap1
TKap1 Tkap1
OMKap2 OMkap2
TKap2 Tkap2
}
//----------------- UPPSTART -----------------//
/////////////////////////////////////////////////////////////
// Läs in från dialogboxen
// Kolla vilken balktyp och dimension
//
// Läs in värden från fil
//
// Kontrollera kapvinklarnas värde, riktning
// Max vinkel 85 grader
// Endast en kapning per ände
/////////////////////////////////////////////////////////////
void OnCreate (){ ?
setValueBALK ()
start ()
}
void OnEdit (){ ?
setValueBALK ()
start ()
cout << endl
cout << endl
cout << "Profil: " << shape << Dim << endl
cout << "Kaplängd: " << kaplengd/10 << " mm Vikt: " << VIKT << " kg Mantelyta: " << YTA << " m2 " << endl
}
void OnSave (){ } ?
void OnWrite (){ } ?
/////////////////////////////////////////////////////////////
void start () { ?
if (TKap1 >= 85) { TKap1=85 }
if (TKap1 <= 0) { TKap1=0 }
if (TKap2 >= 85) { TKap2=85 }
if (TKap2 <= 0) { TKap2=0 }
Angel3D1=Angel3D2=0
AngelP11=AngelP12=AngelP21=AngelP22=0
if ((TKap1 != 0) && (OMKap1 == "Ök X+")) {
Angel3D1 = TKap1
Turn1 = 0
Adist1=h
Bdist1=b
AngelP11=0
AngelP12=TKap1
}
if ((TKap1 != 0) && (OMKap1 == "Ök X-")) {
Angel3D1 = TKap1
Turn1 = 180
Adist1=h
Bdist1=b
AngelP11=0
AngelP12=-TKap1
}
if ((TKap1 != 0) && (OMKap1 == "Ök Y+")) {
Angel3D1 = TKap1
Turn1 = 90
Adist1=b
Bdist1=h
AngelP11=TKap1
AngelP12=0
}
if ((TKap1 != 0) && (OMKap1 == "Ök Y-")) {
Angel3D1 = TKap1
Turn1 = 270
Adist1=b
Bdist1=h
AngelP11=-TKap1
AngelP12=0
}
//////
if ((TKap2 != 0) && (OMKap2 == "Uk X+")) {
Angel3D2 = TKap2
Turn2 = 180
Adist2=h
Bdist2=b
AngelP21=0
AngelP22=-TKap2
}
if ((TKap2 != 0) && (OMKap2 == "Uk X-")) {
Angel3D2 = TKap2
Turn2 = 0
Adist2=h
Bdist2=b
AngelP21=0
AngelP22=TKap2
}
if ((TKap2 != 0) && (OMKap2 == "Uk Y+")) {
Angel3D2 = TKap2
Turn2 = 270
Adist2=b
Bdist2=h
AngelP21=-TKap2
AngelP22=0
}
if ((TKap2 != 0) && (OMKap2 == "Uk Y-")) {
Angel3D2 = TKap2
Turn2 = 90
Adist2=b
Bdist2=h
AngelP21=TKap2
AngelP22=0
}
if( Angel3D1 == 0) { lengd1=0 }
else { lengd1=Bdist1*tan(Angel3D1)/2 }
if( Angel3D2 == 0) { lengd2=0 }
else { lengd2=Bdist2*tan(Angel3D2)/2 }
kaplengd=LENGTH+lengd1+lengd2
YTA =kaplengd*F/10000
VIKT =kaplengd*g/10000
// cout << "lengd1 lengd2 kaplengd " << lengd1 << " " << lengd2 << " " << kaplengd << endl
}
////////////////////////////////////////////////////////////////////////////
void setValueBALK (){ ?
string textrad = ""
string file = "/usr/reflex/data/BTBprofiles.lst"
integer file_pt = 0
file_pt = openfr (file)
integer teckentyp = 0
integer tt2 = 0
string sign1 = ""
string sign2 = ""
string signUT = ""
float dim1 = 0
float dim2 = 0
integer aa = 10
integer profilen = 0
integer dimension = 0
integer counter = 0
integer cont2 = 0
integer proftype = 0
if (shape == "IPE"){
Dim= ipe
proftype=1
}
if (shape == "HEA"){
Dim= hea
proftype=1
}
if (shape == "HEB"){
Dim= heb
proftype=1
}
if (file_pt) {
while (reads (file_pt, textrad) != -1 ) {
tt2=teckentyp
cont2=counter
if (textrad == "#") { teckentyp = 1 } else {
if (textrad == "0") { teckentyp = 2 dim1=0 } else {
if (textrad == "1") { teckentyp = 2 dim1=1 } else {
if (textrad == "2") { teckentyp = 2 dim1=2 } else {
if (textrad == "3") { teckentyp = 2 dim1=3 } else {
if (textrad == "4") { teckentyp = 2 dim1=4 } else {
if (textrad == "5") { teckentyp = 2 dim1=5 } else {
if (textrad == "6") { teckentyp = 2 dim1=6 } else {
if (textrad == "7") { teckentyp = 2 dim1=7 } else {
if (textrad == "8") { teckentyp = 2 dim1=8 } else {
if (textrad == "9") { teckentyp = 2 dim1=9 } else {
if (textrad == " ") { teckentyp = 3 counter++ } else {
if (textrad == "011") { teckentyp = 3 counter++ } else { // Tab
if (textrad == "012") { teckentyp = 3 signUT="" if (dimension==1) { counter++ } else { counter=0 } } else { // Return
if (textrad == ".") { teckentyp = 4 } else {
if (textrad == ",") { teckentyp = 4 } else {
sign1=textrad teckentyp = 5 }
} } } } } } } } } } } } } } }
if ( (teckentyp == 2) && (tt2 !=4) && (aa <= 10)) { dim2 = dim2*10 + dim1 }
if ( (teckentyp == 2) && ( aa>10 || tt2 == 4)) { dim2 = dim2 + dim1/aa aa=aa*10 }
if ( teckentyp == 3 ) { aa=10 }
if ( teckentyp == 5) { signUT = signUT + sign1
} else { sign1=" " }
////////// Hitta rätt balktyp
if ((profilen != 1) && (signUT == shape)) {
// cout << "Profilen hittad " << signUT << Dim << endl
profilen=1
}
////////// END OF Hitta rätt balktyp
////////// Hitta rätt dimension
if (profilen==1) {
if ((dim2 == Dim) && (counter == 1 )) { dimension=1 }
if ( (cont2 != counter) ) {
if (dimension==1){
// cout << " counter h b t d R F g " << counter << " " << h << " " << b << " " << t << " " << d << " " << R << " " << F << " " << g << endl
if (proftype==1 && dimension == 1 && counter==2) { h= dim2*10 }
if (proftype==1 && dimension == 1 && counter==3) { b= dim2*10 }
if (proftype==1 && dimension == 1 && counter==4) { t= dim2*10 }
if (proftype==1 && dimension == 1 && counter==5) { d= dim2*10 }
if (proftype==1 && dimension == 1 && counter==6) { R= dim2*10 }
if (proftype==1 && dimension == 1 && counter==7) { F= dim2 }
if (proftype==1 && dimension == 1 && counter==8) { g= dim2 }
}
dim1=dim2=0
}
}
////////// END OF Hitta rätt dimension
} // END OF while (reads (file_pt, textrad) != -1 ) {
closef(file_pt)
} else { // END OF if (file_pt)
cout << "Hittar inte filen " << file << " Kontakta läkare :o)" << endl
cout << endl
}
}
//----------------- VYER -----------------//
///////////////////////////////////////////
// ---VYER-allmänt---
// Kolla profiltyp och anropa rätt funktion
// Om (kapvinkel = 0)
// Rita upp rak profil
// Annars
// Flytta penna ner från insättningspunkt till startpunkt + 100 mm
//
// Byt penna till centrum-penna
// Rita centrumlinje (profil-längd + 100mm åt vardera ände)
//
// Flytta penna ner från insättningspunkt till startpunkt
// Byt penna till heldragen-penna
//
// Om synlig kant och visningläge ON
// rita snylig kantprofil
// Om skymd kant och visningläge ON
// rita skymd kantprofil
// Om visningläge OFF
// rita rak kantprofil
//
// Rita längden av profilen (-kanterna)
//
// Om synlig kant och visningläge ON
// rita snylig kantprofil
// Om skymd kant och visningläge ON
// rita skymd kantprofil
// Om visningläge OFF
// rita rak kantprofil
//
// Byt penna till heldragen-penna
// Rita det sista draget med den!!!!!!!
//////////////////////////////////////////////
// ---VY 3D---
// Rita upp profilen
// Rita upp kapvinklarna
// Ta bort kapvinklarna från profilen
// Rotera runt egen axel
// %360
// om (vridning plan == 0) && (vridning egenaxel != 0)
// vridning plan = vridning egenaxel
// vridning egenaxel=0
//
// Luta profilen
// %180 (-90 / +90)
//
// Rotera i plan
// %360
//
//
// Skriv värden i dialogboxen
//----------------- 3D-VY -----------------//
///////////////////////////////////////////
/// view View3d
///////////////////////////////////////////
view View3d { ?
rita3D()
if (Angel3D1 != 0 && Angel3D2 == 0) {
balk2= cutEdge1 (Bdist1, Adist1)
DRWrotate(balk2, 0, 0, 0, -Rote, -Rotl, 0)
DRWshow(balk2)
}
if (Angel3D1 == 0 && Angel3D2 != 0) {
balk3= cutEdge2 (Bdist2, Adist2)
DRWrotate(balk2, 0, 0, 0, -Rote, -Rotl, 0)
DRWshow(balk3)
}
if (Angel3D1 != 0 && Angel3D2 != 0) {
balk2= cutEdge1 (Bdist1, Adist1)
balk3= cutEdge2 (Bdist2, Adist2)
DRWrotate(balk2, 0, 0, 0, -Rote, -Rotl, 0)
DRWshow(balk3)
}
if (Angel3D1 == 0 && Angel3D2 == 0) {
DRWrotate(extrude1, 0, 0, 0, -Rote, -Rotl, 0)
DRWshow(extrude1)
}
}
///////////////////////////////////////////
/// void rita3D ()
///////////////////////////////////////////
void rita3D () ?
{
DRWreset()
DRWuseMaterial(MATERIAL)
DRWmode(DRW_DIVERT)
integer profile = DRWopenAssembly(0)
DRWmr3(0, 0,-h/2)
DRWadd(profile,DRWlr3(0, b/2,0))
DRWadd(profile,DRWlr3(0, 0,t))
DRWadd(profile,DRWlr3(0, -(b/2-d/2),0))
DRWadd(profile,DRWlr3(0, 0,(h-2*t)))
DRWadd(profile,DRWlr3(0, (b/2-d/2),0))
DRWadd(profile,DRWlr3(0, 0,t))
DRWadd(profile,DRWlr3(0, -b,0))
DRWadd(profile,DRWlr3(0, 0,-t))
DRWadd(profile,DRWlr3(0, (b/2-d/2),0))
DRWadd(profile,DRWlr3(0, 0,-(h-2*t)))
DRWadd(profile,DRWlr3(0, -(b/2-d/2),0))
DRWadd(profile,DRWlr3(0, 0,-t))
DRWadd(profile,DRWlr3(0, b/2,0))
if ((OMKap1 == "Ök X-") || (OMKap1 == "Ök X+") ) {
DRWmoveBy(profile, -b* tan(Angel3D1)/2, 0, 0)
} else {
DRWmoveBy(profile, -h* tan(Angel3D1)/2, 0, 0)
}
extrude1 = DRWextrude(profile,(LENGTH + lengd1 + lengd2), 0,0)
DRWdelete(profile)
}
// Diverse ritfunktioner för 3D-view
///////////////////////////////////////////
/// void cutEdge1 ()
///////////////////////////////////////////
integer cutEdge1 (integer IN1,integer IN2) { ?
DRWreset()
DRWmode(DRW_DIVERT)
integer cutbody1 = DRWopenAssembly(0)
integer extrude2A
DRWma3(0, 0, 0)
DRWmr3(-IN1*tan(Angel3D1)/2, -IN1/2, 0)
DRWadd(cutbody1,DRWlr3(IN1*tan(Angel3D1), 0, 0))
DRWadd(cutbody1,DRWlr3(-IN1*tan(Angel3D1), IN1, 0 ))
DRWadd(cutbody1,DRWlr3(0, -IN1, 0 ))
extrude2A = DRWextrude(cutbody1, 0, 0, IN2)
DRWmoveBy(extrude2A, 0, 0, -IN2/2)
DRWrotate(extrude2A, 0, 0, 0, Turn1, 0, 0)
balk2A = DRWsculpt(DRW_SCULPT_SUBTRACT, extrude1, extrude2A)
DRWdelete(cutbody1)
DRWdelete(extrude2A)
DRWdelete(extrude1)
return (balk2A)
}
///////////////////////////////////////////
/// void cutEdge2 ()
///////////////////////////////////////////
integer cutEdge2 (integer IN1,integer IN2) ?
{
DRWreset()
DRWmode(DRW_DIVERT)
integer cutbody2 = DRWopenAssembly(0)
integer extrude2B
DRWma3(0, 0, 0)
DRWmr3(-IN1*tan(Angel3D2)/2, -IN1/2, 0)
DRWadd(cutbody2,DRWlr3(-IN1*tan(Angel3D2), 0, 0))
DRWadd(cutbody2,DRWlr3(IN1*tan(Angel3D2), IN1, 0 ))
DRWadd(cutbody2,DRWlr3(0, -IN1, 0 ))
extrude2B = DRWextrude(cutbody2, 0, 0, IN2)
DRWmoveBy(extrude2B, (LENGTH + IN1*tan(Angel3D2)), 0, -IN2/2)
DRWrotate(extrude2B, 0, 0, 0, Turn2, 0, 0)
if (Angel3D1 != 0 ) {
balk2 = DRWsculpt(DRW_SCULPT_SUBTRACT, balk2A, extrude2B)
DRWdelete(balk2A)
} else {
balk2 = DRWsculpt(DRW_SCULPT_SUBTRACT, extrude1, extrude2B)
DRWdelete(extrude1)
}
DRWdelete(cutbody2)
DRWdelete(extrude2B)
return (balk2)
}
//----------------- PLAN-VY -----------------//
///////////////////////////////////////////
/// view plan
///////////////////////////////////////////
view plan { ?
DRWreset( )
DRWmode(DRW_DIVERT)
integer profile = DRWopenAssembly(0)
if (Rotl == 90 || Rotl == 270) {
vy3()
} else {
DRWusePen("BtBPen4") // Center (linje typ Chained)
DRWmr2( -(CENTRUML+lengd1), 0)
DRWadd(profile, DRWlr2(LENGTH + 2*CENTRUML+lengd1+lengd2, 0) )
DRWshow (profile)
if (Rote>=180) { a= Rote -180 }
else { a=Rote }
if (a <= 45 || a > 135) { vy1() }
else { vy2() }
}
}
///////////////////////////////////////////
/// void vy1 ()
///////////////////////////////////////////
void vy1 () { ?
DRWreset( )
DRWmode(DRW_DIVERT)
integer profile = DRWopenAssembly(0)
di1 = b
di2 = d/2
di3 = h
di4 = fabs(di3/2*tan(AngelP11))
di5 = fabs(di3/2*tan(AngelP21))
di6 = fabs((h/2-t)*tan(AngelP11))
di7 = fabs((h/2-t)*tan(AngelP21))
if (balktyp == "Synlig kant") {
DRWusePen("BtBPen5") // Hidden
DRWma2(di4 -(di2*tan(AngelP12)), di2)
DRWadd(profile, DRWlr2(LENGTH -di4+(di2*tan(AngelP12)) -di5+(di2*tan(AngelP22)), 0))
DRWma2(di4 +(di2*tan(AngelP12)), -di2)
DRWadd(profile, DRWlr2(LENGTH -di4-(di2*tan(AngelP12)) -di5-(di2*tan(AngelP22)) , 0))
}
DRWusePen("BtBPen1") // Solid
DRWma2(-di4 -(di1*tan(AngelP12)/2), di1/2)
DRWadd(profile, DRWlr2(di1*tan(AngelP12), -di1))
DRWadd(profile, DRWlr2(LENGTH +di4-(di1*tan(AngelP12))/2 +di5-(di1*tan(AngelP22))/2 , 0))
DRWma2(-di4 -(di1*tan(AngelP12)/2), di1/2)
DRWadd(profile, DRWlr2(LENGTH +di4+(di1*tan(AngelP12))/2 +di5+(di1*tan(AngelP22))/2 , 0))
DRWadd(profile, DRWlr2(-(di1*tan(AngelP22)), -di1))
if (balktyp == "Synlig kant") {
if (AngelP11 !=0) {
if (AngelP11 <0) { DRWusePen("BtBPen1") } // Solid
else { DRWusePen("BtBPen5") } // Hidden
DRWma2(di4, di1/2)
DRWadd(profile, DRWlr2(0, -di1))
DRWma2(di6, di1/2)
DRWadd(profile, DRWlr2(0, -((di1/2)+di2)))
DRWadd(profile, DRWlr2(-2*di6, 0))
DRWadd(profile, DRWlr2(0, ((di1/2)+di2)))
DRWma2(di6, -di1/2)
DRWadd(profile, DRWlr2(0, ((di1/2)+di2)))
DRWadd(profile, DRWlr2(-2*di6, 0))
DRWadd(profile, DRWlr2(0, -((di1/2)+di2)))
}
if (AngelP21 !=0) {
if (AngelP21 <0) { DRWusePen("BtBPen1") } // Solid
else { DRWusePen("BtBPen5") } // Hidden
DRWma2(LENGTH-di5, di1/2)
DRWadd(profile, DRWlr2(0, -di1))
DRWma2(LENGTH+di7, di1/2)
DRWadd(profile, DRWlr2(0, -((di1/2)+di2)))
DRWadd(profile, DRWlr2(-2*di7, 0))
DRWadd(profile, DRWlr2(0, ((di1/2)+di2)))
DRWma2(LENGTH+di7, -di1/2)
DRWadd(profile, DRWlr2(0, ((di1/2)+di2)))
DRWadd(profile, DRWlr2(-2*di7, 0))
DRWadd(profile, DRWlr2(0, -((di1/2)+di2)))
}
}
MATrotate (-Rote, 0, 0)
// problem med att vid lutning av profil och planredovisnoneen!!!!!!!!!!!!!!!!!!!!
DRWshow (profile)
}
///////////////////////////////////////////
/// void vy2 ()
///////////////////////////////////////////
void vy2() { ?
DRWreset( )
DRWmode(DRW_DIVERT)
integer profile = DRWopenAssembly(0)
di1 = h
di2 = h/2-t
di3 = b
di4 = fabs(di3/2*tan(AngelP12))
di5 = fabs(di3/2*tan(AngelP22))
di6 = fabs((d/2)*tan(AngelP12))
di7 = fabs((h/2)*tan(AngelP22))
DRWusePen("BtBPen1") // Solid
if(AngelP11 != 0){
DRWma2(-(di1*tan(AngelP11)/2), di1/2)
DRWadd(profile, DRWlr2(di1*tan(AngelP11), -di1))
} else {
DRWma2(-di4, di1/2)
DRWadd(profile, DRWlr2(0, -t))
DRWmr2(fabs((di3/2-d/2)*tan(AngelP12)), 0)
DRWadd(profile, DRWlr2(0, -(di1-t-t)))
DRWmr2(-fabs((di3/2-d/2)*tan(AngelP12)), 0)
DRWadd(profile, DRWlr2(0, -t))
}
if(AngelP21 != 0){
DRWma2(LENGTH +(di1*tan(AngelP21))/2, di1/2)
DRWadd(profile, DRWlr2(-(di1*tan(AngelP21)), -di1))
} else {
DRWma2(LENGTH +(di1*tan(AngelP21))/2+di5, di1/2)
DRWadd(profile, DRWlr2(0, -t))
DRWmr2(-fabs((di3/2-d/2)*tan(AngelP22)), 0)
DRWadd(profile, DRWlr2(0, -(di1-t-t)))
DRWmr2(fabs((di3/2-d/2)*tan(AngelP22)), 0)
DRWadd(profile, DRWlr2(0, -t))
}
DRWSma2(-di4 +(di1*tan(AngelP11)/2), -di1/2)
DRWadd(profile, DRWlr2(LENGTH +di4-(di1*tan(AngelP11))/2 +di5-(di1*tan(AngelP21))/2 , 0))
DRWma2(-di4 -(di1*tan(AngelP11)/2), di1/2)
DRWadd(profile, DRWlr2(LENGTH +di4+(di1*tan(AngelP11))/2 +di5+(di1*tan(AngelP21))/2 , 0))
DRWma2(-di4 -(di2*tan(AngelP11)), di2)
DRWadd(profile, DRWlr2(LENGTH +di4+(di2*tan(AngelP11)) +di5+(di2*tan(AngelP21)), 0))
DRWma2(-di4 +(di2*tan(AngelP11)), -di2)
DRWadd(profile, DRWlr2(LENGTH +di4-(di2*tan(AngelP11)) +di5-(di2*tan(AngelP21)) , 0))
if (balktyp == "Synlig kant") {
if (AngelP12 !=0) {
if (AngelP12 >0) { DRWusePen("BtBPen1") } // Solid
else { DRWusePen("BtBPen5") } // Hidden
DRWma2(di4, di1/2)
DRWadd(profile, DRWlr2(0, -t))
DRWadd(profile, DRWlr2(-fabs((di3/2-d/2)*tan(AngelP12)), 0))
DRWadd(profile, DRWlr2(0, -(di1-t-t)))
DRWadd(profile, DRWlr2(fabs((di3/2-d/2)*tan(AngelP12)), 0))
DRWadd(profile, DRWlr2(0, -t))
}
if (AngelP22 !=0) {
if (AngelP22 >0) { DRWusePen("BtBPen1") } // Solid
else { DRWusePen("BtBPen5") } // Hidden
DRWma2(LENGTH +(di1*tan(AngelP21))/2-di5, di1/2)
DRWadd(profile, DRWlr2(0, -t))
DRWmr2(fabs((di3/2-d/2)*tan(AngelP22)), 0)
DRWadd(profile, DRWlr2(0, -(di1-t-t)))
DRWmr2(-fabs((di3/2-d/2)*tan(AngelP22)), 0)
DRWadd(profile, DRWlr2(0, -t))
}
}
MATrotate (-Rote+90, 0, 0)
DRWshow (profile)
}
////////////////////////////////////
/// void vy3()
///////////////////////////////////
void vy3() ?
{
DRWreset( )
DRWmode(DRW_DIVERT)
integer profile = DRWopenAssembly(0)
DRWmr2(0,-h/2)
DRWadd(profile,DRWlr2(b/2,0))
DRWadd(profile,DRWlr2(0,t))
DRWadd(profile,DRWlr2(-(b/2-R-d/2),0))
DRWadd(profile,DRWarSER(DRW_CW,-R,R,R))
DRWadd(profile,DRWlr2(0,(h-2*R-2*t)))
DRWadd(profile,DRWarSER(DRW_CW,R,R,R))
DRWadd(profile,DRWlr2((b/2-R-d/2),0))
DRWadd(profile,DRWlr2(0,t))
DRWadd(profile,DRWlr2(-b,0))
DRWadd(profile,DRWlr2(0,-t))
DRWadd(profile,DRWlr2((b/2-R-d/2),0))
DRWadd(profile,DRWarSER(DRW_CW,R,-R,R))
DRWadd(profile,DRWlr2(0,-(h-2*R-2*t)))
DRWadd(profile,DRWarSER(DRW_CW,-R,-R,R))
DRWadd(profile,DRWlr2(-(b/2-R-d/2),0))
DRWadd(profile,DRWlr2(0,-t))
DRWadd(profile,DRWlr2(b/2,0))
MATrotate (0, 0, -(Rote-90))
DRWshow(profile)
}