Monday, November 27, 2017

Using Database Libraries with 32-bit and 64-bit Altium

Related Link:  Parts for Altium

Using Database Libraries with 32-bit and 64-bit Altium Design Software on the same Computer | Online Documentation for Altium Products

In the above link Altium offers 3 possible solutions to connect 32bit and 64bit versions of Altium to Microsoft Excel and Access.


Solutions:


click on image to view
















Note:


Altium Solution 1 (Install 64bit Office) applies to only AD18. You can not ping-pong between AD17 and AD18 if you install a 64bit version of MS Office.


Solution 1 does not apply to AD17, because AD17 is a 32bit application.

To support both AD17 and AD18 you need to use a 32bit version of MS Office and a 64bit Access Database Engine.


Altium Solution #2 for 32-bit Office 2007,2010,2013 or 2016 

Install 64-bit Microsoft Access Database Engine (2010)

then, 

Open the Registry Editor (regedit.exe from a Windows search) and browse to the following path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths

Delete or rename the mso.dll registry entry.

Source Altium: 

Procedure for Installing 64-bit MS Access Database Drivers alongside 32-bit MS Office


Altium Solution #3 for Office 2007


The procedure to install the 64-bit Microsoft Access Database Engine (2010) first, followed by the 32-bit version (2007) of Microsoft Office, is as follows:
  1. Uninstall all 32-bit Office installations (including language packs and so on). If you have installed the 32-bit Microsoft Access Database Engine 2010, or 2016, you must uninstall this too.
  2. Install the 64-bit Microsoft Access Database Engine 2010.
  3. Reboot your computer.
  4. Test if your 64-bit Altium Design Software works with Database Libraries.
  5. Install the 32-bit version of Microsoft Office (2007).
  6. Reboot your computer.
  7. Test if your 32-bit Altium Design Software works with Database Libraries.

My Solution for Office 2007 and AD17 / AD18 DBLib Access databases.


I used a variation of the Altium Solution #3 for Office 2007.


I had trouble completing the uninstall for Office 2007.  I used a Microsoft easy fix tool to completely uninstall Office 2007 and clean up the machine's registry.


Look for the Option 2 Download at:  Uninstall Office from a PC 










I chose to: Download Microsoft Access Database Engine 2016 Redistributable ...

After installing the 2016 Access Database Engine 64bit, I installed Office 2007.


Office 2007 is available only as a 32bit application. 64bit versions of Office started in 2010.

Now both AD17 (32bit) and AD18 (64bit) are able to connect to the same Access database.


Click on image to view















Related Links: 

Receiving the error message "We can't install the 64-bit version of office because we found the following 32-bit programs on your PC:"

Saturday, November 25, 2017

AD18 - Tips

To show the ratsnest (Connection Lines)

Press L > Scroll down to System Colors and expand the dialog.















Variants are are selected in the Project Panel

click on image to view

















Working Guides can be found on the Properties Panel for the Board


Click inside or outside the board to bring up the Board Properties Panel.














When placing Step Models, hit the Tab key to pause, then . . . 



Then select Generic or Extruded, etc . . .




















Connectivity Limits





















Fix Connectivity Limits

General > System > Advanced > change the setting ComponentDragConnectionLimit (restart required)


















That's it !

Monday, November 6, 2017

AD17 Project Outputs

In AD17 and higher Altium changed the Project Releaser.

Below are some tricks I use to get project outputs done my way !

As shown below I start with Include Custom Data which I name as Project Outputs.

click on images to view

There are a lot of intertwined files in a project where a seemly small change can ripple through several related project outputs.

I prefer to generate all of the project outputs in un-zipped folders for Eng, Fab and Mfg.

My current employer uses an Agile PLM system and the un-zipped files need to be uploaded or attached to the product structure in the PLM system.

click on images to view








Select the Folder Option and chop off Projects Outputs path as shown below.

click on images to view

















That's it !

Thursday, November 2, 2017

BOM generator Excel template with row forumla - Altium Discussion Forums

BOM generator Excel template with row forumla - Altium Discussion Forums:

"=INDIRECT("Sheet1!A"&ROW()) & (INDIRECT("Sheet1!b"&ROW()))"

'via Blog this'

Altium to Cadence OrCAD Schematic Translator - YouTube

Altium to Cadence OrCAD Schematic Translator - YouTube:


OrCAD file extensions:

brd - board file

.mdd - place replicate module file

.dra and .psm - package symbol

.dra and .bsm - Mechanical symbol

.dra and .osm - format symbol

.dra and ssm - shape symbol.

.dra and fsm - flash symbol.

.pad - padstack.

pstxchip.dat, pstxnet.dat and pstxprt.dat (and if you use constraint manager in the front end pstdedb.cdsz) - netlist files.

.dsn - schematic file.

.opj - schematic project file but can be re-created so you may not need this.

.olb - schematic library file.


That's It !

Monday, October 30, 2017

Parts on Demand — EE Concierge

