This event is raised when the 3D model of the component is requested.

syntaxSyntax:
function OnBuild3DModel()

Remarks

The purpose of this function is to create all the 3D objects that make up the 3D model of the component.

Example

See the TO-220 sample code for the complete script.

  Copy codeCopy code
function OnBuild3DModel()
{
  var A = FWiz.GetValue("A");
  var D = FWiz.GetValue("D");
  var L = FWiz.GetValue("L");
  var L1 = FWiz.GetValue("L1");
  var Q = FWiz.GetValue("Q");
  var F = FWiz.GetValue("F");
  var E = FWiz.GetValue("E");
  var P = FWiz.GetValue("P");
  var H1 = FWiz.GetValue("H1");
  var b = FWiz.GetValue("b");
  var b1 = FWiz.GetValue("b1");
  var c = FWiz.GetValue("c");
  var e = FWiz.GetValue("e");
  var J1 = FWiz.GetValue("J1");
  var tabShape = FWiz.GetValue("BEVELEDTAB") ? -50 : 0;

  var bodyStyle = FWiz.Get3DStyle(0);
  var pinsStyle = FWiz.Get3DStyle(1);

  var m = (A - F) / 2;
  var cx = 0;
  var cy = J1 + c / 2 - A / 2;
  var rectBodyXY = new DlxRect();
  rectBodyXY.SetRect(new DlxPoint(cx, cy), E, A);  

  var zPin = 0;
  var zBody = zPin+L;
  var zMax = zBody+D;
  var zTab = zMax-H1;
  var zHole = zMax-Q;

  var pack = FWiz.Get3DModelCtx();

  // Body
  var shapeBodyYZ = new DlxFigure();
  shapeBodyYZ.BeginShape();
  shapeBodyYZ.AddPoint(zBody, rectBodyXY.top);
  shapeBodyYZ.AddPoint(zBody, rectBodyXY.bottom);
  shapeBodyYZ.AddPoint(zTab - m, rectBodyXY.bottom);
  shapeBodyYZ.AddPoint(zTab, rectBodyXY.bottom + m);
  shapeBodyYZ.AddPoint(zTab, rectBodyXY.top);
  shapeBodyYZ.EndShape(true);

  var body = new DlxSolid(shapeBodyYZ, bodyStyle);
  body.ExtrudeYZ(rectBodyXY.left, E);
  pack.Add(body);

  // Tab
  var shapeTabXZ = new DlxFigure();
  shapeTabXZ.SetRectangle(new DlxPoint(rectBodyXY.left, zTab), rectBodyXY.Width(), zMax - zTab, 0, 0, tabShape, tabShape);

  var tabHoleXZ = new DlxFigure();
  tabHoleXZ.SetCircle(new DlxPoint(cx, zHole), P/2);

  var tab = new DlxSolid(shapeTabXZ, pinsStyle);
  tab.AddHole(tabHoleXZ);
  tab.ExtrudeXZ(rectBodyXY.top-F, F);
  pack.Add(tab);

  // Pins
  var lead = new DlxLead();
  lead.Pin(pinsStyle, b, L-L1, c, b1, L1, 0);
  lead.Rotate(0, 0, 90);
  pack.Add(lead);

  lead = new DlxLead();
  lead.Pin(pinsStyle, b, L-L1, c, b1, L1, 0);
  lead.Rotate(0, 0, 90);
  lead.Move(-e, 0, 0);
  pack.Add(lead);

  lead = new DlxLead();
  lead.Pin(pinsStyle, b, L-L1, c, b1, L1, 0);
  lead.Rotate(0, 0, 90);
  lead.Move(e, 0, 0);
  pack.Add(lead);

  pack.Move(0, 0, -3.6);
}

See also