Dear Kicad developers,

I am browsing the Kicad source code to get an idea how to integrate a
simulation tool.

I'd like the following:

1. The plugin should be informed whenever something changes. It would be
great to get a bounding box of the change.
2. The plugin should be able to draw on the canvas. I'd like to register
a new layer (for example to show the triangle mesh). The user should
then be able to enable/disable this layer.

These two requirements are in some sense similar to the requirements of
"ratsnest", so I followed "ratsnest" through the code.

Concerning (1):
I got the impression that it is not easy to be informed about all
changes in a BOARD. Is this correct?

Concerning (2):
And I got the impression that there is not one way to draw to the
canvas. I found two drawing methods for ratsnest, one in PCB_BASE_FRAME,
the other in RATSNEST_VIEWITEM::ViewDraw. Is it necessary to implement
two drawing methods for each feature?

And it seems that the layers are organized in an enum (GAL_LAYER_ID), so
adding a layer at runtime seems impossible without larger infrastructure
changes. Is this correct?

What would you propose? How can a plugin be informed about all changes
to the board? And how could a plugin draw on the canvas?

thanks a lot in advance,

On 11/30/2017 12:18 AM, Wayne Stambaugh wrote:
> Hi Andreas,
> Per our previous conversation, if you want to write your solver in C++,
> then I would prefer that you do it as part of a solver plugin rather
> than a command event handler in Pcbnew.  I image there would be other
> uses for a solver plugin object such as a thermal mapping solver which
> has been proposed in the past.  The other option would be to use the
> Python action object and write the entire solver in Python rather than
> C++.  That may make your life a bit easier.
> Cheers,
> Wayne
> On 11/29/2017 01:09 PM, Andreas Buhr wrote:
>> Dear Kicad developers,
>> I'm new to Kicad development. Maybe you could give me some starting tips?
>> I am a 5th year PhD student at the university of Münster in Germany,
>> website:
>> I am doing mathematical research targeted at developing solvers for 3D
>> Maxwell's equations in highly complex structures, such as PCBs. While
>> being in an early stage, the goal is to develop a signal integrity
>> solver which does a full-wave simulation of the electromagnetic fields
>> and calculates S-parameters within a very short time.
>> I would love to develop and test my algorithms within KiCad.
>> The input which my solver needs would be an array of polygons,
>> representing the copper-filled areas on each layer.
>> I then want to create a 2D triangle mesh and based on that a 3D prism
>> mesh for finite element analysis.
>> What would you recommend? How to I get polygons, representing the copper
>> filled areas of each layer?
>> I do have some experience developing C++.
>> thanks a lot in advance,
>> best regards,
>> Andreas
>> _______________________________________________
>> Mailing list:
>> Post to     :
>> Unsubscribe :
>> More help   :
> _______________________________________________
> Mailing list:
> Post to     :
> Unsubscribe :
> More help   :

Attachment: signature.asc
Description: OpenPGP digital signature

Mailing list:
Post to     :
Unsubscribe :
More help   :

Reply via email to