Received: from mxout.hosting.domainsatcost.ca (mxout.hosting.domainsatcost.ca
 [54.208.1.230])	by mm2.emwd.com (Postfix) with ESMTPS id 02B5138424F	for
 <discuss@lists.openscad.org>; Wed, 22 Sep 2021 23:58:38 -0400 (EDT)
Received: from mm2.emwd.com (localhost [127.0.0.1])
	by mm2.emwd.com (Postfix) with ESMTP id A6C133842F7
	for <michael@marx.id.au>; Wed, 22 Sep 2021 23:58:59 -0400 (EDT)
Received: from mm2.emwd.com ([172.104.30.75])	by
 cloud.hosting.domainsatcost.ca with esmtps  (TLS1.2) tls
 TLS_DH_anon_WITH_AES_256_GCM_SHA384	(Exim 4.94)	(envelope-from
 <discuss-bounces+michael=marx.id.au@lists.openscad.org>)	id 1mTFsx-0002QD-T1
	for michael@marx.id.au; Thu, 23 Sep 2021 03:58:59 +0000
Received: from ip-10-240-146-21.ec2.internal ([10.240.146.21]
 helo=mxout.hosting.domainsatcost.ca)	by mxout.hosting.domainsatcost.ca with
 esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256)	(Exim 4.92)	(envelope-from
 <michael@marx.id.au>)	id 1mTFsc-00034b-Hi	for discuss@lists.openscad.org;
 Thu, 23 Sep 2021 03:58:38 +0000
Received: from [202.172.127.188] (helo=MeB3)
	by cloud.hosting.domainsatcost.ca with esmtpa (Exim 4.94)
	(envelope-from <michael@marx.id.au>)
	id 1mTFsS-0002OV-D6
	for discuss@lists.openscad.org; Thu, 23 Sep 2021 03:58:29 +0000
Received: from exim by cloud.hosting.domainsatcost.ca with spam-scanned (Exim
 4.94)	(envelope-from <michael@marx.id.au>)	id 1mTFsT-0002Or-7f	for
 discuss@lists.openscad.org; Thu, 23 Sep 2021 03:58:37 +0000
Received: from ip-10-240-149-15.ec2.internal ([10.240.149.15]
 helo=mxout.hosting.domainsatcost.ca)	by mxout.hosting.domainsatcost.ca with
 esmtp (Exim 4.72)	(envelope-from <michael@marx.id.au>)	id 1mTFsc-0008Ek-8M
	for discuss@lists.openscad.org; Thu, 23 Sep 2021 03:58:38 +0000
Received: from exim by cloud.hosting.domainsatcost.ca with spam-scanned (Exim
 4.94)	(envelope-from <discuss-bounces+michael=marx.id.au@lists.openscad.org>)
	id 1mTFsy-0002QP-3K	for michael@marx.id.au; Thu, 23 Sep 2021 03:59:09 +0000
Received: from localhost ([127.0.0.1])
	by cloud.hosting.domainsatcost.ca with esmtp (Exim 4.94)
	(envelope-from <discuss-bounces+michael=marx.id.au@lists.openscad.org>)
	id 1mTFsy-0002QK-2M
	for michael@marx.id.au; Thu, 23 Sep 2021 03:59:00 +0000
