33
“Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

“Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

“HelloWorld”TheCompleteBeginner’sGuidetoQIFImplementationRobert(Bob)StoneMemberDimensionalMetrologyStandardsConsortium

Page 2: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

WhatisQIF?

…fromasoftwaredevelopersperspective?

• It’saStandard– downloadable,documented,stable• It’sanInformationFramework- adatamodel- listsofthingsjoinedtogetherbyids

• It’sscopeisQuality:results,statistics,resources,plans,rules,MBD,visualization

• It’sBIG

Page 3: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

WhatisQIF?

…fromasoftwaredevelopersperspective?Part2.

• It’sadatamodeldefinedinXMLschemalanguage(xsd)

Page 4: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

WhatisQIF?

…fromasoftwaredevelopersperspective?Part2.

• It’sadatamodeldefinedinXMLschemalanguage(xsd)

• “SupportingQIF”meansyouwillreadorwriteQIFdocumentsinXMLformat

Page 5: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

WhatisQIF?

…fromasoftwaredevelopersperspective?Part2.

• It’sadatamodeldefinedinXMLschemalanguage(xsd)

• “SupportingQIF”meansyouwillreadorwriteQIFdocumentsinXMLformat

•AllQIFdocumentsmustbevalidtotheQIFXSDschemafiles

XSDschema:

QIFdocument:

Page 6: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Gettingstarted

• STEP1:downloadthestandardfromqifstandards.org

• STEP2:¯\_(ツ)_/¯print?Xpath?DOM?Sourcecodebindings?

Page 7: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Wheretofindthem?

TheInternetofcourse.

Searchfor“<language>classesfromxsd”or“xsd to<language>classgenerator”

Forexample,searchingfor“C++classesfromxsd”comesupwithanicereferencesite:

http://xmldatabinding.org/

Sourcecodebindinggenerators?

Page 8: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Whattheydowell:Automaticallycreateclassesfromschemafiles

Inthisprocesssomemagichappens:

auto-completecomesalive

Whattheydon’tdowell:- key/keyref checks

Sourcecodebindinggenerators

ToC++sourcecode:

Fromschemadefinition:

Page 9: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Rememberwhen…

• Youfirststartedcoding?• Themanualwasuseful•Butthatfirstfunctionalprogramiswhatreallygotyoustarted

• Tothatend,theDMSCpresents3,open-source,“HelloWorld”QIFapplications

Nowwhat?

Page 10: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

ButFirst…

LEGALDISCLAIMERS• Thefree,opensourcesoftwareisprovided“asis”andwithoutanywarranty.READOUR“LICENSE.TXT”FORDETAILS

• TheDMSCdoesnotprovidethesourcecodegenerators,northecodegeneratedbythem.TherelationshipbetweenyouandthesourcecodegeneratoriscoveredbyTHEIRsoftwarelicense.READTHEIRSOFTWARELICENSETHOROUGHLY

• TheDMSCneitherendorsesnorrecommendsanyparticularsourcecodegenerator

Page 11: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

What’savailable:• “QIF_CPlusPlus”C++(native)CodeSynthesis XSD3.3

• “QIFdotNET”C#(.NET,managed)MicrosoftXSD

• “demoQIFout”+“demoQIFin”PythonPyXB (pxybgen)

Logosand imagesaretrademarksoftheirrespectiveowners

Page 12: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Wheretofindtheapps:

qif-community

on

https://github.com/QualityInformationFramework/qif-community

Logosandimagesaretrademarksoftheirrespectiveowners

Page 13: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Whattheappsdo(OUTPUTside):

Encodesthis: Toproducethis:

Page 14: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(OUTPUT)ProducingQIFTheopensourceapplicationsdothis:• Setsupunits• Definedatums• Definedatumreferenceframes• Featuredefinitions,nominals,itemsandactuals• Hooksdatumtofeature• Characteristicdefinitions,nominals,itemsandactuals• Measurementresources• Trivialmeasurementplan• GeneratesvalidQIFdocument• ViewsQIFdocumentinNotePad Yourdatagoeshere

Page 15: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Whattheappsdo(INPUTside):

Consumesthis: Toproducethis:

