X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=NdmkSvo1R/n+J+y23tyJfLgUIjjMD9mqHtIR2wg8azk=; b=JGZCMKIQJh5l9baonbeOtG4M8bhQRWNiZm/VMVSQwaPJZ6Ffvxg1uroBCr8iursCxE dPXXxOUIFt/rWUsrg/fnUnSdjUzIon4BlKgIfVthN4eCEe+HH6Qyrj5IuYuj4BtBKJoZ XP/1bNja7TkY9KAxOMpMmXPDcaVfQO1gjn7ZluBfIUcQYsmzILOvsDLI7fY0yiQtpHwA 8CsexTHtxi5d3YObvo232v4iH5e9ARA1hYqvsdfIE63A4GuEpItPsF+7r0mPfWP38z6U RpUa+kj84pK8qiM9e/FyBv9C9a4CWIE7jTEPqU0TZaalZwj0UwOyOiWAElT4CSqfSO1d OnWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=NdmkSvo1R/n+J+y23tyJfLgUIjjMD9mqHtIR2wg8azk=; b=dJCE5xUDPYatUeqNQdMo8pZhtONYHJW0Bqj9qaIf5YtG5OJgRuxgQK2yDkHVZYRn51 TDeKrze78VIrNowQlK/O6u4A4iP9HigtEPsSOtdpei/LnWUVcr+xCXmgCOF37PZyWIvB UZgaitoddiXap7DAYI72x0Iy40XZrFyvnbfmc+q3BDn9OAKisfmZ5ajk49/YwfdOahiX E24xXXpnDMQJtMkw33Rpwk0mrMUHXyT9gYw8RcPllTsA4JBcKq1xJRZQYBClspYLQRIN bkXGlPEZQpwyKQNShbk6K2Gp6MQ+p7JkQSH0dB4xrIeuXodT6XRxsw79W05MEylZ9SXG 2Gcw== X-Gm-Message-State: AG10YOQxQiqQw1YIQa2810ttxDnhMzwJPInbReYvsYpWxxdDBP6Ffvmf7OYJAamYH46yYobvna+9wnyWzAlPWg== MIME-Version: 1.0 X-Received: by 10.107.25.145 with SMTP id 139mr113662ioz.89.1453931827957; Wed, 27 Jan 2016 13:57:07 -0800 (PST) In-Reply-To: <53ABCB1C-0306-4DF8-98A9-88F8CC6B8E80@noqsi.com> References: <56A751EC DOT 8030402 AT iae DOT nl> <20160126124701 DOT 0d061912c7e078ced9d4e6cb AT gmail DOT com> <201601261804 DOT u0QI4KEQ009550 AT envy DOT delorie DOT com> <20160126233332 DOT dec2f06f5c74354a3841989c AT gmail DOT com> <20160127091746 DOT 1c7a976c2752f913921688ac AT gmail DOT com> <20160127141334 DOT c738feb9dbeb54a7dec3dff8 AT gmail DOT com> <56A8F74B DOT 8080304 AT ecosensory DOT com> <53ABCB1C-0306-4DF8-98A9-88F8CC6B8E80 AT noqsi DOT com> Date: Wed, 27 Jan 2016 16:57:07 -0500 Message-ID: Subject: Re: [geda-user] The nature of gEDA layers From: "Chad Parker (parker DOT charles AT gmail DOT com) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Content-Type: multipart/alternative; boundary=001a113fd3e222387a052a57e2e8 Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --001a113fd3e222387a052a57e2e8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > > > I would suggest that a layer is really more of a container than anything > else, it is a way of collecting and grouping objects. > > > I would not call that a layer at all. A layer represents a hunk of copper= , > epoxy glass, ink, etc. What you=E2=80=99re talking about should be called= a > =E2=80=9Cpattern=E2=80=9D, I think: it edits the arrangement of material = on one or more > layers. > > The term "layer" is a well established term for referring to groups of objects with a common "z-order". A pattern, as you describe it, is also a collection of objects with out the restriction of those objects having a common z-order. Both are collections of objects. I realize I neglected to include "common z-order" in my original statement, apologies. Thank you for helping me to be more precise with my language. Layers do not always have physical analogs. When I'm designing boards, using those fancy expensive commercial packages, I will always include what I call an assembly layer that contains instructions for the technician that assembles the board. That layer doesn't end up being physically realized at all. A layer only represents something with physical significance after it has been assigned that significance. I suggest that at the base level, the software be ignorant of that significance. This allows a layer to signify whatever you want it to. Then the layers are given significance when interpreted, by DRC, a fab, or whatever. If you turn off all DRC you should be able to draw anything on any layer, regardless of whether or not it can be physically realized. What will pass DRC is a function of the fabrication technology and is subject to change as technology changes. > Ultimately the group of objects is interpreted in a particular way when a > board is fabricated, perhaps as copper, perhaps as a board outline, perha= ps > as a silkscreen... or perhaps as something else entirely. Anyway, the poi= nt > is that the concept of a layer is really a more general abstraction and t= he > physicality of them is an interpretation. > > Nicklas's statement is true: "Every object drawn end up on a layer as one or more drawing primitives.", but he is referring to an object as an individual drawing primitive, not a collection of drawing primitives. A "pattern" may end up placing many primitive objects on many different layers, but all of those primitive objects end up on layers. As to whether or not it makes sense to associate a pattern with a layer, that is an interesting question, and I believe I could make a good argument for an implementation of patterns in which such association would make sense. If your pattern is defined not with absolute layer definitions, but with relative layer definitions, then assigning the base layer of a pattern to a particular board layer could make sense. Each layer of the pattern is assigned to a board layer according to the assignment of the base layer. As an example, consider a pattern with 3 layers, -1, 0, and 1. Assigning such a patter to layer 5 of a board would map the three pattern layers to layers 4, 5, and 6 of the board, or layers 6, 5, and 4 if the pattern is mirrored. Such an implementation could offer a great deal of flexibility. Yes, it is not a complete theory and so has problems, but I think they are problems that could be solved elegantly by refining the idea of how a pattern specifies the layers on which its primitives (or sub patterns) are assigned= . --Chad --001a113fd3e222387a052a57e2e8 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