Here it its, Parts On Demand from an Altium affiliated company.

Parts on Demand Link: EE Concierge

Related: Upverter Joins Altium - Octopart Blog


'via Blog this'

Friday, October 27, 2017

GitHub - issus/altium-library: Open source Altium Database Library with tens of thousands of high quality parts and 3d models.

GitHub - issus/altium-library: Open source Altium Database Library with tens of thousands of high quality parts and 3d models.

"Celestial Altium Library An exceptional, open source database library for Altium, currently supporting MSSQL and SQL Azure as the backend for easy use within teams, and no data corruption unlike MS Access. Current part count in live database: 28,635 in almost 600 packages. This library has been built for high quality data, with high quality footprints and high quality 3D models."

'via Blog this'

Wednesday, October 11, 2017

Blanket and Class Name

Using a Blankets with a ClassName in your schematics can simplify selecting and highlighting Nets when laying out a PCB.











Add a ClassName Directive to the Blanket






















Push the changes to the PCB . . .












Using the PCB Panel, Select the Net Class, then Show or Hide the Nets.




That's it !

Monday, July 24, 2017

Script for Altium Database Libraries

Video - Using a script to build a database library from a design's Bill of Materials.

Library Reference Script for Altium - YouTube













The Library Ref Script is included in the Parts Download.


That's it !

Sunday, July 2, 2017

Bit Map Logo

Instructions for creating a Bit Map Logo

The logo should have a pure white background and single color foreground.
Open the logo in Windows Paint.


In properties (File > Properties) set to Black and White and click OK twice. If the entire picture goes all black or all white then you know it won't work.


Go back to properties, set to color and click OK. This part is important to make it compatible with Altium for pasting.


Select All (Control-A) and copy (Control-C)
Paste into Altium then re-size it with the 4 corner handles.


Eric's Suggested Solution *****

To scale the bitmap/regions:

- Select the regions
- Tools->Convert->Create Union from selected objects
- Right click on the union and select Unions->Resize union


Source: https://forum.live.altium.com/posts/218118


That's it !

Friday, June 16, 2017

High Voltage - Explicit Design Rules

Outer Layer Rule "HV to LV :  

For Simple Designs with only Thru-Hole Vias

Scope1 Expression
InNetClass('HV') And Not OnMid

Scope2 Expression
InNetClass('LV') And Not OnMid


For Complex Designs with Thru-Hole and  Blind, Buried or uVIAs use ExistsOnLayer

Scope1 Expression
InNetClass('HV') And (ExistsOnLayer('Top Layer') Or ExistsOnLayer('Bottom Layer'))

Scope2 Expression
InNetClass('LV') And (ExistsOnLayer('Top Layer') Or ExistsOnLayer('Bottom Layer'))  

MId Layer Rule HV to LV :

Scope1 Expression
InNetClass('HV') AND (OnMid or OnMultiLayer)   

Scope2 Expression
InNetClass('LV') AND (OnMid or OnMultiLayer)

Notes:

ExistsOnLayer Includes Thru-Hole pads and Vias that connect to outer layers. When using ExistsOnLayer the Top and Bottom layer names must match the long layer user defined layer names in the stackup.

As of AD24.1.2 and older versions ExistsOnLayer is the only reliable solution for designs to use with uVias, Blind and Buried Vias.


That's it !

Tuesday, May 30, 2017

Re-use Methods

Eric Albach

I just found a snippet design re-use method that is quite reasonable. Basically, append a question mark to the designators and create the snippets. Place the snippets in the new schamatic and PCB. Link the components between the schematic and PCB. Use Annotate Schematics Quietly. Update the PCB.

It's pretty easy. With this method it takes less than a minute to add a fully linked and annotated design. I used to spend a lot more time.

From the original schematic and PCB:
Update and Link the components between the schematic and PCB
Select the schematic section


Use SCH Inspector set to include only parts and use Smart Edit Formula on designators to append with a question mark.
        

Example formula : !+'?'

ends up with R12? (leaving the numbers keeps the components linkable and the question mark allows quiet annotation)

Update the PCB with the new designators
Create the schematic and PCB snippets

In the new schematic and PCB:
Place the snippets
Link the components using Project > Component Links > Add Pairs Matched by Designator
Use Annotate Schematics Quietly
Update the PCB


Source https://forum.live.altium.com/posts/221757/645999

Rich Betz

When you paste PCB snippets, be careful with existing 'ON' Planes. Your via's can and will connect to the first plane they contact, throwing your net connections all out of whack.

Either turn off all of your Plane Layers before you place the snippet, or place it outside the board outline until you get all of your component net connections linked up correctly.

When you get your Sch/Pcb component pin nets all linked up with All Layers On, select the whole snippet area.


Use PCB Filter (IsSelected and (IsVia or IsTrack))  to filter out the parts but hold on to all the connections.


Then CUT the connections with reference to Pin1 somewhere in the snippet,


Then Paste right back in the same place.  All tracks and via's will adopt NetName from component pin nets.


