Index: VHSys/Library/VMLLib.mac.rou =================================================================== diff -u --- VHSys/Library/VMLLib.mac.rou (revision 0) +++ VHSys/Library/VMLLib.mac.rou (revision 914) @@ -0,0 +1,406 @@ + + ; Geeft de VML-code voor Boringen en Frezingen + ; !!! Opties moet als .LOCAL doorgegeven worden !!! + ; Mogelijke waarden voor Opties: + ; + (algemeen) + ; Node "AT" : Attribute Title; dit is de ToolTipText + ; + (alleen bij $$CrossHVLeftTop, $$CrossDiagLeftTop) + ; - "LW=S" : LineWeight=Small (1px i.p.v. 1.5px) + ; + (alleen bij $$LosProfiel + ; - "R=I" : voor inverse plaatsing + ; - "D=..." : toont waarde (...) als text. OPGELET: EERSTE EN ENIGE OPTIE bij het tonen van Dossier + + +#define VMLTitle $G(Opties("AT"),"") + +VMLShape(VmlID,MidX,MidY,intSize,Rotation,strColor,Opties) + Quit:(VmlID="KAD") $$KADFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="KADFER") $$KADFERFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="KADBM" ) $$KADBMFREES( MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="KAD120") $$KAD120FREES(MidX,MidY,Rotation,strColor,.Opties) + ;Quit:(VmlID="KAD120Z") $$KAD120ZFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:($E(VmlID,1,4)="SD30") $$SD30FREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:($E(VmlID,1,4)="SD35") $$SD35FREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:($E(VmlID,1,5)="STRIM") $$STRIMxFREES(MidX,MidY,intSize,Rotation,strColor,.Opties) + Quit:(VmlID="UPPER") $$UPPERFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="UPPERZ") $$UPPERZFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="NOVAB") $$NOVABFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="NOVABZ") $$NOVABZFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="NOVAL") $$NOVAxLRxFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="NOVAR") $$NOVAxLRxFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="NOVALZ") $$NOVAxLRZxFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="NOVARZ") $$NOVAxLRZxFREES(MidX,MidY,Rotation,strColor,.Opties) + Quit:(VmlID="REGULA_SM") $$SD35FREES(MidX,MidY,Rotation,strColor,.Opties) + Quit "" + +KADFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Kaderscharnier BLUM + New FreesL,FreesB + Set FreesB=16 + Set FreesL=14 + Quit $$KadFreesRect("-") +KADFERFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Kaderscharnier FERRARI + New FreesL,FreesB + Set FreesB=16 + Set FreesL=22 + Quit $$KadFreesRect("-") +KAD120FREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Kaderscharnier Blum 120� + New FreesL,FreesB,VML + Set FreesB=2 + Set FreesL=46 + Set VML=$$KadFreesRect("-") + Set FreesB=16 + Set FreesL=22 + Set VML=VML_$$KadFreesRect("-") + Quit VML + Quit "Complexe Frees VML" ; (2 rechthoeken) + /* +KAD120ZFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Kaderscharnier Blum 120� + New FreesL,FreesB + Set FreesB=8 + Set FreesL=46 + Quit $$KadFreesRect("-") + */ +KadFreesRect(Type) + ; (MidX,MidY) is het nulpunt van de frezing en ligt op de zijkant van de rechthoek (in de helft van de lange zijde) + New tmpRotation + Set FreesL=FreesL\2*2 + Set tmpRotation=Rotation + Set:($G(Type)="-") tmpRotation=(tmpRotation+180)#360 ; Spiegeling over Lengte-as simuleren door rotatie van 180� + ;d WL^vhDBG("Rotation: orig="_Rotation_" Type="_$G(Type)_" tmpRot="_tmpRotation) + Quit:(tmpRotation= 0) $$RectangleLeftTop(MidX,MidY-(FreesL\2), FreesB,FreesL, FillColor,FillColor,1,1,.Opties) + Quit:(tmpRotation= 90) $$RectangleLeftTop(MidX-(FreesL\2),MidY, FreesL,FreesB, FillColor,FillColor,1,1,.Opties) + Quit:(tmpRotation=180) $$RectangleLeftTop(MidX-FreesB,MidY-(FreesL\2), FreesB,FreesL, FillColor,FillColor,1,1,.Opties) + Quit:(tmpRotation=270) $$RectangleLeftTop(MidX-(FreesL\2),MidY-FreesB, FreesL,FreesB, FillColor,FillColor,1,1,.Opties) + Quit "" + +KADBMFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag + New Diam,MidOffs,Offs,OffsOppos,P1,P2 + Set Diam=35 + Set MidOffs=-6.0 + Set Offs=(Diam/2)-MidOffs + Set OffsOppos=(Diam/2)+MidOffs + Set P1=0.28 ; calculated sqrt + Set P2=34.72 ; opposite of arcP1 + Set Rotation=(Rotation+180)#360 ; Spiegeling over Lengte-as simuleren door rotatie van 180� + Quit:(Rotation= 0) $$SD3xShape(MidX-Offs,MidY-(Diam\2), Diam, FillColor,,Offs,P2,Offs,P1,.Opties) + Quit:(Rotation= 90) $$SD3xShape(MidX-(Diam\2),MidY-Offs, Diam, FillColor,,P1,Offs,P2,Offs,.Opties) + Quit:(Rotation=180) $$SD3xShape(MidX-OffsOppos,MidY-(Diam\2), Diam, FillColor,,OffsOppos,P1,OffsOppos,P2,.Opties) + Quit:(Rotation=270) $$SD3xShape(MidX-(Diam\2),MidY-OffsOppos, Diam, FillColor,,P2,OffsOppos,P1,OffsOppos,.Opties) + Quit "" + +SD30FREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag + New Diam,MidOffs,Offs,OffsOppos,P1,P2 + Set Diam=30 + Set MidOffs=2.9 + Set Offs=(Diam/2)-MidOffs + Set OffsOppos=(Diam/2)+MidOffs + Set P1=0.28 ; calculated sqrt + Set P2=29.72 ; opposite of arcP1 + Quit:(Rotation= 0) $$SD3xShape(MidX-Offs,MidY-(Diam\2), Diam, FillColor,,Offs,P2,Offs,P1,.Opties) + Quit:(Rotation= 90) $$SD3xShape(MidX-(Diam\2),MidY-Offs, Diam, FillColor,,P1,Offs,P2,Offs,.Opties) + Quit:(Rotation=180) $$SD3xShape(MidX-OffsOppos,MidY-(Diam\2), Diam, FillColor,,OffsOppos,P1,OffsOppos,P2,.Opties) + Quit:(Rotation=270) $$SD3xShape(MidX-(Diam\2),MidY-OffsOppos, Diam, FillColor,,P2,OffsOppos,P1,OffsOppos,.Opties) + Quit "" + +SD35FREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag + New Diam,MidOffs,Offs,OffsOppos,P1,P2 + Set Diam=35 + Set MidOffs=7.5 + Set Offs=(Diam/2)-MidOffs + Set OffsOppos=(Diam/2)+MidOffs + Set P1=1.69 ; calculated sqrt + Set P2=33.31 ; opposite of arcP1 + Quit:(Rotation= 0) $$SD3xShape(MidX-Offs,MidY-(Diam\2), Diam, FillColor,,Offs,P2,Offs,P1,.Opties) + Quit:(Rotation= 90) $$SD3xShape(MidX-(Diam\2),MidY-Offs, Diam, FillColor,,P1,Offs,P2,Offs,.Opties) + Quit:(Rotation=180) $$SD3xShape(MidX-OffsOppos,MidY-(Diam\2), Diam, FillColor,,OffsOppos,P1,OffsOppos,P2,.Opties) + Quit:(Rotation=270) $$SD3xShape(MidX-(Diam\2),MidY-OffsOppos, Diam, FillColor,,P2,OffsOppos,P1,OffsOppos,.Opties) + Quit "" + +SD3xShape(Left,Top,Diam,FillColor,BorderColor,arcX1,arcY1,arcX2,arcY2,Opties) + ; Special shape used for SD (SchuifDeur)-beslag. Draw arc + New VML,scl,DiamScl + Set scl=100 + Set DiamScl=(Diam*scl)\1 + Set VML="" + Set VML=VML_"" + Quit VML + +STRIMxFREES(MidX,MidY,intSize,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag "STRIMM" + New FreesL,FreesB + Set FreesL=intSize\2*2 + Set FreesB=16 + Quit:(Rotation#180= 0) $$RectangleLeftTop(MidX-(FreesB\2),MidY-(FreesL\2), FreesB,FreesL, FillColor,FillColor,1,1,.Opties) + Quit:(Rotation#180=90) $$RectangleLeftTop(MidX-(FreesL\2),MidY-(FreesB\2), FreesL,FreesB, FillColor,FillColor,1,1,.Opties) + Quit "" + +UPPERFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag "UPPER" + New FreesL,FreesB + Set FreesB=16 + Set FreesL=80 + Quit $$KadFreesRect("+") + +UPPERZFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag "UPPER" + New FreesL,FreesB + Set FreesB=12 + Set FreesL=54 + Quit $$KadFreesRect($S($G(Opties)["MirrorL=1;":"-", 1:"+")) ; UPPERZ steeds op ProfKant "EX" ==> steeds "-" + +NOVABFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag "NOVA" + New FreesL,FreesB + Set FreesB=11 + Set FreesL=6 + Quit $$KadFreesRect("+") + +NOVABZFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag "NOVA" + New VML,FreesL,FreesB + Set VML="" + Set FreesB=2 + Set FreesL=6 + s:('$D(ClientIP)) ClientIP="192.168.1.97" + ;d WL^vhDBG("Nova BZ: x="_MidX_" y="_MidY_" rot="_Rotation) + ;d WL^vhDBG("opties:"_$G(Opties)) + + Set VML=VML_$$KadFreesRect($S($G(Opties)["MirrorL=1;":"-", 1:"+")) ; NOVABZ steeds op ProfKant "EX" ==> steeds "+" + Set MidY=MidY-2 + Set FreesB=8 + Set FreesL=58 + ;d WL^vhDBG("Nova BZ2: x="_MidX_" y="_MidY_" rot="_Rotation) + Set VML=VML_$$KadFreesRect($S($G(Opties)["MirrorL=1;":"-", 1:"+")) ; NOVABZ steeds op ProfKant "EX" ==> steeds "+" + Quit VML + +NOVAxLRxFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES in Schuifdeurbeslag "NOVA" + New FreesL,FreesB + Set FreesB=17 + Set FreesL=26 + Quit $$KadFreesRect("+") + +NOVAxLRZxFREES(MidX,MidY,Rotation,FillColor,Opties) ; FREES (deel 2) in Schuifdeurbeslag "NOVA" + New FreesL,FreesB + Set FreesB=13 + Set FreesL=55 + Set MidY=MidY-2 + Quit $$KadFreesRect($S($G(Opties)["MirrorL=1;":"-", 1:"+")) ; NOVAxLRZ steeds op ProfKant "EX" ==> steeds "+" + + +Oval(MidX,MidY,Width,Height,FillColor,BorderColor,Opties) + Quit $$OvalLeftTop(MidX-(Width\2),MidY-(Height\2), Width\2*2,Height\2*2, FillColor,$G(BorderColor,FillColor),.Opties) + +Circle(MidX,MidY,Diam,FillColor,BorderColor,Opties) + Quit $$OvalLeftTop(MidX-(Diam\2),MidY-(Diam\2), Diam\2*2,, FillColor,$G(BorderColor,FillColor),.Opties) + +Rectangle(MidX,MidY,Width,Height,FillColor,BorderColor,blnFill,Opties) + Quit $$RectangleLeftTop(MidX-(Width\2),MidY-(Height\2), Width\2*2,Height\2*2, FillColor,$G(BorderColor,FillColor),.blnFill,"1.0",.Opties) + /* + Quit "" + */ + +CrossDiag(MidX,MidY,Width,Height,LineColor,Opties) + Quit $$CrossDiagLeftTop(MidX-(Width\2),MidY-(Height\2), Width\2*2,Height\2*2, LineColor,.Opties) + +CrossHV(MidX,MidY,Width,Height,LineColor,Opties) + Quit $$CrossHVLeftTop(MidX-(Width\2),MidY-(Height\2), Width\2*2,Height\2*2, LineColor,.Opties) + +TCross(MidX,MidY,Width,Height,LineColor,Rotation,Opties) + ; Draws a T-Crossing. + ; (MidX,MidY) is the position of the crosspoint, Rotation=90 corresponds to the " T " symbol. Rotate clockwise + ; Used for KaderDeur.Zijboring: Rotation=0 corresponds to a zijboring PL(left), EX(externe zijkant) + Set Rotation=$G(Rotation,0) + New VML,W,H + Set W=Width + Set H=Height + Set VML="" + If Rotation=0 Do + . Set VML=VML_"" + . Set VML=VML_"" + . ; =$$TCrossLeftTop(MidX,MidY-(H\2), W,H\2*2, + Else If Rotation=90 Do + . Set VML=VML_"" + . Set VML=VML_"" + . ; =$$TCrossLeftTop(MidX-(W\2),MidY, W\2*2,H, + Else If Rotation=180 Do + . Set VML=VML_"" + . Set VML=VML_"" + . ; =$$TCrossLeftTop(MidX-W,MidY-(H\2), W,H\2*2, + Else If Rotation=270 Do + . Set VML=VML_"" + . Set VML=VML_"" + . ; =$$TCrossLeftTop(MidX-(W\2),MidY-H, W\2*2,H, + Else Quit "" + Quit VML + + +OvalLeftTop(Left,Top,Width,Height,FillColor,BorderColor,Opties) + ; Draws an ellips with specified measurements in VML. [Height] is optional, default=Width + Set:($G(Height)'="0") Height=+$G(Height,Width) + Quit "" + +RectangleLeftTop(Left,Top,Width,Height,FillColor,BorderColor,FillOpacity,BorderOpacity,Opties) + ; Draws a rectangle; default is a solid line(border) and not filled ([FillOpacity=0]). + ; To fill the rectangle: set [FillOpacity=1]. + New VML + Set VML="" + Quit VML_">" + +CrossDiagLeftTop(Left,Top,Width,Height,LineColor,Opties) + ; Draws the diagonal lines (cross) of the surrounding rectangle + ; Opties: "LW=S" : LineWeight=Small (1px i.p.v. 1.5px) + New VML,MaxX,MaxY,LW + Set Left=Left\1 + Set Top=Top\1 + Set MaxX=Left+(Width\1) ; \2*2) + Set MaxY=Top+(Height\1) ; \2*2) + Set LW=$S($G(Opties)["LW=S":"1px", 1:"1.5px") + Set VML="" + Set VML=VML_"" + Set VML=VML_"" + Quit VML + +CrossHVLeftTop(Left,Top,Width,Height,LineColor,Opties) + ; Draws the Horizontal-Vertical Cross ("+" sign) of the surrounding rectangle + ; Opties: "LW=S" : LineWeight=Small (1px i.p.v. 1.5px) + New VML,MidX,MidY,LW + Set Left=Left\1 + Set Top=Top\1 + Set MidX=Left+(Width\2) + Set MidY=Top+(Height\2) + Set LW=$S($G(Opties)["LW=S":"1px", 1:"1.5px") + Set VML="" + Set VML=VML_"" + Set VML=VML_"" + Quit VML + +TCrossLeftTop(Left,Top,Width,Height,LineColor,Rotation,Opties) + New VML,MidX,MidY,MaxX,MaxY + Set Left=Left\1 + Set Top=Top\1 + Set MidX=Left+(Width\2) + Set MidY=Top+(Height\2) + Set MaxX=Left+(Width\2*2) + Set MaxY=Top+(Height\2*2) + Set VML="" + If Rotation=0 Do + . Set VML=VML_"" + . Set VML=VML_"" + Else If Rotation=90 Do + . Set VML=VML_"" + . Set VML=VML_"" + Else If Rotation=180 Do + . Set VML=VML_"" + . Set VML=VML_"" + Else If Rotation=270 Do + . Set VML=VML_"" + . Set VML=VML_"" + Else Quit "" + Quit VML + + +LosProfGroepHeight(Breedte,Dikte,TypeZicht) + New Hght + Quit:(TypeZicht="ON") $G(Breedte,1000) + Quit:(TypeZicht="IN") $G(Dikte,1000) + Quit:(TypeZicht="BO") $G(Breedte,1000) + Quit:(TypeZicht="EX") $G(Dikte,1000) + ; Else ; Standard Rectangle + Set Hght=$G(Breedte,1000) + Quit Hght + +LosProfiel(Lengte,Breedte,Dikte,TypeZicht,Opties) + ; TypeZicht : ProfZijkant dat het bovenaanzicht zal tonen + ; Opties: "R=I" voor inverse plaatsing + ; "D=..." toont waarde (...) als text. OPGELET: dit moet de LAATSTE OPTIE zijn bij het tonen van Dossier + New VML,sPath,InrLine,blnInrLine,DosNr + Set Lengte=$G(Lengte,1000)\1 + Set Breedte=$G(Breedte,80)\1 + Set Dikte=$G(Dikte,30)\1 + Set DosNr=$S(";"_$G(Opties)[";D=":""_$P($P(Opties,";D=",1),";",2,99)_"", 1:"") ; _$P(Opties,";",1)_ + If TypeZicht="ON" Do + . Set sPath="m0,0 l "_Lengte_",0, "_(Lengte-Breedte)_","_Breedte_", "_Breedte_","_Breedte_"xe" + . Set VML=""_DosNr_"" + Else If TypeZicht="IN" Do + . Set InrLine=6 + . Set sPath="m0,0 l "_Lengte_",0, "_Lengte_","_Dikte_", 0,"_Dikte_"x m"_Breedte_",0 l "_Breedte_","_Dikte + . Set sPath=sPath_" m"_(Lengte-Breedte)_",0 l "_(Lengte-Breedte)_","_Dikte_" m0,"_InrLine_" l "_InrLine_","_InrLine + . Set sPath=sPath_" m"_(Breedte-InrLine)_","_InrLine_" l "_Breedte_","_InrLine + . Set sPath=sPath_" m"_(Lengte-Breedte)_","_InrLine_" l "_(Lengte-Breedte+InrLine)_","_InrLine + . Set sPath=sPath_" m"_(Lengte-InrLine)_","_InrLine_" l "_(Lengte)_","_InrLine_" e" + . Set VML=""_DosNr_"" + Else If TypeZicht="EX" Do + . Set InrLine=6 + . Set sPath="m0,0 l "_Lengte_",0, "_Lengte_","_Dikte_", 0,"_Dikte_"xe" + . Set VML=""_DosNr_"" + . Set blnInrLine='($G(Opties)["INRLINE=0") ; Voor Extern Profiel: Inner Lines tekenen (dashed); default=TRUE + . If blnInrLine Do + .. Set sPath="m"_Breedte_",0 l "_Breedte_","_Dikte_" m"_(Lengte-Breedte)_",0 l "_(Lengte-Breedte)_","_Dikte + .. Set sPath=sPath_" m0,"_(Dikte-InrLine)_" l "_InrLine_","_(Dikte-InrLine) + .. Set sPath=sPath_" m"_(Breedte-InrLine)_","_(Dikte-InrLine)_" l "_Breedte_","_(Dikte-InrLine) + .. Set sPath=sPath_" m"_(Lengte-Breedte)_","_(Dikte-InrLine)_" l "_(Lengte-Breedte+InrLine)_","_(Dikte-InrLine) + .. Set sPath=sPath_" m"_(Lengte-InrLine)_","_(Dikte-InrLine)_" l "_(Lengte)_","_(Dikte-InrLine)_" e" + .. Set VML=VML_""_""_"" + . If 1 Do ; Zichtkant aanduiden met stippellijn + .. Set sPath="m0,0 l "_Lengte_",0 e" + .. Set VML=VML_""_""_"" + . ; End of Profiel Extern + Else Do ; Draw Standard Rectangle + . Set sPath="m0,0 l "_Lengte_",0, "_Lengte_","_Breedte_", 0,"_Breedte_"xe" + . Set VML=""_DosNr_"" + Quit VML + +LosProfONCorner + ; VML voor Los Profiel OP Kaderdeur getekend + ; ZIE ProfONCorner() + Quit +ProfONCorner(CornerX,CornerY,ProfLengte,ProfBreedte,ProfPlaats,FillColor,BorderColor,FillOpacity,BorderOpacity,Opties) + ; VML-vorm van een Profiel (ONder/boven-aanzicht), getekend vanuit de hoek van de KaderDeur + ; In plaats van ...LeftTop() wordt hier gebruik gemaakt van ...Corner() omwille van de nauwkeurigheid (afrondingen!). + ; Aanduiden van de Corners-(X,Y): + ; - ProfPlaats="PL" ==> hoek: Links Boven + ; - ProfPlaats="PB" ==> hoek: Links Boven + ; - ProfPlaats="PR" ==> hoek: Rechts Boven + ; - ProfPlaats="PO" ==> hoek: Links Onder + ; + ; Default is a solid line(border) and not filled ([FillOpacity=0]). + ; To fill the rectangle: use [FillOpacity=1]. + New VML,sPath,Lengte,Breedte,CXRechts,CYOnder + Set CXRechts=(CornerX-ProfBreedte)\1 + Set CYOnder=(CornerY-ProfBreedte)\1 + Set CornerX=CornerX\1 + Set CornerY=CornerY\1 + Set Lengte=ProfLengte\1 + Set Breedte=ProfBreedte\1 + + If ProfPlaats="PL" Do + . Set sPath="m0,0 l 0,"_Lengte_", "_Breedte_","_(Lengte-Breedte)_", "_Breedte_","_Breedte_"xe" + . Set VML="" + Quit VML_" "_$G(Opties,"")_">" \ No newline at end of file