I would suggest that a layer is really more of a conta= iner than anything else, it is a way of collecting and grouping objects.

I would not c= all that a layer at all. A layer represents a hunk of copper, epoxy glass, = ink, etc. What you=E2=80=99re talking about should be called a =E2=80=9Cpat= tern=E2=80=9D, I think: it edits the arrangement of material on one or more= layers.


The t= erm "layer" is a well established term for referring to groups of= =20 objects with a common "z-order". A pattern, as you describe it, i= s also a collection of=20 objects with out the restriction of those objects having a common z-order. = Both are collections of objects. I realize I neglected to include "com= mon z-order" in my original statement, apologies. Thank you for helpin= g me to be more precise with my language.

Layers do not always have = physical analogs. When I'm designing boards, using those fancy expensiv= e commercial=20 packages, I will always include what I call an assembly layer that=20 contains instructions for the technician that assembles the board. That lay= er doesn't end up being physically realized at all. A layer only repres= ents something with physical significance after it has been assigned that s= ignificance.

I suggest that at the base level, the software be igno= rant of that significance. This allows a layer to signify whatever you want= it to. Then the layers are given significance when interpreted, by DRC, a = fab, or whatever. If you turn off all DRC you should be able to draw anyth= ing on any layer, regardless of whether or not it can be physically realize= d. What will pass DRC is a function of the fabrication technology and is su= bject to change as technology changes.
Ultimately the group of objects is interpreted in a particular way when a board is fabricated, perhaps as copper, perhaps as a board outline,=20 perhaps as a silkscreen... or perhaps as something else entirely.=20 Anyway, the point is that the concept of a layer is really a more=20 general abstraction and the physicality of them is an interpretation.

<= /div>
Nicklas's statement is true: "Every object drawn end up = on a layer as one or more drawing primitives.", but he is referring to= an object as an individual drawing primitive, not a collection of drawing = primitives. A "pattern" may end up placing many primitive objects= on many different layers, but all of those primitive objects end up on lay= ers.

As to whether or not it makes sense to associate a pattern wit= h a layer, that is an interesting question, and I believe I could make a go= od argument for an implementation of patterns in which such association wo= uld make sense. If your pattern is defined not with absolute layer definiti= ons, but with relative layer definitions, then assigning the base layer of = a pattern to a particular board layer could make sense. Each layer of the p= attern is assigned to a board layer according to the assignment of the base= layer. As an example, consider a pattern with 3 layers, -1, 0, and 1. Assi= gning such a patter to layer 5 of a board would map the three pattern layer= s to layers 4, 5, and 6 of the board, or layers 6, 5, and 4 if the pattern = is mirrored. Such an implementation could offer a great deal of flexibility= . Yes, it is not a complete theory and so has problems, but I think they ar= e problems that could be solved elegantly by refining the idea of how a pat= tern specifies the layers on which its primitives (or sub patterns) are ass= igned.

--Chad

--001a113fd3e222387a052a57e2e8--