Then... you can turn your Planes back on and position the snippet where you want it.


Source: https://forum.live.altium.com/posts/221757/646088

Eric Albach 

Possibly the best method for the PCB side is to keep "snippets" in a PcbDoc then you can select, copy and paste special with Keep Net Name. That way you won't lose the polygon pour nets.

Source: https://forum.live.altium.com/posts/221757/646099


TrueType Fonts in PDFs

Workaround:

"Open the file in real adobe acrobat or the viewer rotate the pages and then rotate them back and then save. Files can now be saved. Doing this probably removes the bug that Thomas mentions and puts it back to the correct standard."


Source: Altium Ideas

Sunday, May 28, 2017

Delphi File Basics

function Read_ini(junk:string):boolean;

var
  folderName : string;
  fileName : string;
  myFile   : TextFile;
  data     : string;
begin

     //showmessage (Board.FileName);
     //showmessage (PCBServer.GetCurrentPCBBoard.FileName);
     //showmessage (ExtractFilePath(Application.ExeName));
     //showmessage (ClientAPI_SpecialFolder_AltiumApplicationData);

     // For ini file Saved in Project Folder
     FileName := (ExtractFilePath(Board.FileName))+ 'Designators.ini';

     // Global ini file
     if Not FileExists(FileName) then
     begin
       // Try to open a text file for writing to
       folderName := ExtractFilePath(ClientAPI_SpecialFolder_AltiumApplicationData) + 'Scripts\';
       CreateDir (folderName);
       FileName := folderName + 'Designators.ini';
     end;

     //showmessage (FileName);

     if FileExists(fileName) then
     begin
         AssignFile(myFile, fileName);

         // Reopen the file in read mode
         Reset(myFile);

         // Read the file contents
         //while not Eof(myFile) do
         //begin

         //ShowMessage(data);

         if not Eof(myFile) then ReadLn(myFile, data);
            EditMinHeight.Text:= data;

         if not Eof(myFile) then ReadLn(myFile, data);
            EditMaxHeight.Text:= data;

         if not Eof(myFile) then ReadLn(myFile, data);
            EditCommentsTop.Text:= data;

         if not Eof(myFile) then ReadLn(myFile, data);
            EditCommentsBot.Text:= data;

         if not Eof(myFile) then ReadLn(myFile, data);
            EditTestPointsTop.Text:= data;

         if not Eof(myFile) then ReadLn(myFile, data);
            EditTestPointsBot.Text:= data;

         //end;

         CloseFile(myFile);
         result := True
     end;

     // Debug Code
     // Now see if the file exists
     // if FileExists(fileName)
     // then ShowMessage(fileName+' exists OK')
     // else ShowMessage(fileName+' does not exist');

     // Delete the file and look again
     // DeleteFile(fileName);
     // if FileExists(fileName)
     // then ShowMessage(fileName+' still exists!')
     // else ShowMessage(fileName+' no longer exists');

end;


function Write_ini(junk:string):boolean;

var
  folderName : string;
  fileName : string;
  myFile : TextFile;

begin

  // Open a text file for writing to

    // For .ini files Saved in Project Folder
    fileName := (ExtractFilePath(Board.FileName)) + 'Designators.ini';
    AssignFile(myFile, fileName);
    ReWrite(myFile);
      Write(myFile, EditMinHeight.Text + #13#10);
      Write(myFile, EditMaxHeight.Text + #13#10);
      Write(myFile, EditCommentsTop.Text + #13#10);
      Write(myFile, EditCommentsBot.Text + #13#10);
      Write(myFile, EditTestPointsTop.Text + #13#10);
      Write(myFile, EditTestPointsBot.Text + #13#10);
    CloseFile(myFile);

    // Global ini file
    if Not FileExists(fileName) then
    begin
      folderName := ExtractFilePath(ClientAPI_SpecialFolder_AltiumApplicationData) + 'Scripts\';
      CreateDir (folderName);
      fileName := folderName + 'Designators.ini';
      AssignFile(myFile, fileName);
      //DeleteFile(fileName);
      ReWrite(myFile);
      Write(myFile, EditMinHeight.Text + #13#10);
      Write(myFile, EditMaxHeight.Text + #13#10);
      Write(myFile, EditCommentsTop.Text + #13#10);
      Write(myFile, EditCommentsBot.Text + #13#10);
      Write(myFile, EditTestPointsTop.Text + #13#10);
      Write(myFile, EditTestPointsBot.Text + #13#10);
      CloseFile(myFile);
    end;

end;


Debug Code

     // See if the file exists
     // if FileExists(fileName)
     // then ShowMessage(fileName+' exists OK')
     // else ShowMessage(fileName+' does not exist');

     // Delete the file and look again
     // DeleteFile(fileName);
     // if FileExists(fileName)
     // then ShowMessage(fileName+' still exists!')

     // else ShowMessage(fileName+' no longer exists');

Related Links:
Delphi Basics : Files