Beslag voor HALUX kaderdeuren, zowel voor kaderdeuren, klapdeuren als schuifdeuren, e.a. persistent Res.PI.Items 0 OPGELET: waarden zworden bewaard als %STRING, d.w.z decimale getallen bevatten een "." (PUNT) !
Dit is opgevat als een array aangezien verschillende beslagen verschillende eisen hebben.
De toepassing zal de specifieke gegevens verwerken.
Bv. x.SetAt("16.3","DFL") : De default afstand is 16,3mm. of x.SetAt("13","MIN") : Minimale opdek is 13mm

Het element met array-index "TYP" bepaalt de functie van AfstandBoorMaat, dit wil zeggen de positie t.o.v. welke rand (kant) van het profiel.
Mogelijke waarden: "ON+", "ON-", "IN+", "IN-", "EX+", "EX-", "BO+", "BO-" ]]>
%Library.String array
%Library.String %Library.String list Res.PI.ProfType list Res.PI.Toepas list Boringen voor het beslag tov van de oorsprong. Prod.GADef.emKadBoring list
  • VRZH : VRijeZone in de Hoogte (breedte = profielbreedte)
  • VRZBOR : VRijeZone (in de Hoogte) voor de de boringen ]]> %Library.Float array %Library.String Kost van het beslag, in de kost zit zowel de materiaalkost als machinekost en verwerkingskost. Res.PI.Kost Afstand dat de deur de korpus bedekt. Dit is opgevat als een array om dat verschillende beslagen verschillende eisen hebben. De toepassing zal de specifieke gegevens verwerken. Bv. Opdek.SetAt(16,"1") : De default afstand is 16mm. of Opdek.SetAt(13,"MIN") : Minimale opdek is 13mm %Integer array Opmerking die aan de gebruiker kan gegeven worden bij overschrijding van bepaalde ingaven. %String array ValueList en DisplayList verwijderd door WimV op 12-12-2011 : DISPLAYLIST = ";Kader;Std 35mm", VALUELIST = ";KAD;STD" %Library.String Mogelijke waarden voor CodeFrom:
  • NEXT : geen "FromObject" nodig
  • FIRST : parameter "FromObject" is verplicht; Kan zijn: Res.PI.Verbind (of Res.PI.ProfType), Res.PI.Beslag.
  • LAST : idem FIRST ]]> CodeFrom:%Library.String="NEXT",FromObject:%Persistent %Library.Float 0) VZ=%this.ConstructAfm.GetAt("VRZH") Else If CodeFrom=$$$FROMFIRST Do . Set VZ=$$VZFromVerbind(CodeFrom,FromObject) Else If CodeFrom=$$$FROMLAST Do . Set VZ=$$VZFromVerbind(CodeFrom,FromObject) Else Do . Set VZ=0 Quit VZ VZFromVerbind(CodeFrom,FromObject) New Fobj,VZBeslag,VZHoek,VRZH,OFFSY,VZCalc Set FromObject=$G(FromObject,"") If FromObject="" Do . Set Fobj="" Else If FromObject.%ClassName()="ProfType" Do . Set Fobj=FromObject.Hoek Else If FromObject.%ClassName()="Verbind" Do . Set Fobj=FromObject Else Set Fobj="" Set VRZH=%this.ConstructAfm.GetAt("VRZH") Set OFFSY=%this.ConstructAfm.GetAt("OFFSY") Set VZHoek=0 Set VZBeslag=%this.ConstructAfm.GetAt("VRZHPOTS") Set:(Fobj'="") VZHoek=Fobj.ConstructAfm.GetAt("VRZPOTS") If (VZBeslag'>0)!(VZHoek'>0) Do . Set VZBeslag=%this.ConstructAfm.GetAt("VRZHBOR") . Set:(Fobj'="") VZHoek=Fobj.ConstructAfm.GetAt("VRZBOR") Set:(VZBeslag'>0) VZBeslag=VRZH ; VZHoek equals 0 if Fobj="", or has also a reasonable value. ; Determine position of "OFFSY in relation to VZBeslag": ; OFFSY is always the offset from VRZH ; since the middles of VRZH and VZBeslag are the same, "OFFSY in relation to VZBeslag" lies half the difference of VZBeslag and VRZH lower than to VRZH. Set VZCalc=0.5*(VZBeslag-VRZH)+OFFSY Quit:(CodeFrom=$$$FROMLAST) (VZBeslag-VZCalc)+VZHoek Quit:(CodeFrom=$$$FROMFIRST) VZCalc+VZHoek Quit 0 ]]> ; ... ; New strVML,NL,TRVZHoogte,TRVZBreedte, TROffsX,TROffsY, TRXPos,TRYPos, TRLeft,TRTop New TYP,BoorKey,objBoring,tmpX,tmpY ;,strDevObj If $G(BPosX)="" Set BPosX=0 If $G(BPosY)="" Set BPosY=0 If $G(BPosZ)="" Set BPosZ=0 If $G(Plaats)="" Set Plaats="PL" Set NL=$C(13)_$C(10) Set strVML="" ; Get and Transform Vrijze Zone Do TransformGetVRZ(.TRVZHoogte,.TRVZBreedte) Quit:(TRVZHoogte="")!(TRVZBreedte="") ; Get and Transform OffsetX and OffsetY Do TransformGetOffsXY(.TROffsX,.TROffsY,TRVZHoogte,TRVZBreedte) ; Set VML Group and surrounding rectangle If $G(Opties)["C" Set strVML=strVML_""_NL Set strVML=strVML_$$xvwVMLGroepOpen(BPosX-TROffsX,BPosY-TROffsY, TRVZBreedte,TRVZHoogte)_NL Set strVML=strVML_$$xvwVMLRectangle(0,0, TRVZBreedte,TRVZHoogte)_NL ; Vrije Zone Do WRITE^XMLWRITE(DevObj,strVML) Set strVML="" ; Draw BeslagBoringen Set BoorKey="" For Do %this.Boringen.GetNext(.BoorKey) Quit:BoorKey="" Do . Set objBoring=%this.Boringen.GetAt(BoorKey) . ; Property values [XPos] and [YPos] will be modified TEMPORARILY: transformation to the correct Profiel. . Set tmpX=objBoring.XPos . Set tmpY=objBoring.YPos . ; Transform (X,Y)-coordinates according to the Axes Transformation . Set objBoring.XPos=$S(Plaats="PR":-tmpX, (Plaats="PB")!(Plaats="PO"):tmpY, 1:tmpX) . Set objBoring.YPos=$S(Plaats="PR":tmpY, Plaats="PB":tmpX, Plaats="PO":-tmpX, 1:tmpY) . ; Translation of the origin to the Upper Left Corner of the . Set objBoring.XPos=objBoring.XPos+TROffsX . Set objBoring.YPos=objBoring.YPos+TROffsY . ; . ;Do BoringxXMLBeslagBoring^VHSys.Library.KadBoringTest(DevObj,Plaats,1,%this.TekeningCode,"",objBoring) . Do objBoring.XMLBeslagBoring(DevObj,Plaats,1,%this.TekeningCode,"") . ; . ; Reset to original values . Set objBoring.XPos=tmpX . Set objBoring.YPos=tmpY . Do objBoring.%Close() Set strVML="" Set strVML=strVML_$$xvwVMLGroepClose()_NL Do WRITE^XMLWRITE(DevObj,strVML) Quit TransformGetVRZ(TRVZHoogte,TRVZBreedte) ; Parameters should be passed by reference ! ; Get Vrijze Zone New VRZH,VRZB Set VRZH=%this.ConstructAfm.GetAt("VRZH") Set VRZB=%this.ConstructAfm.GetAt("VRZB") ;Quit:(VRZH="")!(VRZB="") ; Transform Vrijze Zone Set TRVZHoogte=$S(Plaats="PB"!(Plaats="PO"):VRZB, 1:VRZH) Set TRVZBreedte=$S(Plaats="PB"!(Plaats="PO"):VRZH, 1:VRZB) Quit TransformGetOffsXY(TROffsX,TROffsY,TRVZHoogte,TRVZBreedte) ; Parameters should be passed by reference ! ; Get OffsetX and OffsetY New OffsX,OffsY Set OffsX=0 ; Default Set OffsY=0 ; Default Set OffsX=%this.ConstructAfm.GetAt("OFFSX") Set OffsY=%this.ConstructAfm.GetAt("OFFSY") ; Transform OffsetX and OffsetY If Plaats="PL" Do . Set TROffsX=OffsX . Set TROffsY=OffsY Else If Plaats="PR" Do . Set TROffsX=TRVZBreedte-OffsX . Set TROffsY=OffsY Else If Plaats="PB" Do . Set TROffsX=OffsY . Set TROffsY=OffsX Else If Plaats="PO" Do . Set TROffsX=OffsY . Set TROffsY=TRVZHoogte-OffsX Else Do . Quit Quit xvwVMLGroepOpen(Left,Top,Width,Height) Set:(Width\1'>0) Width=1 Set:(Height\1'>0) Height=1 Quit "" xvwVMLRectangle(Left,Top,Width,Height) Quit "" xvwVMLGroepClose() Quit "" ]]> Ophalen Beslagen met beperking op Ophang(key), op ProfielType en op Code %Library.SQLQuery OphangKey:%Library.String,ProfielType:%Library.String,Code:%Library.String SELECT ID, ItemID, Omschrijving, Sort FROM Beslag WHERE (BeperkingOphang LIKE ('%' || :OphangKey || '%')) AND (BeperkingProfType LIKE ('%' || :ProfielType || '%')) AND (BeperkingCode LIKE ('%' || :Code || '%')) ORDER BY Sort Ophalen Beslagen met beperking op Ophang(key) en op ProfielType %Library.SQLQuery OphangKey:%Library.String,ProfielType:%Library.String SELECT ID, ItemID, Omschrijving, Sort FROM Beslag WHERE (BeperkingOphang LIKE ('%' || :OphangKey || '%')) AND (BeperkingProfType LIKE ('%' || :ProfielType || '%')) ORDER BY Sort Lijst met taalafhankelijke omschrijving %Library.SQLQuery Taal:%Library.String="N" SELECT BSL.ID, BSL.ItemID, (BSL.ItemID || ' - ' || BSLT.TaalOms) Oms FROM Res_PI.Beslag BSL, Res_PI.Beslag_TaalOms BSLT WHERE (BSL.ID=BSLT.Beslag) AND (BSLT.element_key='N') AND (BSL.BeperkingOphang LIKE '%S%') ORDER BY BSL.Sort %Library.CacheStorage BeslagDefaultData AfstandBoorMaat subnode "ABM" "BSL" BeperkingProfType BeperkingToepas Kost KortTekst TekeningCode Boringen BeperkingOphang BeperkingCode KostOLD OLDKostOLD ConstructAfm subnode "CA" Opdek subnode "OPD" TaalOpmerking subnode "TOPM"