I would like to automatically derate certain components in a schematic using DelphiScript.

For example, say we have a 5V and 12V net in our schematic and some 16V capacitors on each of those nets. In order to derate the capacitors to 50%, I need to select only those that are connected to the 12V net and replace them with, for example, 25V capacitors.

(Note that we can't accomplish this through the "Find Similar Objects..." dialog because that considers only the characteristics of the component itself, not its implementation details. As projects get larger with multiple sheets and interdependent boards, even grouping components by net isn't enough to keep this from becoming tedious and error-prone.)

The Connectivity example script comes close to providing a full solution. Unfortunately, the comments indicate that a physical document is required in order to determine components' nets.

Is there a way to fetch component nets from a schematic alone? I don't see why that would be impossible, as the nets are defined in the schematic and the rat's nest is generated from the same.

  • \$\begingroup\$ Cool idea. Could you use the part parameters, ignoring whatever net its connected to entirely? \$\endgroup\$
    – dext0rb
    Commented Dec 18, 2013 at 2:27
  • \$\begingroup\$ Sure, if "connected nets" was a parameter. Unfortunately, it's not, so if I wanted to script as little as possible, I'd simply add the connected nets as a parameter (the example script does basically that) and use the "Find Similar Objects" dialog to select the parts. Again, the problem here is that the example script wants a physical document in order to determine net connectivity, and I want to do this based just on the logical document. \$\endgroup\$
    – yoos
    Commented Dec 18, 2013 at 2:47
  • \$\begingroup\$ I thought about it for awhile but I don't know what you mean by "logical document". Could you explain again? \$\endgroup\$
    – dext0rb
    Commented Dec 18, 2013 at 15:25
  • \$\begingroup\$ From what I understand from this technical reference page, it's the schematic document (as opposed to the pcbdoc being the physical document). \$\endgroup\$
    – yoos
    Commented Dec 18, 2013 at 17:42
  • \$\begingroup\$ To add to my previous comment, it looks like any document that is a physical representation of the circuit is a physical document. In multi-channel designs, for example, two or more schematic sheet symbols (of the same kind) would get compiled to physical documents, while the original schematic sheet would be a logical document. \$\endgroup\$
    – yoos
    Commented Dec 19, 2013 at 22:05

1 Answer 1


If you have a nameing convention in your schematic to name the net by the voltage value you can generate a netlist via the outjob and parse it in the script. The sript could be started by the outjob. There are many diferent types of netlist outputs, try witch one is easier to parse by your script.

For example:

Calay Netlist:

/1V25_STBY C4101(2) C4106(1) R4102(2) R4144(1) TP4176(1) U4100(G8) U4100(H7);

/13V5_RPS C6301(2) C6308(2) C6314(1) C6317(2) R6322(2) R6325(2) T6343(1);

A script could be: If netname starts with a number treat it as a Voltage value. If Component name starts with C treat it as a capacitor. add or change component parameter "used voltage" to extracted voltage from netname.

See Altum Script example

Read & write ini files: \Delphiscript Scripts\General\IniFileEg.PAS

add & change Component Parameters: \Delphiscript Scripts\SCH\UserDefinedParameters


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.