[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: Remove refdes number on copy



On Fri, 2008-02-08 at 14:13 +0000, Kai-Martin Knaak wrote:
> In gschem I frequently copy some already placed symbols to add features 
> to some existing schematics. If I use the usual y-c / y-p sequence the 
> copy will receive the same refdes as the original. This is almost always 
> wrong. So I change the refdes manually to something like R? and do a 
> renumber when I am ready to migrate the changes to pcb.
> This is kind of error-prone. I tend to forget the manual step and end up 
> with multiple symbols with the same refdes. This just bit me again...
> 
> Is there a way to automagically remove refdes numbers on copy/paste? 
> Maybe some kind of renumber hook in my local gschemrc?

Yes, this is exactly the sort of thing hooks should be good for (and in
this case, it will work, since we just edit the attribute, not delete
any of the objects being copied).

See attached.

I hooked this up adding the following lines in ~/.gEDA/gschemrc:

(load-from-path "/home/pcjc2/.gEDA/unnumber-refdes.scm")
(add-hook! copy-component-hook unnumber-refdes)

Obviously adjust the path to wherever you put unnumber-refdes.scm

Best wishes,

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)
;; Copyright (C) 2008 Peter Clifton
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, write to the Free Software
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA

(use-modules (srfi srfi-13) (srfi srfi-14))


(define (unnumber-refdes attribs)

  ;; Function to strip digit suffixes
  (define (strip-digit-suffix string)
    (string-trim-right string char-set:digit)
  )

  (define (unnumbered-refdes oldrefdes)
    (if (string-suffix? "?" oldrefdes)
      oldrefdes
      (string-append (strip-digit-suffix oldrefdes) "?")
    )
  )

  (for-each
    (lambda (attrib)
      (let* ((name-value (get-attribute-name-value attrib))
             (name (car name-value))
             (value (cdr name-value)))
        (if (string=? name "refdes")
          (set-attribute-value! attrib (unnumbered-refdes value)))
      )
    )
    attribs
  )
)

_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user