X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Mailer: exmh version 2.8.0 04/21/2012 with nmh-1.6 X-Exmh-Isig-CompType: repl X-Exmh-Isig-Folder: inbox From: karl AT aspodata DOT se To: geda-user AT delorie DOT com Subject: Re: [geda-user] Re: Is FreeRotateBuffer implemented in gschem? In-reply-to: References: <201903081710 DOT x28HAAUG016981 AT delorie DOT com> Comments: In-reply-to Roland Lutz message dated "Fri, 08 Mar 2019 19:19:51 +0100." Mime-Version: 1.0 Content-Type: text/plain Message-Id: <20190308191019.787D085E7F7D@turkos.aspodata.se> Date: Fri, 8 Mar 2019 20:10:19 +0100 (CET) X-Virus-Scanned: ClamAV using ClamSMTP 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 Roland Lutz: > On Fri, 8 Mar 2019, (mail AT crcomp DOT net) [via geda-user AT delorie DOT com] wrote: ... > > My goal to rotate a zenier diode by 45?? in gschem seems unobtainable > > at present. ... > def rotate(rev, angle): > for ob in rev.all_objects(): > if isinstance(ob.data(), xorn.storage.Arc): > ob.x, ob.y = (math.cos(angle) * ob.x - math.sin(angle) * ob.y, ... You calc cos() and sin() mult. times, perhaps caching the values would be beneficial, as you do for angle: > angle = float(sys.argv[2]) * math.pi / 180. ... In [1], I snap to gridpoints with (nearest grid point): sub rnd( $ ) { my $dbl = shift; int( $dbl + 0.5 ); } sub snap( $ ) { my $dbl = shift; rnd( $dbl/$grid ) * $grid; } ... $x2 += $pin_length * $cos; $y2 += $pin_length * $sin; $x2 = snap($x2); $y2 = snap($y2); ... It is well tested (for positive koordinates), see e.g. [2]. The only question is what grid size you want to use. Also you might want to keep text, labels and such horizontal or vertical. For complex symbols, it might be better to use a symbol generator that handles thoose details for you. Regards, /Karl Hammar [1] http://aspodata.se/git/openhw/pdftosym/pintosym.pl [2] http://aspodata.se/git/openhw/pdftosym/examples.pintosym/stm32f100lm.circle.LQFP100.sym