diff options
Diffstat (limited to 'EE3102/Libraries/LM741')
-rw-r--r-- | EE3102/Libraries/LM741/2021-02-27_19-47-13.txt | 69 | ||||
-rw-r--r-- | EE3102/Libraries/LM741/UL_Form.dfm | 49 | ||||
-rw-r--r-- | EE3102/Libraries/LM741/UL_Form.pas | 14 | ||||
-rw-r--r-- | EE3102/Libraries/LM741/UL_Import.PrjScr | 945 | ||||
-rw-r--r-- | EE3102/Libraries/LM741/UL_Import.pas | 1081 |
5 files changed, 2158 insertions, 0 deletions
diff --git a/EE3102/Libraries/LM741/2021-02-27_19-47-13.txt b/EE3102/Libraries/LM741/2021-02-27_19-47-13.txt new file mode 100644 index 0000000..bad7540 --- /dev/null +++ b/EE3102/Libraries/LM741/2021-02-27_19-47-13.txt @@ -0,0 +1,69 @@ +# Created by Ultra Librarian Gold 8.3.286 Copyright © 1999-2018 +# Frank Frank, Accelerated Designs + +StartFootprints +EndFootprints + +StartComponents + +Component (Name "LM741CN/NOPB") (PartCount 1) (DesPrefix "U?") +Pin (Location 400, 0) (Rotation 0) (PinType Passive) (Length 200) (Width 0) (Designator Visible "1") (Name Hidden "BAL1") (PinSwap 0) (PartSwap 0) (PinSeq 1) (Part 1) +Pin (Location 400, -400) (Rotation 0) (PinType Passive) (Length 200) (Width 0) (Designator Visible "8") (Name Hidden "BAL2") (PinSwap 0) (PartSwap 0) (PinSeq 2) (Part 1) +Pin (Location 0, -300) (Rotation 180) (PinType Input) (Length 200) (Width 0) (Designator Visible "3") (Name Hidden "IN+") (PinSwap 0) (PartSwap 0) (PinSeq 3) (Part 1) +Pin (Location 0, -100) (Rotation 180) (PinType Input) (Length 200) (Width 0) (Designator Visible "2") (Name Hidden "IN-") (PinSwap 0) (PartSwap 0) (PinSeq 4) (Part 1) +Pin (Location 400, -200) (Rotation 0) (PinType Output) (Length 200) (Width 0) (Designator Visible "6") (Name Hidden "OUT") (PinSwap 0) (PartSwap 0) (PinSeq 5) (Part 1) +Pin (Location 200, 0) (Rotation 90) (PinType Power) (Length 200) (Width 0) (Designator Visible "7") (Name Hidden "V+") (PinSwap 0) (PartSwap 0) (PinSeq 6) (Part 1) +Pin (Location 200, -400) (Rotation 270) (PinType Power) (Length 200) (Width 0) (Designator Visible "4") (Name Hidden "V-") (PinSwap 0) (PartSwap 0) (PinSeq 7) (Part 1) +Line (Width 10) (Start 0, 0) (End 400, -200) (Part 1) +Line (Width 10) (Start 0, -400) (End 400, -200) (Part 1) +Line (Width 10) (Start 0, 0) (End 0, -400) (Part 1) +Line (Width 10) (Start 40, -100) (End 100, -100) (Part 1) +Line (Width 10) (Start 40, -300) (End 100, -300) (Part 1) +Line (Width 10) (Start 70, -270) (End 70, -330) (Part 1) +Line (Width 10) (Start 200, 0) (End 200, -100) (Part 1) +Line (Width 10) (Start 200, -300) (End 200, -400) (Part 1) +Line (Width 10) (Start 300, -150) (End 400, 0) (Part 1) +Line (Width 10) (Start 300, -250) (End 400, -400) (Part 1) +Line (Width 10) (Start 0, -400) (End 400, -200) (Part 1) +Line (Width 10) (Start 40, -100) (End 100, -100) (Part 1) +Line (Width 10) (Start 40, -300) (End 100, -300) (Part 1) +Line (Width 10) (Start 70, -270) (End 70, -330) (Part 1) +Line (Width 10) (Start 200, 0) (End 200, -100) (Part 1) +Line (Width 10) (Start 200, -300) (End 200, -400) (Part 1) +Line (Width 10) (Start 0, -400) (End 400, -200) (Part 1) +Line (Width 10) (Start 40, -100) (End 100, -100) (Part 1) +Line (Width 10) (Start 40, -300) (End 100, -300) (Part 1) +Line (Width 10) (Start 70, -270) (End 70, -330) (Part 1) +Line (Width 10) (Start 200, 0) (End 200, -100) (Part 1) +Line (Width 10) (Start 200, -300) (End 200, -400) (Part 1) +Text (Location 150, -200) (Height 100) (Rotation 0) (Justification BottomLeft) (Value "V+") (Part 1) +Text (Location 150, -300) (Height 100) (Rotation 0) (Justification BottomLeft) (Value "V-") (Part 1) +Parameter (Name "Copyright") (Location 0, 0) (Height 50) (Rotation 0) (Justification Center) (Value "Copyright (C) 2018 Accelerated Designs. All rights reserved") (Part 1) +Parameter (Name "RefDes") (Location 620, 10) (Height 100) (Rotation 0) (Justification BottomLeft) (Value "") (Part 1) +Parameter (Name "Type") (Location 620, -90) (Height 100) (Rotation 0) (Justification BottomLeft) (Value "") (Part 1) +Parameter (Name "SymbolVersion") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "2008-07-09") (Part 1) +Parameter (Name "PartNumber") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "LM741CN") (Part 1) +Parameter (Name "Characteristics") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "LM741CNGeneralPurposeOpAmp") (Part 1) +Parameter (Name "CompType") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "OpAmpIC") (Part 1) +Parameter (Name "TaMin_C") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "00") (Part 1) +Parameter (Name "TaMax_C") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "700") (Part 1) +Parameter (Name "PackageDescription") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "8LeadPlasticDIP") (Part 1) +Parameter (Name "PackageReference") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "N08E_L") (Part 1) +Parameter (Name "RoHS") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "O") (Part 1) +Parameter (Name "Sim") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "NoteBalancepinsnotmodeled") (Part 1) +Parameter (Name "ComponentLink1DescBC") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "LM741Datasheet") (Part 1) +Parameter (Name "ComponentLink1URL") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "http//wwwnationalcom/ds/LM/LM741pdf") (Part 1) +Parameter (Name "ComponentLink2DescA4") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "LM741WebPage") (Part 1) +Parameter (Name "ComponentLink2URL") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "http//wwwnationalcom/pf/LM/LM741html") (Part 1) +Parameter (Name "ComponentLink3DescAC") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "N08EPackageWebPage") (Part 1) +Parameter (Name "ComponentLink3URL") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "http//wwwnationalcom/packaging/folders/n08ehtml") (Part 1) +Parameter (Name "Manufacturer") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "NationalSemiconductor") (Part 1) +Parameter (Name "Version") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "B1608") (Part 1) +Parameter (Name "LatestRevisionDate") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "2009-03-16") (Part 1) +Parameter (Name "LatestRevisionNote") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "MassUpdate") (Part 1) +Parameter (Name "Publisher") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "NationalSemiconductor") (Part 1) +Parameter (Name "Published") (Location 0, 0) (Height 80) (Rotation 0) (Justification BottomLeft) (Value "2009-03-16") (Part 1) +Description (Value "No Description Available") (Part 1) +Footprint (Name "N08E_L") +EndComponent +EndComponents diff --git a/EE3102/Libraries/LM741/UL_Form.dfm b/EE3102/Libraries/LM741/UL_Form.dfm new file mode 100644 index 0000000..2d57e92 --- /dev/null +++ b/EE3102/Libraries/LM741/UL_Form.dfm @@ -0,0 +1,49 @@ +object UL_Form: TUL_Form + Left = 0 + Top = 0 + BorderStyle = bsDialog + Caption = 'UL Import' + ClientHeight = 80 + ClientWidth = 473 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object TxtFile: TEdit + Left = 80 + Top = 8 + Width = 384 + Height = 21 + TabOrder = 0 + end + object BtnFile: TButton + Left = 8 + Top = 8 + Width = 64 + Height = 24 + Caption = 'File...' + TabOrder = 1 + OnClick = BtnFileClick + end + object BtnImport: TButton + Left = 188 + Top = 40 + Width = 96 + Height = 32 + Caption = 'Start Import' + TabOrder = 2 + OnClick = BtnImportClick + end + object OpenDlg: TOpenDialog + DefaultExt = '.txt' + Filter = 'UL Altium Output (*.txt)|*.txt' + Left = 8 + Top = 40 + end +end diff --git a/EE3102/Libraries/LM741/UL_Form.pas b/EE3102/Libraries/LM741/UL_Form.pas new file mode 100644 index 0000000..a79f13c --- /dev/null +++ b/EE3102/Libraries/LM741/UL_Form.pas @@ -0,0 +1,14 @@ + +procedure TUL_Form.BtnFileClick(Sender: TObject); +begin + If OpenDlg.Execute Then Begin + TxtFile.Text := OpenDlg.FileName; + End; +end; + +procedure TUL_Form.BtnImportClick(Sender: TObject); +begin + ImportAscIIData(TxtFile.Text); + Close; +end; + diff --git a/EE3102/Libraries/LM741/UL_Import.PrjScr b/EE3102/Libraries/LM741/UL_Import.PrjScr new file mode 100644 index 0000000..1238b5d --- /dev/null +++ b/EE3102/Libraries/LM741/UL_Import.PrjScr @@ -0,0 +1,945 @@ +[Design] +Version=1.0 +HierarchyMode=0 +ChannelRoomNamingStyle=0 +ReleasesFolder= +ReleaseVaultGUID= +ReleaseVaultName= +ChannelDesignatorFormatString=$Component_$RoomName +ChannelRoomLevelSeperator=_ +OpenOutputs=1 +ArchiveProject=0 +TimestampOutput=0 +SeparateFolders=0 +TemplateLocationPath= +PinSwapBy_Netlabel=1 +PinSwapBy_Pin=1 +AllowPortNetNames=0 +AllowSheetEntryNetNames=1 +AppendSheetNumberToLocalNets=0 +NetlistSinglePinNets=0 +DefaultConfiguration=Default - All Constraints +UserID=0xFFFFFFFF +DefaultPcbProtel=1 +DefaultPcbPcad=0 +ReorderDocumentsOnCompile=1 +NameNetsHierarchically=0 +PowerPortNamesTakePriority=0 +PushECOToAnnotationFile=1 +DItemRevisionGUID= +ReportSuppressedErrorsInMessages=0 +FSMCodingStyle=eFMSDropDownList_OneProcess +FSMEncodingStyle=eFMSDropDownList_OneHot +OutputPath= +LogFolderPath= +ManagedProjectGUID= + +[Preferences] +PrefsVaultGUID= +PrefsRevisionGUID= + +[Document1] +DocumentPath=UL_Import.pas +AnnotationEnabled=1 +AnnotateStartValue=1 +AnnotationIndexControlEnabled=0 +AnnotateSuffix= +AnnotateScope=All +AnnotateOrder=-1 +DoLibraryUpdate=1 +DoDatabaseUpdate=1 +ClassGenCCAutoEnabled=1 +ClassGenCCAutoRoomEnabled=1 +ClassGenNCAutoScope=None +DItemRevisionGUID= +GenerateClassCluster=0 +DocumentUniqueId= + +[Document2] +DocumentPath=UL_Form.pas +AnnotationEnabled=1 +AnnotateStartValue=1 +AnnotationIndexControlEnabled=0 +AnnotateSuffix= +AnnotateScope=All +AnnotateOrder=-1 +DoLibraryUpdate=1 +DoDatabaseUpdate=1 +ClassGenCCAutoEnabled=1 +ClassGenCCAutoRoomEnabled=1 +ClassGenNCAutoScope=None +DItemRevisionGUID= +GenerateClassCluster=0 +DocumentUniqueId= + +[Generic_ScriptingSystem] +StartProcName=UL_Form.pas> + +[OutputGroup1] +Name=Netlist Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=PCADNetlist +OutputName1=PCAD Netlist +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +OutputType2=SIMetrixNetlist +OutputName2=SIMetrix +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +OutputType3=SIMPLISNetlist +OutputName3=SIMPLIS +OutputDocumentPath3= +OutputVariantName3= +OutputDefault3=0 +OutputType4=Verilog +OutputName4=Verilog File +OutputDocumentPath4= +OutputVariantName4= +OutputDefault4=0 +OutputType5=VHDL +OutputName5=VHDL File +OutputDocumentPath5= +OutputVariantName5= +OutputDefault5=0 +OutputType6=XSpiceNetlist +OutputName6=XSpice Netlist +OutputDocumentPath6= +OutputVariantName6= +OutputDefault6=0 + +[OutputGroup2] +Name=Simulator Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=AdvSimNetlist +OutputName1=Mixed Sim +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +OutputType2=SIMetrixSimulation +OutputName2=SIMetrix +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +OutputType3=SIMPLISSimulation +OutputName3=SIMPLIS +OutputDocumentPath3= +OutputVariantName3= +OutputDefault3=0 + +[OutputGroup3] +Name=Documentation Outputs +Description= +TargetPrinter=Virtual Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=Composite +OutputName1=Composite Drawing +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType2=Logic Analyser Print +OutputName2=Logic Analyser Prints +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType3=OpenBus Print +OutputName3=OpenBus Prints +OutputDocumentPath3= +OutputVariantName3= +OutputDefault3=0 +PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType4=PCB 3D Print +OutputName4=PCB 3D Prints +OutputDocumentPath4= +OutputVariantName4=[No Variations] +OutputDefault4=0 +PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType5=PCB Print +OutputName5=PCB Prints +OutputDocumentPath5= +OutputVariantName5= +OutputDefault5=0 +PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType6=Schematic Print +OutputName6=Schematic Prints +OutputDocumentPath6= +OutputVariantName6= +OutputDefault6=0 +PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType7=SimView Print +OutputName7=SimView Prints +OutputDocumentPath7= +OutputVariantName7= +OutputDefault7=0 +PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType8=Wave Print +OutputName8=Wave Prints +OutputDocumentPath8= +OutputVariantName8= +OutputDefault8=0 +PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType9=WaveSim Print +OutputName9=WaveSim Prints +OutputDocumentPath9= +OutputVariantName9= +OutputDefault9=0 +PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType10=Assembler Source Print +OutputName10=Assembler Source Prints +OutputDocumentPath10= +OutputVariantName10= +OutputDefault10=0 +PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType11=C Source Print +OutputName11=C Source Prints +OutputDocumentPath11= +OutputVariantName11= +OutputDefault11=0 +PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType12=C/C++ Header Print +OutputName12=C/C++ Header Prints +OutputDocumentPath12= +OutputVariantName12= +OutputDefault12=0 +PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType13=C++ Source Print +OutputName13=C++ Source Prints +OutputDocumentPath13= +OutputVariantName13= +OutputDefault13=0 +PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType14=FSM Print +OutputName14=FSM Prints +OutputDocumentPath14= +OutputVariantName14= +OutputDefault14=0 +PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType15=PCB 3D Video +OutputName15=PCB 3D Video +OutputDocumentPath15= +OutputVariantName15=[No Variations] +OutputDefault15=0 +PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType16=PCBLIB Print +OutputName16=PCBLIB Prints +OutputDocumentPath16= +OutputVariantName16= +OutputDefault16=0 +PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType17=PDF3D +OutputName17=PDF3D +OutputDocumentPath17= +OutputVariantName17=[No Variations] +OutputDefault17=0 +PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType18=Report Print +OutputName18=Report Prints +OutputDocumentPath18= +OutputVariantName18= +OutputDefault18=0 +PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType19=VHDL Print +OutputName19=VHDL Prints +OutputDocumentPath19= +OutputVariantName19= +OutputDefault19=0 +PageOptions19=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 + +[OutputGroup4] +Name=Assembly Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=Assembly +OutputName1=Assembly Drawings +OutputDocumentPath1= +OutputVariantName1=[No Variations] +OutputDefault1=0 +PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType2=Pick Place +OutputName2=Generates pick and place files +OutputDocumentPath2= +OutputVariantName2=[No Variations] +OutputDefault2=0 +OutputType3=Test Points For Assembly +OutputName3=Test Point Report +OutputDocumentPath3= +OutputVariantName3=[No Variations] +OutputDefault3=0 + +[OutputGroup5] +Name=Fabrication Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=CompositeDrill +OutputName1=Composite Drill Drawing +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType2=Drill +OutputName2=Drill Drawing/Guides +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType3=Final +OutputName3=Final Artwork Prints +OutputDocumentPath3= +OutputVariantName3=[No Variations] +OutputDefault3=0 +PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType4=Gerber +OutputName4=Gerber Files +OutputDocumentPath4= +OutputVariantName4=[No Variations] +OutputDefault4=0 +OutputType5=Mask +OutputName5=Solder/Paste Mask Prints +OutputDocumentPath5= +OutputVariantName5= +OutputDefault5=0 +PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType6=NC Drill +OutputName6=NC Drill Files +OutputDocumentPath6= +OutputVariantName6= +OutputDefault6=0 +OutputType7=ODB +OutputName7=ODB++ Files +OutputDocumentPath7= +OutputVariantName7=[No Variations] +OutputDefault7=0 +OutputType8=Plane +OutputName8=Power-Plane Prints +OutputDocumentPath8= +OutputVariantName8= +OutputDefault8=0 +PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType9=Test Points +OutputName9=Test Point Report +OutputDocumentPath9= +OutputVariantName9= +OutputDefault9=0 +OutputType10=Board Stack Report +OutputName10=Report Board Stack +OutputDocumentPath10= +OutputVariantName10= +OutputDefault10=0 +PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType11=Gerber X2 +OutputName11=Gerber X2 Files +OutputDocumentPath11= +OutputVariantName11= +OutputDefault11=0 +OutputType12=IPC2581 +OutputName12=IPC-2581 Files +OutputDocumentPath12= +OutputVariantName12= +OutputDefault12=0 + +[OutputGroup6] +Name=Report Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=BOM_PartType +OutputName1=Bill of Materials +OutputDocumentPath1= +OutputVariantName1=[No Variations] +OutputDefault1=0 +PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType2=ComponentCrossReference +OutputName2=Component Cross Reference Report +OutputDocumentPath2= +OutputVariantName2=[No Variations] +OutputDefault2=0 +OutputType3=ReportHierarchy +OutputName3=Report Project Hierarchy +OutputDocumentPath3= +OutputVariantName3=[No Variations] +OutputDefault3=0 +OutputType4=SimpleBOM +OutputName4=Simple BOM +OutputDocumentPath4= +OutputVariantName4=[No Variations] +OutputDefault4=0 +OutputType5=SinglePinNetReporter +OutputName5=Report Single Pin Nets +OutputDocumentPath5= +OutputVariantName5=[No Variations] +OutputDefault5=0 +OutputType6=Script +OutputName6=Script Output +OutputDocumentPath6= +OutputVariantName6=[No Variations] +OutputDefault6=0 + +[OutputGroup7] +Name=Other Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=Text Print +OutputName1=Text Print +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType2=Text Print +OutputName2=Text Print +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType3=Text Print +OutputName3=Text Print +OutputDocumentPath3= +OutputVariantName3= +OutputDefault3=0 +PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType4=Text Print +OutputName4=Text Print +OutputDocumentPath4= +OutputVariantName4= +OutputDefault4=0 +PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType5=Text Print +OutputName5=Text Print +OutputDocumentPath5= +OutputVariantName5= +OutputDefault5=0 +PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType6=Text Print +OutputName6=Text Print +OutputDocumentPath6= +OutputVariantName6= +OutputDefault6=0 +PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType7=Text Print +OutputName7=Text Print +OutputDocumentPath7= +OutputVariantName7= +OutputDefault7=0 +PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType8=Text Print +OutputName8=Text Print +OutputDocumentPath8= +OutputVariantName8= +OutputDefault8=0 +PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType9=Text Print +OutputName9=Text Print +OutputDocumentPath9= +OutputVariantName9= +OutputDefault9=0 +PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType10=Text Print +OutputName10=Text Print +OutputDocumentPath10= +OutputVariantName10= +OutputDefault10=0 +PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType11=Text Print +OutputName11=Text Print +OutputDocumentPath11= +OutputVariantName11= +OutputDefault11=0 +PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType12=Text Print +OutputName12=Text Print +OutputDocumentPath12= +OutputVariantName12= +OutputDefault12=0 +PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType13=Text Print +OutputName13=Text Print +OutputDocumentPath13= +OutputVariantName13= +OutputDefault13=0 +PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType14=Text Print +OutputName14=Text Print +OutputDocumentPath14= +OutputVariantName14= +OutputDefault14=0 +PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType15=Text Print +OutputName15=Text Print +OutputDocumentPath15= +OutputVariantName15= +OutputDefault15=0 +PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType16=Text Print +OutputName16=Text Print +OutputDocumentPath16= +OutputVariantName16= +OutputDefault16=0 +PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType17=Text Print +OutputName17=Text Print +OutputDocumentPath17= +OutputVariantName17= +OutputDefault17=0 +PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType18=Text Print +OutputName18=Text Print +OutputDocumentPath18= +OutputVariantName18= +OutputDefault18=0 +PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType19=Text Print +OutputName19=Text Print +OutputDocumentPath19= +OutputVariantName19= +OutputDefault19=0 +PageOptions19=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType20=Text Print +OutputName20=Text Print +OutputDocumentPath20= +OutputVariantName20= +OutputDefault20=0 +PageOptions20=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType21=Text Print +OutputName21=Text Print +OutputDocumentPath21= +OutputVariantName21= +OutputDefault21=0 +PageOptions21=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType22=Text Print +OutputName22=Text Print +OutputDocumentPath22= +OutputVariantName22= +OutputDefault22=0 +PageOptions22=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType23=Text Print +OutputName23=Text Print +OutputDocumentPath23= +OutputVariantName23= +OutputDefault23=0 +PageOptions23=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType24=Text Print +OutputName24=Text Print +OutputDocumentPath24= +OutputVariantName24= +OutputDefault24=0 +PageOptions24=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType25=Text Print +OutputName25=Text Print +OutputDocumentPath25= +OutputVariantName25= +OutputDefault25=0 +PageOptions25=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType26=Text Print +OutputName26=Text Print +OutputDocumentPath26= +OutputVariantName26= +OutputDefault26=0 +PageOptions26=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType27=Text Print +OutputName27=Text Print +OutputDocumentPath27= +OutputVariantName27= +OutputDefault27=0 +PageOptions27=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType28=Text Print +OutputName28=Text Print +OutputDocumentPath28= +OutputVariantName28= +OutputDefault28=0 +PageOptions28=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType29=Text Print +OutputName29=Text Print +OutputDocumentPath29= +OutputVariantName29= +OutputDefault29=0 +PageOptions29=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 + +[OutputGroup8] +Name=Validation Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=Design Rules Check +OutputName1=Design Rules Check +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType2=Electrical Rules Check +OutputName2=Electrical Rules Check +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter +OutputType3=Component states check +OutputName3=Vault's components states check +OutputDocumentPath3= +OutputVariantName3= +OutputDefault3=0 +OutputType4=Configuration compliance +OutputName4=Environment configuration compliance check +OutputDocumentPath4= +OutputVariantName4= +OutputDefault4=0 +OutputType5=Differences Report +OutputName5=Differences Report +OutputDocumentPath5= +OutputVariantName5= +OutputDefault5=0 +PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 +OutputType6=Footprint Comparison Report +OutputName6=Footprint Comparison Report +OutputDocumentPath6= +OutputVariantName6= +OutputDefault6=0 + +[OutputGroup9] +Name=Export Outputs +Description= +TargetPrinter=Canon MX920 series Printer +PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1 +OutputType1=AutoCAD dwg/dxf PCB +OutputName1=AutoCAD dwg/dxf File PCB +OutputDocumentPath1= +OutputVariantName1= +OutputDefault1=0 +OutputType2=AutoCAD dwg/dxf Schematic +OutputName2=AutoCAD dwg/dxf File Schematic +OutputDocumentPath2= +OutputVariantName2= +OutputDefault2=0 +OutputType3=ExportIDF +OutputName3=Export IDF +OutputDocumentPath3= +OutputVariantName3= +OutputDefault3=0 +OutputType4=ExportSTEP +OutputName4=Export STEP +OutputDocumentPath4= +OutputVariantName4=[No Variations] +OutputDefault4=0 + +[Modification Levels] +Type1=1 +Type2=1 +Type3=1 +Type4=1 +Type5=1 +Type6=1 +Type7=1 +Type8=1 +Type9=1 +Type10=1 +Type11=1 +Type12=1 +Type13=1 +Type14=1 +Type15=1 +Type16=1 +Type17=1 +Type18=1 +Type19=1 +Type20=1 +Type21=1 +Type22=1 +Type23=1 +Type24=1 +Type25=1 +Type26=1 +Type27=1 +Type28=1 +Type29=1 +Type30=1 +Type31=1 +Type32=1 +Type33=1 +Type34=1 +Type35=1 +Type36=1 +Type37=1 +Type38=1 +Type39=1 +Type40=1 +Type41=1 +Type42=1 +Type43=1 +Type44=1 +Type45=1 +Type46=1 +Type47=1 +Type48=1 +Type49=1 +Type50=1 +Type51=1 +Type52=1 +Type53=1 +Type54=1 +Type55=1 +Type56=1 +Type57=1 +Type58=1 +Type59=1 +Type60=1 +Type61=1 +Type62=1 +Type63=1 +Type64=1 +Type65=1 +Type66=1 +Type67=1 +Type68=1 +Type69=1 +Type70=1 +Type71=1 +Type72=1 +Type73=1 +Type74=1 +Type75=1 +Type76=1 +Type77=1 +Type78=1 +Type79=1 +Type80=1 + +[Difference Levels] +Type1=1 +Type2=1 +Type3=1 +Type4=1 +Type5=1 +Type6=1 +Type7=1 +Type8=1 +Type9=1 +Type10=1 +Type11=1 +Type12=1 +Type13=1 +Type14=1 +Type15=1 +Type16=1 +Type17=1 +Type18=1 +Type19=1 +Type20=1 +Type21=1 +Type22=1 +Type23=1 +Type24=1 +Type25=1 +Type26=1 +Type27=1 +Type28=1 +Type29=1 +Type30=1 +Type31=1 +Type32=1 +Type33=1 +Type34=1 +Type35=1 +Type36=1 +Type37=1 +Type38=1 +Type39=1 +Type40=1 +Type41=1 +Type42=1 +Type43=1 +Type44=0 +Type45=1 + +[Electrical Rules Check] +Type1=1 +Type2=1 +Type3=2 +Type4=1 +Type5=2 +Type6=2 +Type7=1 +Type8=1 +Type9=1 +Type10=1 +Type11=2 +Type12=2 +Type13=2 +Type14=1 +Type15=1 +Type16=1 +Type17=1 +Type18=1 +Type19=1 +Type20=1 +Type21=1 +Type22=1 +Type23=1 +Type24=1 +Type25=2 +Type26=2 +Type27=2 +Type28=1 +Type29=1 +Type30=1 +Type31=1 +Type32=2 +Type33=2 +Type34=2 +Type35=1 +Type36=2 +Type37=1 +Type38=2 +Type39=2 +Type40=2 +Type41=0 +Type42=2 +Type43=1 +Type44=1 +Type45=2 +Type46=1 +Type47=2 +Type48=2 +Type49=1 +Type50=2 +Type51=1 +Type52=1 +Type53=1 +Type54=1 +Type55=1 +Type56=2 +Type57=1 +Type58=1 +Type59=0 +Type60=1 +Type61=2 +Type62=2 +Type63=1 +Type64=0 +Type65=2 +Type66=3 +Type67=2 +Type68=2 +Type69=1 +Type70=2 +Type71=2 +Type72=2 +Type73=2 +Type74=1 +Type75=2 +Type76=1 +Type77=1 +Type78=1 +Type79=1 +Type80=2 +Type81=3 +Type82=3 +Type83=3 +Type84=3 +Type85=3 +Type86=2 +Type87=2 +Type88=2 +Type89=1 +Type90=1 +Type91=3 +Type92=3 +Type93=2 +Type94=2 +Type95=2 +Type96=2 +Type97=2 +Type98=0 +Type99=1 +Type100=2 +Type101=1 +Type102=2 +Type103=2 +Type104=1 +Type105=2 +Type106=2 +Type107=2 +Type108=2 +Type109=1 +Type110=1 +Type111=1 + +[ERC Connection Matrix] +L1=NNNNNNNNNNNWNNNWW +L2=NNWNNNNWWWNWNWNWN +L3=NWEENEEEENEWNEEWN +L4=NNENNNWEENNWNENWN +L5=NNNNNNNNNNNNNNNNN +L6=NNENNNNEENNWNENWN +L7=NNEWNNWEENNWNENWN +L8=NWEENEENEEENNEENN +L9=NWEENEEEENEWNEEWW +L10=NWNNNNNENNEWNNEWN +L11=NNENNNNEEENWNENWN +L12=WWWWNWWNWWWNWWWNN +L13=NNNNNNNNNNNWNNNWW +L14=NWEENEEEENEWNEEWW +L15=NNENNNNEEENWNENWW +L16=WWWWNWWNWWWNWWWNW +L17=WNNNNNNNWNNNWWWWN + +[Annotate] +SortOrder=3 +SortLocation=0 +MatchParameter1=Comment +MatchStrictly1=1 +MatchParameter2=Library Reference +MatchStrictly2=1 +PhysicalNamingFormat=$Component_$RoomName +GlobalIndexSortOrder=3 +GlobalIndexSortLocation=0 + +[PrjClassGen] +CompClassManualEnabled=0 +CompClassManualRoomEnabled=0 +NetClassAutoBusEnabled=1 +NetClassAutoCompEnabled=0 +NetClassAutoNamedHarnessEnabled=0 +NetClassManualEnabled=0 +NetClassSeparateForBusSections=0 + +[LibraryUpdateOptions] +SelectedOnly=0 +UpdateVariants=1 +PartTypes=0 +FullReplace=1 +UpdateDesignatorLock=1 +UpdatePartIDLock=1 +PreserveParameterLocations=1 +PreserveParameterVisibility=1 +DoGraphics=1 +DoParameters=1 +DoModels=1 +AddParameters=0 +RemoveParameters=0 +AddModels=1 +RemoveModels=1 +UpdateCurrentModels=1 + +[DatabaseUpdateOptions] +SelectedOnly=0 +UpdateVariants=1 +PartTypes=0 + +[Comparison Options] +ComparisonOptions0=Kind=Net|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 +ComparisonOptions1=Kind=Net Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 +ComparisonOptions2=Kind=Component Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 +ComparisonOptions3=Kind=Rule|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 +ComparisonOptions4=Kind=Differential Pair|MinPercent=50|MinMatch=1|ShowMatch=0|Confirm=0|UseName=0|InclAllRules=0 +ComparisonOptions5=Kind=Code Memory|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 + +[SmartPDF] +PageOptions=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter + diff --git a/EE3102/Libraries/LM741/UL_Import.pas b/EE3102/Libraries/LM741/UL_Import.pas new file mode 100644 index 0000000..fd9b912 --- /dev/null +++ b/EE3102/Libraries/LM741/UL_Import.pas @@ -0,0 +1,1081 @@ + +const ForceSchFontID = 1; + +var + BrokenSCHFontManager : Integer; // for Alitum 19's broken SCH FontManager + +{==============================================================================} +{==== String Utility Routines ===============================================} +{==============================================================================} + +Function CheckLeft(BaseStr: String, Srch: String): Boolean; +Var + i : Integer; +Begin + Result := False; + i := Length(Srch); + If Length(BaseStr) < i Then Exit; + If Copy(BaseStr, 1, i) = Srch Then Result := True; +End; + +Function LeftOf(BaseStr: String, Srch: String): String; +Var + i : Integer; +Begin + i := Pos(Srch, BaseStr); + If i > 0 Then Begin + Result := Copy(BaseStr, 1, i - 1); + End Else Begin + Result := BaseStr; + End; +End; + +Function LeftOfLast(BaseStr: String, Srch: String): String; +Var + i, ls : Integer; + lft, rgt : String; +Begin + rgt := BaseStr; + i := Pos(Srch, rgt); + lft := ''; + If i > 0 Then Begin + ls := Length(Srch); + While i > 0 Do Begin + lft := lft + Copy(rgt, 1, i - 1); + rgt := Copy(rgt, i + ls, Length(rgt) - i + ls); + i := Pos(Srch, rgt); + If i > 0 then Begin + lft := lft + Srch; + End; + End; + Result := lft; + End Else Begin + Result := BaseStr; + End; +End; + +Function RightOf(BaseStr: String, Srch: String): String; +Var + i, ls : Integer; +Begin + i := Pos(Srch, BaseStr); + If i > 0 Then Begin + ls := Length(Srch); + Result := Copy(BaseStr, i + ls, Length(BaseStr) - i + ls); + End Else Begin + Result := ''; + End; +End; + +Procedure StrChop(BaseStr: String, Srch: String, Out LeftSide: String, Out RightSide: String); +Var + i, ls : Integer; +Begin + i := Pos(Srch, BaseStr); + If i <= 0 Then Begin + LeftSide := BaseStr; + RightSide := ''; + End Else Begin + ls := Length(Srch); + LeftSide := Copy(BaseStr, 1, i - 1); + RightSide := Copy(BaseStr, i + ls, Length(BaseStr) - i + ls); + End; +End; + +Function GetBetween(BaseStr: String, StartStr: String, EndStr: String): String; +Begin + Result := Leftof(RightOf(BaseStr, StartStr), EndStr); +End; + +Function GetFileLocation(FilePath: String): String; +Var + i : Integer; + filename : String; +Begin + filename := RightOf(FilePath, '\'); + i := Pos('\', filename); + While i > 0 Do Begin + filename := RightOf(filename, '\'); + i := Pos('\', filename); + End; + Result := LeftOf(Filepath, filename); +End; + +{==============================================================================} +{==== Footprint Routines ====================================================} +{==============================================================================} + +Function LayerFromString(LName: String): TLayer; +Begin + Case LName Of + 'NoLayer': Result := eNoLayer; + 'TopLayer': Result := eTopLayer; + 'MidLayer1': Result := eMidLayer1; + 'MidLayer2': Result := eMidLayer2; + 'MidLayer3': Result := eMidLayer3; + 'MidLayer4': Result := eMidLayer4; + 'MidLayer5': Result := eMidLayer5; + 'MidLayer6': Result := eMidLayer6; + 'MidLayer7': Result := eMidLayer7; + 'MidLayer8': Result := eMidLayer8; + 'MidLayer9': Result := eMidLayer9; + 'MidLayer10': Result := eMidLayer10; + 'MidLayer11': Result := eMidLayer11; + 'MidLayer12': Result := eMidLayer12; + 'MidLayer13': Result := eMidLayer13; + 'MidLayer14': Result := eMidLayer14; + 'MidLayer15': Result := eMidLayer15; + 'MidLayer16': Result := eMidLayer16; + 'MidLayer17': Result := eMidLayer17; + 'MidLayer18': Result := eMidLayer18; + 'MidLayer19': Result := eMidLayer19; + 'MidLayer20': Result := eMidLayer20; + 'MidLayer21': Result := eMidLayer21; + 'MidLayer22': Result := eMidLayer22; + 'MidLayer23': Result := eMidLayer23; + 'MidLayer24': Result := eMidLayer24; + 'MidLayer25': Result := eMidLayer25; + 'MidLayer26': Result := eMidLayer26; + 'MidLayer27': Result := eMidLayer27; + 'MidLayer28': Result := eMidLayer28; + 'MidLayer29': Result := eMidLayer29; + 'MidLayer30': Result := eMidLayer30; + 'BottomLayer': Result := eBottomLayer; + 'TopOverlay': Result := eTopOverlay; + 'BottomOverlay': Result := eBottomOverlay; + 'TopPaste': Result := eTopPaste; + 'BottomPaste': Result := eBottomPaste; + 'TopSolder': Result := eTopSolder; + 'BottomSolder': Result := eBottomSolder; + 'InternalPlane1': Result := eInternalPlane1; + 'InternalPlane2': Result := eInternalPlane2; + 'InternalPlane3': Result := eInternalPlane3; + 'InternalPlane4': Result := eInternalPlane4; + 'InternalPlane5': Result := eInternalPlane5; + 'InternalPlane6': Result := eInternalPlane6; + 'InternalPlane7': Result := eInternalPlane7; + 'InternalPlane8': Result := eInternalPlane8; + 'InternalPlane9': Result := eInternalPlane9; + 'InternalPlane10': Result := eInternalPlane10; + 'InternalPlane11': Result := eInternalPlane11; + 'InternalPlane12': Result := eInternalPlane12; + 'InternalPlane13': Result := eInternalPlane13; + 'InternalPlane14': Result := eInternalPlane14; + 'InternalPlane15': Result := eInternalPlane15; + 'InternalPlane16': Result := eInternalPlane16; + 'DrillGuide': Result := eDrillGuide; + 'KeepOutLayer': Result := eKeepOutLayer; + 'Mechanical1': Result := eMechanical1; + 'Mechanical2': Result := eMechanical2; + 'Mechanical3': Result := eMechanical3; + 'Mechanical4': Result := eMechanical4; + 'Mechanical5': Result := eMechanical5; + 'Mechanical6': Result := eMechanical6; + 'Mechanical7': Result := eMechanical7; + 'Mechanical8': Result := eMechanical8; + 'Mechanical9': Result := eMechanical9; + 'Mechanical10': Result := eMechanical10; + 'Mechanical11': Result := eMechanical11; + 'Mechanical12': Result := eMechanical12; + 'Mechanical13': Result := eMechanical13; + 'Mechanical14': Result := eMechanical14; + 'Mechanical15': Result := eMechanical15; + 'Mechanical16': Result := eMechanical16; + 'DrillDrawing': Result := eDrillDrawing; + 'MultiLayer': Result := eMultiLayer; + 'ConnectLayer': Result := eConnectLayer; + 'BackGroundLayer': Result := eBackGroundLayer; + 'DRCErrorLayer': Result := eDRCErrorLayer; + 'HighlightLayer': Result := eHighlightLayer; + 'GridColor1': Result := eGridColor1; + 'GridColor10': Result := eGridColor10; + 'PadHoleLayer': Result := ePadHoleLayer; + 'ViaHoleLayer': Result := eViaHoleLayer; + Else + Result := eNoLayer; + End; +End; + + +Procedure FP_AddStep(fp: IPCB_LibComponent, Data: String, InFileName: String); +Var + STEPFileName : String; + STEPmodel : IPCB_ComponentBody; + Model : IPCB_Model; +Begin + STEPFileName := GetFileLocation(InFileName) + '\' + GetBetween(Data, '(Name ', ')'); + STEPmodel := PcbServer.PCBObjectFactory(eComponentBodyObject,eNoDimension,eCreate_Default); + Model := STEPmodel.ModelFactory_FromFilename(STEPFileName, false); + STEPmodel.SetState_FromModel; + // Model.SetState(0,0,0,0); + STEPmodel.Model := Model; + fp.AddPCBObject(STEPmodel); + //PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, arc.I_ObjectAddress); +End; + +Procedure FP_AddLine(fp: IPCB_Component, Data: String); +Var + lin : IPCB_track; + s1, s2 : String; +Begin + lin := PCBServer.PCBObjectFactory(eTrackObject, eNoDimension, eCreate_Default); + If lin = Nil Then Exit; + StrChop(GetBetween(Data, '(Start ', ')'), ',', s1, s2); + lin.X1 := MilsToCoord(Evaluate(s1)); + lin.Y1 := MilsToCoord(Evaluate(s2)); + StrChop(GetBetween(Data, '(End ', ')'), ',', s1, s2); + lin.X2 := MilsToCoord(Evaluate(s1)); + lin.Y2 := MilsToCoord(Evaluate(s2)); + lin.Layer := LayerFromString(GetBetween(Data, '(Layer ', ')')); + lin.Width := MilsToCoord(Evaluate(GetBetween(Data, '(Width ', ')'))); + fp.AddPCBObject(lin); + PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, lin.I_ObjectAddress); +End; + +Procedure FP_AddArc(fp: IPCB_Component, Data: String); +Var + arc : IPCB_Arc; + s1, s2 : String; +Begin + arc := PCBServer.PCBObjectFactory(eArcObject, eNoDimension, eCreate_Default); + If arc = Nil Then Exit; + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + arc.XCenter := MilsToCoord(Evaluate(s1)); + arc.YCenter := MilsToCoord(Evaluate(s2)); + arc.Radius := MilsToCoord(Evaluate(GetBetween(Data, '(Radius ', ')'))); + arc.LineWidth := MilsToCoord(Evaluate(GetBetween(Data, '(Width ', ')'))); + arc.StartAngle := Evaluate(GetBetween(Data, '(StartAngle ', ')')); + arc.EndAngle := Evaluate(GetBetween(Data, '(EndAngle ', ')')); + arc.Layer := LayerFromString(GetBetween(Data, '(Layer ', ')'));; + fp.AddPCBObject(arc); + PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, arc.I_ObjectAddress); +End; + +Procedure FP_AddPoly(fp: IPCB_Component, Data: String, InFile: TextFile); +Var + pol : IPCB_Region; + cont : IPCB_Contour; + pc: Integer; + s1, s2, inp, tag : String; +Begin + pol := PCBServer.PCBObjectFactory(eRegionObject, eNoDimension,eCreate_Default); + If pol = Nil Then Exit; + cont := pol.MainContour.Replicate(); + pol.Layer := LayerFromString(GetBetween(Data, '(Layer ', ')')); + cont.Count := Evaluate(GetBetween(Data, '(PointCount ', ')')); + pc := 0; + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + inp := Trim(inp); + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'Point': Begin + pc := pc + 1; + StrChop(GetBetween(inp, '(', ')'), ',', s1, s2); + cont.X[pc] := MilsToCoord(Evaluate(s1)); + cont.Y[pc] := MilsToCoord(Evaluate(s2)); + End; + 'EndPolygon': Break; + Else Begin + ShowMessage('Keyword Error: ' + tag); + End; + End; + End; + pol.SetOutlineContour(cont); + If GetBetween(Data, '(Type ', ')') = 'KeepOut' Then Begin + pol.IsKeepout := True; + End; + fp.AddPCBObject(pol); + PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, pol.I_ObjectAddress); +End; + +Procedure FP_AddText(fp: IPCB_Component, Data: STring); +Var + txt : IPCB_Text; + s1, s2 : String; +Begin + txt := PCBServer.PCBObjectFactory(eTextObject, eNoDimension, eCreate_Default); + If txt = Nil Then Exit; + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + txt.XLocation := MilsToCoord(Evaluate(s1)); + txt.YLocation := MilsToCoord(Evaluate(s2)); + txt.Layer := LayerFromString(GetBetween(Data, '(Layer ', ')')); + txt.Size := MilsToCoord(Evaluate(GetBetween(Data, '(Height ', ')'))); + txt.Width := MilsToCoord(Evaluate(GetBetween(Data, '(Width ', ')'))); + If GetBetween(Data, '(Mirrored ', ')') = 'True' Then Begin + txt.MirrorFlag := True; + End; + txt.Rotation := Evaluate(GetBetween(Data, '(Rotation ', ')')); + txt.Text := GetBetween(Data, '(Value "', '")'); + // Justification? NOTE: TODO: + fp.AddPCBObject(txt); + PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, txt.I_ObjectAddress); +End; + +Procedure FP_AddPad(fp: IPCB_Component, Data: String, InFile: TextFile); +Var + s1, s2, inp, tag, lay : String; + pad : IPCB_Pad; + padsh : TShape; + cache : TPadCache; +Begin + pad := PcbServer.PCBObjectFactory(ePadObject, eNoDimension, eCreate_Default); + pad.Name := GetBetween(Data, '(Name "', '")'); +// pad.Layer := LayerFromString(GetBetween(Data, '(Layer ', ')')); + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + pad.X := MilsToCoord(Evaluate(s1)); + pad.Y := MilsToCoord(Evaluate(s2)); + pad.Rotation := Evaluate(GetBetween(Data, '(Rotation ', ')')); // 2010-07-06 gbn +// pad.Mode := ePadMode_LocalStack; // ePadMode_Simple, ePadMode_ExternalStack + s1 := GetBetween(Data, '(ExpandPaste ', ')'); + s2 := GetBetween(Data, '(ExpandMask ', ')'); + If s1 <> '' || s2 <> '' Then Begin + cache := pad.Cache; + If s1 <> '' Then Begin + cache.PasteMaskExpansionValid := eCacheManual; + cache.PasteMaskExpansion := MilsToCoord(Evaluate(s1)); + End; + If s2 <> '' Then Begin + cache.SolderMaskExpansionValid := eCacheManual; + cache.SolderMaskExpansion := MilsToCoord(Evaluate(s2)); + End; + pad.Cache := cache; + End; + If GetBetween(Data, '(Surface ', ')') = 'True' Then Begin + pad.Mode := ePadMode_Simple; + pad.Layer := eTopLayer; + End Else Begin + pad.Mode := ePadMode_LocalStack; + End; + pad.Moveable := False; + pad.HoleType := eRoundHole; // eSquareHole, eSlotHole + pad.HoleSize := MilsToCoord(Evaluate(GetBetween(Data, '(HoleSize ', ')'))); + //2020-11-18 JRR Start; Let's set the Plated value, if present + If GetBetween(Data, '(Plated ', ')') <> '' Then Begin + pad.Plated := (GetBetween(Data, '(Plated ', ')')='True'); + End; + //2020-11-18 JRR End + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + inp := Trim(inp); + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'PadShape': Begin + padsh := eNoShape; + StrChop(GetBetween(inp, '(Size ', ')'), ',', s1, s2); + Case GetBetween(inp, '(Shape ', ')') Of + 'NoShape': padsh := eNoShape; + 'Rounded': padsh := eRounded; + 'Rectangular': padsh := eRectangular; + 'Octagonal': padsh := eOctagonal; + 'CircleShape': padsh := eCircleShape; + 'ArcShape': padsh := eArcShape; + 'Terminator': padsh := eTerminator; + 'RoundedRectangle': padsh := eRoundedRectangular; + 'RotatedRectangle': padsh := eRotatedRectShape; + Else padsh := eNoShape; + End; + lay := GetBetween(inp, '(Layer ', ')'); + If CheckLeft(lay, 'Top') Then Begin + pad.TopShape := padsh; + pad.TopXSize := MilsToCoord(Evaluate(s1)); + pad.TopYSize := MilsToCoord(Evaluate(s2)); + End Else If CheckLeft(lay, 'Mid') Then Begin + pad.MidShape := padsh; + pad.MidXSize := MilsToCoord(Evaluate(s1)); + pad.MidYSize := MilsToCoord(Evaluate(s2)); + End Else If CheckLeft(lay, 'Bot') Then Begin + pad.BotShape := padsh; + pad.BotXSize := MilsToCoord(Evaluate(s1)); + pad.BotYSize := MilsToCoord(Evaluate(s2)); + End; + End; + 'EndPad': Begin + Break; + End; + Else Begin + ShowMessage('Keyword Error: ' + tag); + End; + End; + End; + fp.AddPCBObject(pad); + PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, pad.I_ObjectAddress); +End; + +Procedure ImportFootprints(InFile: TextFile, Lib: IPCB_Library, Errors: TStringList, InFileName : String); +Var + inp, tag, s, t : String; + fp : IPCB_Component; +Begin + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + inp := Trim(inp); + + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'Footprint': Begin + // create a footprint reference + fp := PCBServer.CreatePCBLibComp(); + If fp = Nil Then Begin + Errors.Add('Error creating footprint.'); + Break; + End; + // add data to it + fp.Name := GetBetween(inp, '(Name "', '")'); + // assign it to library + Lib.RegisterComponent(fp); + PCBServer.PreProcess(); + // add data to it + fp.BeginModify(); + // set height + t := GetBetween(inp, '(Height ', ')'); + If t <> '' Then Begin + fp.Height := MilsToCoord(Evaluate(t)); + End; + + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + inp := Trim(inp); + If CheckLeft(inp, '#') Then Continue; + + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'Pad': Begin + FP_AddPad(fp, inp, InFile); + End; + 'Line': Begin + FP_AddLine(fp, inp); + End; + 'Arc': Begin + FP_AddArc(fp, inp); + End; + 'Polygon': Begin + FP_AddPoly(fp, inp, InFile); + End; + 'Text': Begin + FP_AddText(fp, inp); + End; + 'Step': Begin + FP_AddStep(fp, inp, InFileName); + End; + 'EndFootprint': Begin + //ShowMessage('EndFootprint'); + Break; + End; + '': Continue; + Else Begin + ShowMessage('Keyword Error: ' + tag); + Break; + End; + End; + End; // while not eof() + fp.EndModify(); + PCBServer.PostProcess(); + // done with footprint + End; + 'EndFootprints': Begin + //ShowMessage('EndFootprint'); + Break; + End; + '': Continue; + Else Begin + ShowMessage('Keyword Error: ' + tag); + Break; + End; + End; // case tag + End; // while not eof() + PCBServer.PostProcess(); +End; + +{==============================================================================} +{==== Symbol Routines =======================================================} +{==============================================================================} + +Function TextJustificationFromString(Value: String): TTextJustification; +Begin + Case Value Of + 'BottomLeft': Result := eJustify_BottomLeft; + 'BottomCenter': Result := eJustify_BottomCenter; + 'BottomRight': Result := eJustify_BottomRight; + 'CenterLeft': Result := eJustify_CenterLeft; + 'Center': Result := eJustify_Center; + 'CenterRight': Result := eJustify_CenterRight; + 'TopLeft': Result := eJustify_TopLeft; + 'TopCenter': Result := eJustify_TopCenter; + 'TopRight': Result := eJustify_TopRight; + Else Result := eJustify_Center; + End; +End; + +Function SY_GetFont(Height: Double, Angle: TRotationBy90): TFontID; +Var + sz : Integer; +Begin + // 2012-11-07 gbn start + { sz := Round(Height / 10); + According to this page's bugs 4604 and 5552, Altium 10.890.23450 may have this fixed. + http://wiki.altium.com/pages/viewpage.action?pageId=34210039 + } + sz := (Height * 0.1); + // 2012-11-07 gbn end + + // 2019-01-16 gbn start, this should hopefully be temporary until Altium fixes their FontManager + If BrokenSCHFontManager > 0 Then Begin + Result := ForceSchFontID; + Exit; + End; + // 2019-01-16 gbn + + Result := SchServer.FontManager.GetFontID(sz, Angle, False, False, False, False, 'Courier New'); +End; + +Function SY_GetAngle(Angle : String): TRotationBy90; +Begin + Case Angle Of + '90': Result := eRotate90; + '180': Result := eRotate180; + '270': Result := eRotate270; + Else Result := eRotate0; + End; +End; + +Procedure SY_AddLine(sy: ISch_Component, Data: String); +Var + lin : ISch_Line; + s1, s2 ,s3: String; +Begin + lin := SchServer.SchObjectFactory(eLine, eCreate_Default); + If lin = Nil Then Exit; + StrChop(GetBetween(Data, '(Start ', ')'), ',', s1, s2); + lin.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + StrChop(GetBetween(Data, '(End ', ')'), ',', s1, s2); + lin.Corner := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + GetBetween(Data, 'Width ', ')'); + If s3 < 10 Then Begin + lin.LineWidth := eSmall; + End; + If s3 > 10 Then Begin + lin.LineWidth := eMedium; + End; + If s3 > 12 Then Begin + lin.LineWidth := eLarge; + End; + lin.LineStyle := eLineStyleSolid; + lin.Color := $000000; // NOTE: TODO: + lin.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + lin.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(lin); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, lin.I_ObjectAddress); +End; + +Procedure SY_AddRect(sy: ISch_Component, Data: String); +Var + rect : ISch_Rectangle; + s1, s2 ,s3: String; +Begin + rect := SchServer.SchObjectFactory(eRectangle, eCreate_Default); + If rect = Nil Then Exit; + StrChop(GetBetween(Data, '(Start ', ')'), ',', s1, s2); + rect.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + StrChop(GetBetween(Data, '(End ', ')'), ',', s1, s2); + rect.Corner := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + GetBetween(Data, 'Width ', ')'); + s3 := GetBetween(Data, '(Width ', ')'); + If s3 < 10 Then Begin + rect.LineWidth := eSmall; + End; + If s3 > 10 Then Begin + rect.LineWidth := eMedium; + End; + If s3 > 12 Then Begin + rect.LineWidth := eLarge; + End; + rect.Transparent := True; + rect.Color := $000000; // NOTE: TODO: + rect.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + rect.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(rect); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, rect.I_ObjectAddress); +End; + +Procedure SY_AddArc(sy: ISch_Component, Data: String); +Var + arc : ISch_Arc; + s1, s2, s3 : String; +Begin + arc := SchServer.SchObjectFactory(eArc, eCreate_Default); + If arc = Nil Then Exit; + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + arc.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + arc.Radius := MilsToCoord(Evaluate(GetBetween(Data, '(Radius ', ')'))); + s3 := GetBetween(Data, '(Width ', ')'); + If s3 < 10 Then Begin + arc.LineWidth := eSmall; + End; + If s3 > 10 Then Begin + arc.LineWidth := eMedium; + End; + If s3 > 12 Then Begin + arc.LineWidth := eLarge; + End; + arc.Color := $000000; // NOTE: TODO: + arc.StartAngle := Evaluate(GetBetween(Data, '(StartAngle ', ')')); + arc.EndAngle := Evaluate(GetBetween(Data, '(EndAngle ', ')')); + arc.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + arc.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(arc); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, arc.I_ObjectAddress); +End; + +Procedure SY_AddPoly(sy: ISch_Component, Data: String, InFile: TextFile); +Var + pol : ISch_Polygon; + pc: Integer; + s1, s2, inp, tag : String; +Begin + pol := SchServer.SchObjectFactory(ePolygon, eCreate_Default); + If pol = Nil Then Exit; + + pol.VerticesCount := Evaluate(GetBetween(Data, '(PointCount ', ')')); + pc := 0; + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + inp := Trim(inp); + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'Point': Begin + pc := pc + 1; + StrChop(GetBetween(inp, '(', ')'), ',', s1, s2); + pol.Vertex[pc] := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + End; + 'EndPolygon': Break; + Else Begin + ShowMessage('Keyword Error: ' + tag); + End; + End; + End; + pol.LineWidth := eZeroSize; // NOTE: TODO: + pol.Color := $000000; // NOTE: TODO: + pol.IsSolid := True; + pol.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + pol.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(pol); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, pol.I_ObjectAddress); +End; + +Procedure SY_AddText(sy: ISch_Component, Data: String); +Var + txt : ISch_Label; + s1, s2 : String; +Begin + txt := SchServer.SchObjectFactory(eLabel, eCreate_Default); + If txt = Nil Then Exit; + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + txt.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + If GetBetween(Data, '(Mirrored ', ')') = 'True' Then Begin + txt.IsMirrored := True; + End; + txt.Orientation := SY_GetAngle(GetBetween(Data, '(Rotation ', ')')); + txt.FontID := SY_GetFont(Evaluate(GetBetween(Data, 'Height ', ')')), txt.Orientation); + txt.Justification := TextJustificationFromString(GetBetween(Data, '(Justification ', ')')); + txt.Color := $000000; // NOTE: TODO: + txt.Text := GetBetween(Data, '(Value "', '")'); + txt.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + txt.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(txt); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, txt.I_ObjectAddress); +End; + +Procedure SY_AddParam(sy: ISch_Component, Data: String); +Var + prm : ISch_Parameter; + s1, s2: String; +Begin + prm := SchServer.SchObjectFactory(eParameter, eCreate_Default); + If prm = Nil Then Exit; + prm.IsHidden := True; + If GetBetween(Data, '(Name ', '"') = 'Visible' Then Begin + prm.IsHidden := False; + End; + prm.Name := GetBetween(Data, '(Name "', '")'); + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + prm.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + If GetBetween(Data, '(Mirrored ', ')') = 'True' Then Begin + prm.IsMirrored := True; + End; + prm.Orientation := SY_GetAngle(GetBetween(Data, '(Rotation ', ')')); + prm.FontID := SY_GetFont(Evaluate(GetBetween(Data, 'Height ', ')')), prm.Orientation); + prm.Justification := TextJustificationFromString(GetBetween(Data, '(Justification ', ')')); + prm.Color := $000000; // NOTE: TODO: + prm.Text := GetBetween(Data, '(Value "', '")'); + prm.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + prm.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(prm); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, prm.I_ObjectAddress); +End; + +Procedure SY_AddComment(sy: ISch_Component, Data: String); +Var + prm : ISch_Parameter; + s1, s2: String; +Begin + prm := SchServer.SchObjectFactory(eParameter, eCreate_Default); + If prm = Nil Then Exit; + prm.IsHidden := True; + If GetBetween(Data, '(Name ', '"') = 'Visible' Then Begin + prm.IsHidden := False; + End; + prm.Name := GetBetween(Data, '(Name "', '")'); + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + prm.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + If GetBetween(Data, '(Mirrored ', ')') = 'True' Then Begin + prm.IsMirrored := True; + End; + prm.Orientation := SY_GetAngle(GetBetween(Data, '(Rotation ', ')')); + prm.FontID := SY_GetFont(Evaluate(GetBetween(Data, 'Height ', ')')), prm.Orientation); + prm.Justification := TextJustificationFromString(GetBetween(Data, '(Justification ', ')')); + prm.Color := $000000; // NOTE: TODO: + prm.Text := GetBetween(Data, '(Value "', '")'); + prm.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + prm.OwnerPartDisplayMode := sy.DisplayMode; + sy.Comment := prm; // crashes, as of Altium 16.0.5 + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, prm.I_ObjectAddress); +End; + +Procedure SY_AddPin(sy: ISch_Component, Data: String); +Var + pin : ISch_Pin; + s1, s2 : String; +Begin + pin := SchServer.SchObjectFactory(ePin, eCreate_Default); + If pin = Nil Then Exit; + + // Define the pin parameters. + StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2); + pin.Location := Point(MilsToCoord(Evaluate(s1)), MilsToCoord(Evaluate(s2))); + pin.Color := $000000; // NOTE: TODO: + pin.Orientation := SY_GetAngle(GetBetween(Data, '(Rotation ', ')')); + Case GetBetween(Data, '(PinType ', ')') Of + 'IO': pin.Electrical := eElectricIO; + 'Input': pin.Electrical := eElectricInput; + 'Output': pin.Electrical := eElectricOutput; + 'Passive': pin.Electrical := eElectricPassive; + 'OpenCollector': pin.Electrical := eElectricOpenCollector; + 'OpenEmitter': pin.Electrical := eElectricOpenEmitter; + 'HiZ': pin.Electrical := eElectricHiZ; + 'Power': pin.Electrical := eElectricPower; + Else pin.Electrical := eElectricPassive; + End; + pin.PinLength := MilsToCoord(Evaluate(GetBetween(Data, '(Length ', ')'))); + pin.SwapId_Pin := GetBetween(Data, '(PinSwap ', ')'); + pin.SwapId_Part := GetBetween(Data, '(PartSwap ', ')'); + pin.SwapId_PartPin := GetBetween(Data, '(PinSeq ', ')'); + s1 := GetBetween(Data, '(Designator ', '")'); + pin.ShowDesignator := CheckLeft(s1, 'Visible'); + pin.Designator := RightOf(s1, '"'); + s1 := GetBetween(Data, '(Name ', '")'); + pin.ShowName := CheckLeft(s1, 'Visible'); + pin.Name := RightOf(s1, '"'); + pin.OwnerPartId := Evaluate(GetBetween(Data, '(Part ', ')')); + + pin.OwnerPartDisplayMode := sy.DisplayMode; + sy.AddSchObject(pin); + SchServer.RobotManager.SendMessage(sy.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, pin.I_ObjectAddress); +End; + +Procedure ImportComponents(InFile: TextFile, Lib: ISch_Document, Errors: TStringList); +Var + inp, tag, s, t : String; + sy : ISch_Component; + simp : ISch_Implementation; +Begin + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'Component': Begin + // create a component reference + sy := SchServer.SchObjectFactory(eSchComponent, eCreate_Default); + If sy = Nil Then Begin + Errors.Add('Error creating component.'); + Break; + End; + // Set up parameters for the library component. + SchServer.ProcessControl.PreProcess(Lib, ''); + // Define the LibReference and add the component to the library. + sy.LibReference := GetBetween(inp, '(Name "', '")'); + sy.Designator.Text := GetBetween(inp, '(DesPrefix "', '")'); + sy.ComponentDescription := 'Imported'; + sy.PartCount := Evaluate(GetBetween(inp, '(PartCount ', ')')); + sy.CurrentPartId := 1; + + // add data to it + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + StrChop(inp, ' ', tag, inp); + Case tag Of + 'Description': Begin + //sy.SourceDescription := GetBetween(inp, '(Value "', '")'); ' SourceDescription doesnt exist (as of 16.0.5) + sy.ComponentDescription := GetBetween(inp, '(Value "', '")'); + End; + 'Comment': Begin + //sy.Comment.UnderlyingString := GetBetween(inp, '(Value "', '")'); ' Comment.UnderlyingString doesnt exist (as of 16.0.5) + //sy.Comment.DisplayString := GetBetween(inp, '(Value "', '")'); // crashes + //SY_AddComment(sy, inp); // crashes (see function) + sy.Comment.text :=getbetween(inp, '(Value "', '")'); + End; + 'Parameter': Begin + SY_AddParam(sy, inp); + End; + 'Pin': Begin + SY_AddPin(sy, inp); + End; + 'Line': Begin + SY_AddLine(sy, inp); + End; + 'Rectangle': Begin + SY_AddRect(sy, inp); + End; + 'Arc': Begin + SY_AddArc(sy, inp); + End; + 'Polygon': Begin + SY_AddPoly(sy, inp, InFile); + End; + 'Text': Begin + SY_AddText(sy, inp); + End; + 'Footprint': Begin + simp := sy.AddSchImplementation(); + simp.ModelName := GetBetween(inp, '(Name "', '")'); + simp.ModelType := cDocKind_PcbLib; + simp.AddDataFileLink(simp.ModelName, '', cDocKind_PcbLib); + simp.MapAsString := GetBetween(inp, '(Map "', '")'); + End; + 'EndComponent': Begin + Lib.AddSchComponent(sy); + // Send a system notification that a new component has been added to the library. + SchServer.RobotManager.SendMessage(Lib.I_ObjectAddress, c_BroadCast, SCHM_PrimitiveRegistration, sy.I_ObjectAddress); + Lib.CurrentSchComponent := sy; + Break; + End; + '': Continue; + Else Begin + ShowMessage('Keyword Error: ' + tag); + Break; + End; + End; + End; // while not eof() + // done with component + SchServer.ProcessControl.PostProcess(Lib, ''); + End; + 'EndComponents': Begin + Break; + End; + '': Continue; + Else Begin + ShowMessage('Keyword Error: ' + tag); + Break; + End; + End; // case tag + End; // while not eof() +End; + +{==============================================================================} +{==== Main Routines =========================================================} +{==============================================================================} + +Function InitLibDocs(BasePath: String, + Out Proj : IProject, + Out ProjDoc : IServerDocument, + Out PcbLibDoc : IServerDocument, + Out SchLibDoc : IServerDocument, + Out pLib : IPCB_Library, + Out sLib : ISch_Document): Boolean; +Var + WorkSpace : IWorkSpace; +Begin + Result := False; + WorkSpace := GetWorkSpace; + If WorkSpace = Nil Then Begin + ShowMessage('Nil WorkSpace'); + Exit; + End; + // Integrated library, and the project it creates + ProjDoc := Client.OpenNewDocument(cDocKind_IntegratedLibrary, 'UL_Imported_Lib', 'UL_Imported_Lib', False); + If ProjDoc = Nil Then Begin + ShowMessage('Nil ProjDoc'); + Exit; + End; + If Not ProjDoc.DoSafeChangeFileNameAndSave(BasePath + '.LibPkg', cDocKind_IntegratedLibrary) Then Begin + ShowMessage('ProjDoc Save failed'); + Exit; + End; + Proj := WorkSpace.DM_GetProjectFromPath(BasePath + '.LibPkg'); + If Proj = Nil Then Begin + ShowMessage('Nil Proj'); + Exit; + End; + // Footprint library + PcbLibDoc := Client.OpenNewDocument(cDocKind_PcbLib, 'UL_Footprints', 'UL_Footprints', False); + If PcbLibDoc = Nil Then Begin + ShowMessage('Nil PcbLibDoc'); + Exit; + End; + If Not PcbLibDoc.DoSafeChangeFileNameAndSave(BasePath + '.PcbLib', cDocKind_PcbLib) Then Begin + ShowMessage('PcbLibDoc Save failed'); + Exit; + End; + Proj.DM_AddSourceDocument(BasePath + '.PcbLib'); + pLib := PCBServer.GetPCBLibraryByPath(BasePath + '.PcbLib'); + If pLib = Nil Then Begin + ShowMessage('Nil pLib'); + Exit; + End; + // Symbol Library + SchLibDoc := Client.OpenNewDocument(cDocKind_SchLib, 'UL_Components', 'UL_Components', False); + If SchLibDoc = Nil Then Begin + ShowMessage('Nil SchLibDoc'); + Exit; + End; + If Not SchLibDoc.DoSafeChangeFileNameAndSave(BasePath + '.SchLib', cDocKind_SchLib) Then Begin + ShowMessage('SchLibDoc Save failed'); + Exit; + End; + Proj.DM_AddSourceDocument(BasePath + '.SchLib'); + sLib := SchServer.GetSchDocumentByPath(BasePath + '.SchLib'); + If sLib = Nil Then Begin + ShowMessage('Nil sLib'); + Exit; + End; + // Done + Result := True; +End; + +Procedure ImportAscIIData(InFileName : String); +Var + WorkSpace : IWorkSpace; + dProj : IProject; + + Proj : IProject; + ProjDoc : IServerDocument; + PcbLibDoc : IServerDocument; + SchLibDoc : IServerDocument; + pLib : IPCB_Library; + sLib : ISch_Document; + + DefFP : IPCB_Component; // default initial blank footprint + DefSY : ISch_Component; // default initial blank symbol + + SavePath: String; + + InFile : TextFile; + Errors : TStringList; + inp, tag : String; +Begin + + // 2019-01-16 gbn start, try to detect Altium 19, so we can kludge around its broken SCH FontMangaer + If '19.0' < GetCurrentProductBuild Then Begin + ShowMessage('NOTE: This version of Altium has issues with the Schematic FontManger''s scripting interface.' + + ' All symbol texts and parameters will use the FontID specified by the ForceSchFontID integer at the top of UL_Import.pas.'); + BrokenSCHFontManager := 1; + End; + // 2019-01-16 gbn end + + //SavePath := LeftOf(InFileName, '.'); // 2019-10-02 gbn + SavePath := LeftOfLast(InFileName, '.'); + Errors := TStringList.Create(); + + WorkSpace := GetWorkSpace; + If WorkSpace = Nil Then Begin + ShowMessage('Nil WorkSpace'); + Exit; + End; + dProj := WorkSpace.DM_FocusedProject(); + + // create integerated library documents + If InitLibDocs(SavePath, Proj, ProjDoc, PcbLibDoc, SchLibDoc, pLib, sLib) = False Then Begin + ShowMessage('Error initializing library'); + Exit; + End; + Proj.DM_SetAsCurrentProject(); + + // get the original blank footprint for later deletion when we are done + DefFP := pLib.CurrentComponent; + // get the original blank symbol for later deletion when we are done + DefSy := sLib.CurrentSchComponent; + + // start importing data + AssignFile(InFile, InFileName); + Reset(InFile); + + While Not EOF(InFile) Do Begin + ReadLn(InFile, inp); + If VarIsNull(inp) Then Continue; + + StrChop(inp, ' ', tag, inp); + tag := Trim(tag); + Case tag Of + 'StartFootprints': Begin + ImportFootprints(InFile, pLib, Errors, InFileName); + End; + 'StartComponents': Begin + ImportComponents(InFile, sLib, Errors); + End; + '': Continue; + End; + End; + CloseFile(InFile); + + // delete the original default blank footprint + If Not VarIsNull(DefFP) Then Begin + pLib.DeRegisterComponent(DefFP); + pLib.RemoveComponent(DefFP); + End Else Begin + ShowMessage('DefFP was Nil'); + End; + // delete the original default blank symbol + // NOTE: TODO: looks broken; does nothing noticable + If Not VarIsNull(DefSY) Then Begin + //ShowMessage('trying to delete DefSym "' + DefSy.LibReference + '"'); + sLib.UnRegisterSchObjectFromContainer(DefSY); + sLib.RemoveSchObject(DefSy); + //DefSY.Container.RemoveSchObject(DefSy); + End Else Begin + ShowMessage('DefSym was Nil'); + End; + + // update views? + pLib.Board.ViewManager_FullUpdate(); + // Refresh symbol library. + sLib.GraphicallyInvalidate(); + + // save files again + ProjDoc.DoFileSave(cDocKind_IntegratedLibrary); + PcbLibDoc.DoFileSave(cDocKind_PcbLib); + SchLibDoc.DoFileSave(cDocKind_SchLib); + + //2021-01-19 JRR Start; commenting out the below section since the autoit routine does not catch the message box frrom the script + //// set the original project back to its focus + //If dProj <> Nil Then Begin + // dProj.DM_SetAsCurrentProject(); + //End; + + //ShowMessage('Done with "' + SavePath + '"'); + //2021-01-19 JRR End +End; + |