Received: from cloud.hosting.domainsatcost.ca ([127.0.0.1])	by localhost
 (hostingsmtp-a.backboneservers.com [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id rQA8lRZmY0G2 for <michael@marx.id.au>;	Thu, 23 Sep 2021
 03:58:59 +0000 (UTC)
Return-Path: <discuss-bounces+michael=marx.id.au@lists.openscad.org>
Reply-To: "OpenSCAD general discussion" <discuss@lists.openscad.org>
From: "Michael Marx" <michael@marx.id.au>
To: "'OpenSCAD general discussion'" <discuss@lists.openscad.org>
References:
 <CAH0WD3ph--5Baf863yBuhJLFm7E3nU63Vw_pxxyR7W6YGCLMFQ@mail.gmail.com>
 <CAEEmnrMf34c8JdnWBEOv=czjhX5NeBx2nmuE1t6mY8svvfAJ5Q@mail.gmail.com>
 <ad45bc72-a8fe-ff3e-b96d-24d9e5e5725c@raywest.com>
 <163226483902.11270.2995658872419245841@mm2.emwd.com>
 <6dc37f88-1840-10db-af4a-7f9809576338@puggsy.net>
In-Reply-To: <6dc37f88-1840-10db-af4a-7f9809576338@puggsy.net>
Subject: [OpenSCAD] Re: text output
Date: Thu, 23 Sep 2021 13:58:16 +1000
Message-ID: <8F50CE5DEEE34B8698D9CB0090663144@MeB3>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_1189_01D7B380.DF7E2150"
X-Mailer: Microsoft Office Outlook 11
X-Antivirus: AVG (VPS 210922-8, 23/09/2021), Outbound message
X-Mailman-Version: 3.3.3
List-Help: <mailto:discuss-request@lists.openscad.org?subject=help>
List-Subscribe: <mailto:discuss-join@lists.openscad.org>
List-Unsubscribe: <mailto:discuss-leave@lists.openscad.org>
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.24158
Thread-Index: AdevPC2u0TbkWmoKRryoDwwoncGfigA4XOcg

This is a multi-part message in MIME format.

------=_NextPart_000_1189_01D7B380.DF7E2150
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_118A_01D7B380.DF7E2150"


------=_NextPart_001_118A_01D7B380.DF7E2150
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

> but if OpenSCAD could read files

 

With some little helper bits (top & tail of a file) you can read any file via include<>.

e.g.

// read_file_main.scad

include <read_file_input.txt>

echo(read_file);

echo("_________________");

include <read_file_vec.txt>

echo(read_file_vec);

echo("_________________");

include <read_file_3vecs.txt>

echo(read_file_3vecs);

 

<read_file_input.txt>

// freeform text needs to be careful with '"' (make them \") and use '\n' for line breaks

// need an assignment first part, followed by data

read_file="

1-no-line-break            

2\n

3\n

"; // then terminate the assignment

 

<read_file_vec.txt>

read_file_vec= [

1,

2,

3,

];

 

<read_file_3vecs.txt>

read_file_3vecs=[

[1,2,3],

[4,5,6],

[7,8,9]

];

 

I haven't bothered yet, but a tiny script could top/tail any file readily.

The freeform text input is a little more work with the '"' & '\n' newlines. 

But in Notepad++ I can replace all '\n\r' with '\\n\n\r' and '"' with '\\"'.

 

 

 

> -----Original Message-----

> From: Daniel [mailto:daniel@puggsy.net]

> Sent: Wed, 22 Sep 2021 08:58

> To: William F. Adams via Discuss

> Subject: [OpenSCAD] Re: text output

> 

> It would be a fierce useful feature. I have a Python script that reads

> .kicad_pcb files to find where the mount holes are. Works fine but if

> OpenSCAD could read files I could possibly get rid of the python script.

> 

> On 21/09/2021 23:53, William F. Adams via Discuss wrote:

> > _______________________________________________

> > OpenSCAD mailing list

> > To unsubscribe send an email to discuss-leave@lists.openscad.org

> _______________________________________________

> OpenSCAD mailing list

> To unsubscribe send an email to discuss-leave@lists.openscad.org


 
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_con
tent=emailclient> 	 Virus-free. www.avg.com
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_con
tent=emailclient>  	


------=_NextPart_001_118A_01D7B380.DF7E2150
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">


<meta name=3DGenerator content=3D"Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Courier New";}
p
	{mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:12.0pt;
	font-family:"Times New Roman";}
@page Section1
	{size:595.3pt 841.9pt;
	margin:72.0pt 0cm 72.0pt 0cm;}
div.Section1
	{page:Section1;}
-->
</style>

</head>

<body lang=3DEN-AU link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; but if OpenSCAD could read =
files<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>With some little helper bits (top &amp; tail of a file) you can =
read any
file via include&lt;&gt;.<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>e.g.<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>// =
read_file_main.scad<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>include =
&lt;read_file_input.txt&gt;<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>echo(read_file);<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>echo(&quot;_________________&quot;);<o:p></o:p=
></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>include =
&lt;read_file_vec.txt&gt;<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>echo(read_file_vec);<o:p></o:p></span></font><=
/p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>echo(&quot;_________________&quot;);<o:p></o:p=
></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>include =
&lt;read_file_3vecs.txt&gt;<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>echo(read_file_3vecs);<o:p></o:p></span></font=
></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&lt;read_file_input.txt&gt;<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>// freeform text needs to be careful with =
'&quot;' (make
them \&quot;) and use '\n' for line breaks<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>// need an assignment first part, followed by =
data<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>read_file=3D&quot;<o:p></o:p></span></font></p=
>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>1-no-line-break&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>2\n<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>3\n<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>&quot;; // then terminate the =
assignment<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&lt;read_file_vec.txt&gt;<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>read_file_vec=3D =
[<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>1,<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>2,<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>3,<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>];<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&lt;read_file_3vecs.txt&gt;<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>read_file_3vecs=3D[<o:p></o:p></span></font></=
p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>[1,2,3],<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>[4,5,6],<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>[7,8,9]<o:p></o:p></span></font></p>

<p class=3DMsoPlainText style=3D'margin-left:36.0pt'><font size=3D2 =
face=3D"Courier New"><span
style=3D'font-size:11.0pt'>];<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>I haven't bothered yet, but a tiny script could top/tail any =
file
readily.<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>The freeform text input is a little more work with the '&quot;' =
&amp;
'\n' newlines. <o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>But in Notepad++ I can replace all '\n\r' with '\\n\n\r' and =
'&quot;'
with '\\&quot;'.<o:p></o:p></span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier =
New"><o:p>&nbsp;</o:p></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font><span lang=3DEN-US>-----Original =
Message-----</span></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font><span lang=3DEN-US>From: Daniel
[mailto:daniel@puggsy.net]</span></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font><span lang=3DEN-US>Sent: Wed, 22 Sep 2021 =
08:58</span></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font><span lang=3DEN-US>To: William F. Adams via =
Discuss</span></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font><span lang=3DEN-US>Subject: [OpenSCAD] Re: =
text output</span></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; It would be a fierce useful feature. I have a Python script =
that
reads</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; .kicad_pcb files to find where the mount holes are. Works =
fine but
if</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; OpenSCAD could read files I could possibly get rid of the =
python
script.</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; </span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; On 21/09/2021 23:53, William F. Adams via Discuss =
wrote:</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; &gt; =
_______________________________________________</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; &gt; OpenSCAD mailing list</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; &gt; To unsubscribe send an email to
discuss-leave@lists.openscad.org</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; =
_______________________________________________</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; OpenSCAD mailing list</span></font></p>

<p class=3DMsoPlainText><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:
11.0pt'>&gt; To unsubscribe send an email to =
discuss-leave@lists.openscad.org</span></font></p>

</div>

<div id=3D"DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br />
<table style=3D"border-top: 1px solid #D3D4DE;">
	<tr>
        <td style=3D"width: 55px; padding-top: 13px;"><a =
href=3D"http://www.avg.com/email-signature?utm_medium=3Demail&utm_source=3D=
link&utm_campaign=3Dsig-email&utm_content=3Demailclient" =
target=3D"_blank"><img =
src=3D"https://ipmcdn.avast.com/images/icons/icon-envelope-tick-green-avg=
-v1.png" alt=3D""  width=3D"46" height=3D"29" style=3D"width: 46px; =
height: 29px;" /></a></td>
		<td style=3D"width: 470px; padding-top: 12px; color: #41424e; =
font-size: 13px; font-family: Arial, Helvetica, sans-serif; line-height: =
18px;">Virus-free. <a =
href=3D"http://www.avg.com/email-signature?utm_medium=3Demail&utm_source=3D=
link&utm_campaign=3Dsig-email&utm_content=3Demailclient" =
target=3D"_blank" style=3D"color: #4453ea;">www.avg.com</a>
		</td>
	</tr>
</table><a href=3D"#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width=3D"1" =
height=3D"1"> </a></div></body>

</html>

------=_NextPart_001_118A_01D7B380.DF7E2150--

------=_NextPart_000_1189_01D7B380.DF7E2150
Content-Type: text/plain;
	name="ATT03535.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="ATT03535.txt"

_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

------=_NextPart_000_1189_01D7B380.DF7E2150--