Page 16: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 17: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits• Feature/characteristicrelationship

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 18: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits• Feature/characteristicrelationship• Featurenominal

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 19: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits• Feature/characteristicrelationship• Featurenominal• Characteristicnominal

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 20: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits• Feature/characteristicrelationship• Featurenominal• Characteristicnominal• Featureactual

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 21: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits• Feature/characteristicrelationship• Featurenominal• Characteristicnominal• Featureactual• Characteristicactual

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 22: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIF

Theapplicationsdothis:• Extractsunits• Feature/characteristicrelationship• Featurenominal• Characteristicnominal• Featureactual• Characteristicactual• Datumdefinitions

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 23: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

(INPUT)ConsumingQIFTheapplicationsdothis:• Extractsunits• Feature/characteristicrelationship• Featurenominal• Characteristicnominal• Featureactual• Characteristicactual• Datumdefinitions• GeneratesDMISresultsdocument• ViewsDMOdocumentinNotePad

UNITS/MM,ANGDEC

$$ Plane nominal DAT_AOUTPUT/F(DAT_A),T(FLAT1)F(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1T(FLAT1)=TOL/FLAT,0.1$$ Plane actual DAT_AOUTPUT/FA(DAT_A),TA(FLAT1)FA(DAT_A)=FEAT/PLANE,CART,0,0,0,0,0,1TA(FLAT1)=TOL/FLAT,0.023,INTOLDATDEF/FA(DAT_A),DAT(A)

Page 24: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Watchthemrun

QIF_CPlusPlus

Page 25: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Watchthemrun

QIFdotNET

Page 26: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Watchthemrun

demoQIFoutdemoQIFin

Page 27: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Fromsouptonuts:

1. DownloadQIFschemafiles(fromQIFStandards.org)2. DownloadtheApp(fromqif-communityonGitHub)3. READOURLICENSEAGREEMENT4. Readthe“ReadMe.txt”andfollowtheinstructions5. Downloadthesourcecodegenerator6. READTHEIRLICENSEAGREEMENT7. *Replacetroublesomeschemafiles8. Makethesourcecodebindings9. *Massagethesourcecodebindings10. Buildandruntheapp

Page 28: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Thesourcecode:• Regionalized• Annotated• All3appshaveparallelimplementations

• Writetolists(n)• Checkforlists• Traverselists• HandlingSubstitutedElements

Page 29: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Details,details:

Thesourcecodegetsyoupastthesehurdles(thatyoudidn’tevenknowexisted):• GettingavalidheadertotheQIFdocumentistricky• C#listelements,substitutiongroups• C#elementsofsametype• C#enumerationsarenevernull• Pythonsubstitutiongroups• Byreferenceordeepclone?• C++resolvingnamespaceconflicts

Page 30: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Experiment:

C++ C# Python

Breakthesourcecode

Removearequiredattribute(idMax) random# idmax =0 exception

Removearequiredelement(QPId) exception noQPId exception

Removearequiredchoice(diameter tolerance) notolerance notolerance exception

BreaktheQIFdocument

MessupanXMLreference(htp insteadofhttp) exception nooutput exception

Removearequiredattribute(idMax) exception DMOok exception

Removearequiredelement(QPId) exception DMOok exception

Addanon-QIFattribute(myDat =“1”) DMOok DMOok exception

Addanon-QIFelement(<MyDat>1</MyDat>) nooutput DMOok exception

=bad(?) =good(?)

Page 31: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Bestofluck:Take-aways (wehope):• QIFworkswithXSDsourcecodebindinggenerators• ThereareDMSCopensourceQIFappsavailable• Thesecanbeusedasimplementationtemplatesforothersourcecodegenerators

• Therearesomeexperimentalteststoplaywithtohelpyouassesstherobustnessoftheautomaticallygeneratedsourcecode

Support:• Enteranissueqif-communityonGitHub

Page 32: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Contribute:

Doanappinadifferentlanguage:

OnadifferentOS:

Withadifferentcompiler:

Orwithadifferentsourcecodegenerator:

Andshare*Liquid XML Data Binding

Logosandimagesaretrademarksoftheirrespectiveowners*DONOTSHAREAUTOMATICALLYGENERATEDSOURCECODE

4.0

Page 33: “Hello World” - Action Engineering · “Hello World” The Complete Beginner’s Guide to QIF Implementation Robert (Bob) Stone Member Dimensional Metrology Standards Consortium

Thankyou

Questions?