MetaData - type...

105 views
Skip to first unread message

Daid

unread,
Apr 8, 2013, 11:42:45 AM4/8/13
to st...@googlegroups.com
The AMF standard states about the "type" attribute in the <MetaData> tag, the following:

Values must be one of the following: "name", "description", "url", "author", "company", "producer", "revision", "tolerance", "volume", "elasticmodulus", "poissonratio" or "colorprofile".
(emphasis mine)

So there is no room for custom/vendor specific meta data? Also, the examples show an impossible value, both on wikipedia and the standard itself show type="cad" as option.
The standard in section 11 says "Annex A1 lists reserved metadata types and their meaning." so maybe the "must" in the Annex is wrong and should say, "The following values are reserved for..."

Hod Lipson

unread,
Apr 8, 2013, 12:47:35 PM4/8/13
to st...@googlegroups.com

We are struggling with how to define the metadata. If we allow custom tags, then files will not be interoperable.

Perhaps its best if we keep th e”must be one of the following” but then add new terms as needed.

 

We replaced “cad” with “producer” because often the file is generated by things other than CAD, e.g. by scanning software.

 

Lets us know what categories are missing, and if we should also reinstate “cad”

 

--hod

 

 

Hod Lipson

Associate Prof. of Mechanical & Aerospace Engineering and Computing & Information Science

Cornell University, 242 Upson Hall, Ithaca NY 14853, USA

Office: (607) 255 1686 Lab: (607) 254 8940 Fax: (607) 255 1222

Email: Hod.L...@cornell.edu

Web: http://www.mae.cornell.edu/lipson

Administrative Assistant:  Craig Ryan  cd...@cornell.edu

Calendar: http://www.mae.cornell.edu/lipson/calendar.htm

--
You received this message because you are subscribed to the Google Groups "STL 2.0" group.
To unsubscribe from this group and stop receiving emails from it, send an email to stl2+uns...@googlegroups.com.
To post to this group, send email to st...@googlegroups.com.
Visit this group at http://groups.google.com/group/stl2?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Martin Wicke

unread,
Apr 8, 2013, 1:26:10 PM4/8/13
to st...@googlegroups.com
I hadn't seen this change, I guess I'm still looking at an older version
of the standard. Hod, would you mind sending me the up-to-date version
under discussion?

I feel pretty strongly that the metadata field should not be restricted.
If you want to encode very specific things (and make sure only those are
found in the designated place), then they can have their own tag. For
instance, producer could look like this:

<amf>
<producer>mememe</producer
...
</amf>

Instead of

<amf>
<metadata type="producer">mememe<metadata>
...
</amf>

If I can only use a discrete set of metadata types, then they could just
all be tags and there would be no ambiguity. In my opinion, the metadata
tag only makes sense if the type is open to whatever you want to put in
there. It will be impossible to anticipate quickly enough all the
possible pieces of data that users will want to store in metadata
(physical parameters alone are too many to enumerate, and honestly, we
probably lack the knowledge to do that in a sensible manner).

Arguably, you could of course just add your own tag for things that are
not part of the allowed metadata types. But that does nothing to further
interoperability. On the contrary. Now I have unknown tags with unknown
content, instead of metadata tags with unknown type and string content.

Always the pessimist, I predict that these things will happen if you
restrict the metadata types:
- People will ignore the restrictions
- People will abuse 'legal' metadata types for unrelated data ("I want
to store the depth resolution of the scanner in the AMF, but there isn't
an appropriate field, but look, 'tolerance'... it's close enough!"
- People will abuse a metadata types to just dump data into ("I want to
store 15 other material parameters, I'll just dump a base64 encoded
string into the description metadata")
- People will adhere to the standard, and simply add another tag
<mymetadata> which will have unknown structure and only their
proprietary reader will be able to interpret.

All these things are not pretty, but ignoring the restrictions is
arguably the least harmful. I believe that a semi-structured container
(list of strings with arbitrary semantics, like metadata) is essential
for a complex format like AMF, and taking away easy (and by easy, I mean
very easy) extensibility, without going through the standard process,
would be a bad mistake.

Martin

Hod Lipson wrote:
> We are struggling with how to define the metadata. If we allow custom
> tags, then files will not be interoperable.
>
> Perhaps its best if we keep th e�must be one of the following� but then
> add new terms as needed.
>
> We replaced �cad� with �producer� because often the file is generated by
> things other than CAD, e.g. by scanning software.
>
> Lets us know what categories are missing, and if we should also
> reinstate �cad�
>
> --hod
>
> _Hod Lipson_
>
> Associate Prof. of Mechanical & Aerospace Engineering and Computing &
> Information Science
>
> Cornell University, 242 Upson Hall, Ithaca NY 14853, USA
>
> Office: (607) 255 1686 Lab: (607) 254 8940 Fax: (607) 255 1222
>
> Email: Hod.L...@cornell.edu <mailto:Hod.L...@cornell.edu>
>
> Web: http://www.mae.cornell.edu/lipson
>
> *Administrative Assistant:*Craig Ryan cd...@cornell.edu
> <mailto:cd...@cornell.edu>
>
> *Calendar*: http://www.mae.cornell.edu/lipson/calendar.htm
>
> *From:*st...@googlegroups.com [mailto:st...@googlegroups.com] *On Behalf
> Of *Daid
> *Sent:* Monday, April 08, 2013 11:43 AM
> *To:* st...@googlegroups.com
> *Subject:* MetaData - type...
>
> The AMF standard states about the "type" attribute in the <MetaData>
> tag, the following:
>
> Values *must* be one of the following: "name", "description", "url",
> "author", "company", "producer", "revision", "tolerance", "volume",
> "elasticmodulus", "poissonratio" or "colorprofile".
>
> (emphasis mine)
>
> So there is no room for custom/vendor specific meta data? Also, the
> examples show an impossible value, both on wikipedia and the standard
> itself show type="cad" as option.
>
> The standard in section 11 says "Annex A1 lists reserved metadata types
> and their meaning." so maybe the "must" in the Annex is wrong and should
> say, "The following values are reserved for..."
>
> --
> You received this message because you are subscribed to the Google
> Groups "STL 2.0" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to stl2+uns...@googlegroups.com
> <mailto:stl2+uns...@googlegroups.com>.
> To post to this group, send email to st...@googlegroups.com
> <mailto:st...@googlegroups.com>.

Hod Lipson

unread,
Apr 8, 2013, 1:46:30 PM4/8/13
to st...@googlegroups.com
We can also add "custom" where you put whatever you want.
True, we can't predict everything, but we can predict that some things will be important as metadata, and at least try to have those covered.
Not sure what other solution we have...
--hod
> Perhaps its best if we keep th e"must be one of the following" but
> then add new terms as needed.
>
> We replaced "cad" with "producer" because often the file is generated
> by things other than CAD, e.g. by scanning software.
>
> Lets us know what categories are missing, and if we should also
> reinstate "cad"

Martin Wicke

unread,
Apr 8, 2013, 1:51:37 PM4/8/13
to st...@googlegroups.com
I agree, and I think there should be a list of encouraged types to use,
like what you have. The only change I would make is to not disallow
other types.

Type custom is a compromise, but it makes metadata a little less useful
by taking away type/value pairs and replacing them with just a list of
string values. So now I effectively have to store the type inside the
data myself (for instance, by storing "permeability=.5"). I am not sure
what would be gained by that over just letting people use their own types.

Jacob Barhak

unread,
Apr 8, 2013, 4:30:08 PM4/8/13
to st...@googlegroups.com
Hi Hod,
 
Allowing the user freedom to specify whatever data they want in a specialized place may open opportunities for the future.
 
Whatever name you choose, users should be aware that this is also an experimental sandbox. If a user comes up with something very useful they can share it with everybody. In the future the standard can adopt the best ideas.
 
Flexibility here can promote innovation.
 
                 Jacob
 
 

Jesse McGatha

unread,
Apr 8, 2013, 4:45:37 PM4/8/13
to st...@googlegroups.com
For schematization purposes, it would be ideal if there was one element, e.g. "<metadata>" for officially supported metadata and another, e.g. "<customdata>" for free selection of content. You also need rules stating when an editing producer MUST discard or preserve all customdata. Note that a unknowledgeable editor (one that does not recognize the name of the customdata) that changes an element node in the XML MUST delete all custom metadata in the edited element node and below, since it may no longer make any sense to the knowledgeable consumer and the file may now be in an inconsistent state. Further, if customdata is allowed, it should be prefixed with a namespace defined by the target consumer of the file. E.g.
 
<cutomdata name="my3dprinter:layerheight" value="0.05" />
 
Where "my3dprinter" is an xmlns declaration on the <amf> root element of the file. This will prevent accidental collisions in mixed producer/consumer workflows. But the use of XML namespaces I still assert would be a valuable addition to the spec as the explicit versioning strategy for markup.
 
-Jesse

Daid

unread,
Apr 8, 2013, 5:54:09 PM4/8/13
to st...@googlegroups.com
Perhaps make it "one of the following, or starting with 'custom:[software_package_name]:[typename]'

I see the possibility to use AMF as "main" storage format for Cura, but for that I need a place to store some extra data, for example, per object slicer settings (which won't cross over to other software very well, but can still be ignored fine without losing important model data)

Hod Lipson

unread,
Apr 9, 2013, 3:03:25 PM4/9/13
to st...@googlegroups.com

while we sort this out, I think that for this revision we should leave the <metadata> as is, with requirement that the type “must” be one of the reserved words.

Then we can discuss more options and we should talk about namespaces in general.

 

--hod

 

 

Hod Lipson

Associate Prof. of Mechanical & Aerospace Engineering and Computing & Information Science

Cornell University, 242 Upson Hall, Ithaca NY 14853, USA

Office: (607) 255 1686 Lab: (607) 254 8940 Fax: (607) 255 1222

Email: Hod.L...@cornell.edu

Administrative Assistant:  Craig Ryan  cd...@cornell.edu

Calendar: http://www.mae.cornell.edu/lipson/calendar.htm

 

Rene K. Mueller

unread,
Apr 9, 2013, 3:07:19 PM4/9/13
to st...@googlegroups.com


On Monday, April 8, 2013 6:47:35 PM UTC+2, Hod Lipson wrote:

We are struggling with how to define the metadata. If we allow custom tags, then files will not be interoperable.

Perhaps its best if we keep th e”must be one of the following” but then add new terms as needed.

Metadata should kept flexible, with a few clear definition, e.g.  "name", "description", "url", "author", "company", "producer", "revision", those and a few others I can throw in should be described in details (e.g. "tolerance", "volume", "elasticmodulus", "poissonratio" or "colorprofile") what they mean (with plenty examples of the non obvious ones); but there should *no* "must be one of the following" - this runs against the openness, runs against the entire idea of metadata: I do want to store there relevant data from OpenJSCAD, e.g. history, how this AMF came from (e.g. *date* of original .jscad file, *date* of creation of the AMF itself, version of the original .jscad file, license, and on and on; and when I think of carrying over metadata from ThingTracker, see http://thingtracker.net, yes, I like to have the option to put this into the AMF as well and extracted on-demand, also when .jscad is detached. Why lock down metadata?


Rene K. Mueller

unread,
Apr 9, 2013, 3:11:41 PM4/9/13
to st...@googlegroups.com


On Monday, April 8, 2013 11:54:09 PM UTC+2, Daid wrote:
Perhaps make it "one of the following, or starting with 'custom:[software_package_name]:[typename]'

I see the possibility to use AMF as "main" storage format for Cura, but for that I need a place to store some extra data, for example, per object slicer settings (which won't cross over to other software very well, but can still be ignored fine without losing important model data)


As I just posted, the same for me coming from the modeler level with OpenJSCAD.org - and I gladly would provide data for slicers (e.g. minimal layer or other recommendation of the author / modeler carrying over to the slicer), e.g. Cura writes "if you provide us with these metadata fields, it helps us to slice and print" and modelers can then fill those fields, and don't have to come back *here* to get approval to allow those fields. 

Jacob Barhak

unread,
Apr 9, 2013, 4:39:28 PM4/9/13
to st...@googlegroups.com
Hi All,

Rene mentioned slice info. Does AMF support describing an object by its slices rather than by geometry? I did not see this in Wikipedia. 
Is this something you are considering in future versions?

This is not useful in todays scenario. Yet think about a simple 3D printer with little memory that just connects to the cloud and one or more machines in the cloud control it and just stream the slice data to be printed. All print processing happens in the cloud as a service to the customer that bought or rented the printer. This simplifies the printer and its software maintenance at the price of I/O. I think I raised this idea in the past.

Such simplification can be advantageous. 

        Jacob


Sent from my iPhone
--

Hod Lipson

unread,
Apr 9, 2013, 4:50:13 PM4/9/13
to st...@googlegroups.com

 

We tried to have the AMF only describe properties of the final object, not properties of the steps to make it.

So we avoid printer-specific information such as a list of slices and tool paths.

 

All 3D printers today read a temporary intermediate file that is generated from the STL/AMF. So there could be some cloud service that would generate those files on the fly for a specific printer, if necessary.

 

--hod

Jesse McGatha

unread,
Apr 9, 2013, 5:18:07 PM4/9/13
to st...@googlegroups.com
I do believe slices can be useful, *provided* that the slices are sufficiently abstract--that is, they must not be toolpaths but rather SVG-like geometry definitions. They are useful when:
 
1) The 3D model you're describing is intended to mimic subtractive processes like laser cut layers of plywood, etc.
 
2) The producer wants to provide very specific outlines for each layer of the model.
 
-Jesse

Jesse McGatha

unread,
Apr 9, 2013, 5:23:15 PM4/9/13
to st...@googlegroups.com

On Tuesday, April 9, 2013 12:07:19 PM UTC-7, Rene K. Mueller wrote:
Metadata should kept flexible, with a few clear definition, e.g.  "name", "description", "url", "author", "company", "producer", "revision", those and a few others I can throw in should be described in details (e.g. "tolerance", "volume", "elasticmodulus", "poissonratio" or "colorprofile") what they mean (with plenty examples of the non obvious ones); but there should *no* "must be one of the following" - this runs against the openness, runs against the entire idea of metadata: I do want to store there relevant data from OpenJSCAD, e.g. history, how this AMF came from (e.g. *date* of original .jscad file, *date* of creation of the AMF itself, version of the original .jscad file, license, and on and on; and when I think of carrying over metadata from ThingTracker, see http://thingtracker.net, yes, I like to have the option to put this into the AMF as well and extracted on-demand, also when .jscad is detached. Why lock down metadata?
 
Metadata must be locked down to prevent 2 scenarios:
 
1) Some popular software starts emitting metadata with a name that is later included in the spec with requirements for its value. A strictly-compliant consumer would have to reject potentially tens of thousands of documents generated prior to the introduction of the custom keyword from this one producer. 
 
2) Two different pieces of software try to read/write the same custom metadata field with the same name. These were developed independently, but the names now collide, with different semantics of the values. Who wins? This is very messy and should be avoided through proper scoping of the name to an individual producer or target consumer. The best way to do this is an XML namespace-prefixed QName for the name value.
 
-Jesse

Rene K. Mueller

unread,
Apr 9, 2013, 5:25:30 PM4/9/13
to st...@googlegroups.com


On Tuesday, April 9, 2013 10:39:28 PM UTC+2, Jacob Barhak wrote:
Hi All,

Rene mentioned slice info. Does AMF support describing an object by its slices rather than by geometry? I did not see this in Wikipedia. 
Is this something you are considering in future versions?

Just to avoid misunderstanding, my example was still about metadata, to carry over data which does not fit in the AMF geometry, but indeed is metadata; I could easily imagine that on the modeling level and Cura which does the slicing and printing, that some hints and data from modeling state want to be carried over.  

Martin Wicke

unread,
Apr 9, 2013, 5:26:00 PM4/9/13
to st...@googlegroups.com
That's fine as long as there is a legal and well-regulated way for people to write custom information into their files without going through the standards body. 

Otherwise, it'll be custom tags with exactly the same problems. 

Martin 
--

Rene K. Mueller

unread,
Apr 9, 2013, 5:36:41 PM4/9/13
to st...@googlegroups.com


On Tuesday, April 9, 2013 11:23:15 PM UTC+2, Jesse McGatha wrote:

On Tuesday, April 9, 2013 12:07:19 PM UTC-7, Rene K. Mueller wrote:
Metadata should kept flexible, with a few clear definition, e.g.  "name", "description", "url", "author", "company", "producer", "revision", those and a few others I can throw in should be described in details (e.g. "tolerance", "volume", "elasticmodulus", "poissonratio" or "colorprofile") what they mean (with plenty examples of the non obvious ones); but there should *no* "must be one of the following" - this runs against the openness, runs against the entire idea of metadata: I do want to store there relevant data from OpenJSCAD, e.g. history, how this AMF came from (e.g. *date* of original .jscad file, *date* of creation of the AMF itself, version of the original .jscad file, license, and on and on; and when I think of carrying over metadata from ThingTracker, see http://thingtracker.net, yes, I like to have the option to put this into the AMF as well and extracted on-demand, also when .jscad is detached. Why lock down metadata?
 
Metadata must be locked down to prevent 2 scenarios:
 
1) Some popular software starts emitting metadata with a name that is later included in the spec with requirements for its value. A strictly-compliant consumer would have to reject potentially tens of thousands of documents generated prior to the introduction of the custom keyword from this one producer. 

We can avoid this by saying any type not in the specs begins with "x-" or "x" indicated it's extended, like
<metadata xtype="mychoice">my data</metadata>

then it would be clear, this is extended and will not overlap with later improvements and clear defined other "types", would that satisfy you?
 
2) Two different pieces of software try to read/write the same custom metadata field with the same name. These were developed independently, but the names now collide, with different semantics of the values. Who wins? This is very messy and should be avoided through proper scoping of the name to an individual producer or target consumer. The best way to do this is an XML namespace-prefixed QName for the name value.

Hmmm, I think when we differentiate between official approved metadata fields, and extended ones, one has to accept that the extended ones are more software specific as my input and Daid's ideas indicate. There is clear a demand to have some fields clearly defined (your point), and some which are not to store data beyond the scope of AMF but relevant in the entire processing chain and this can be and very likely is software tool chain specific.


Hod Lipson

unread,
Apr 9, 2013, 5:59:36 PM4/9/13
to st...@googlegroups.com

I think the idea of “xtype=mytype” is great – it solves problem 1.

Add an “xowner=myorgname” (where myorgname is the url of the owner of the extended type, e.g. “microsoft.com”) and we can solve both issues 1 and 2.

 

As for namespaces, do we need to do anything specific for an amf namespace?

We can just add at the root xmlns:amf=“www.astm.org/Standards/F2915.htm

I will add this to the current revision.

 

--hod

 

From: st...@googlegroups.com [mailto:st...@googlegroups.com] On Behalf Of Rene K. Mueller
Sent: Tuesday, April 09, 2013 5:37 PM
To: st...@googlegroups.com
Subject: Re: MetaData - type...

 

--

Jesse McGatha

unread,
Apr 9, 2013, 6:17:30 PM4/9/13
to st...@googlegroups.com
I think what you want to do is declare all existing elements and attributes as belonging to the AMF namespace. To that end, you should just add something like the following to the root element:
 
<amf xmlns="http://schemas.astm.org/standards/F2915/2013/01" units="millimeter">
...
</amf>
 
This means that every element and attribute in the document is drawn from the provided namespace URI (NOT a URL... it doesn't have to resolve to a website location, although it can) that you define. Note that you DO want to encapsulate the version of the spec in the namespace, so that you can later do something like this to allow old-version consumers to ignore new-version elements:
 
<v2:newamfelement>...</v2:newamfelement>
</amf>
 
This actually allows full intermixing of "foreign" elements from producer/consumer-specific elements *if* you desire, but at minimum, you could do something like this to define metadata from another namespace:
 
    <metadata name="my3d:somemetadata">whatever makes sense for my 3d printer</metadata>
</amf>
 
This is WAY more schematizable than the "xtype" and "xowner" attributes.
 
-Jesse

Hod Lipson

unread,
Apr 9, 2013, 6:18:04 PM4/9/13
to st...@googlegroups.com

If the slices are not to serve as direct toolpath instructions, but are an abstract way to describe the geometry, then they would be appropriate for the AMF.

However, in that case they would have to go under something different than <mesh>

 

Right now we only have <mesh>. But we could also have “<slices>”, “<voxels>” and “<frep>” which are all different ways to describe geometry.

They would need their own definitions.

 

In my opinion we should wait for good AMF adoption with mesh (the most similar to STL) before we introduce other formats.

However, if people want it we can do it.

 

Would anyone be interested in leading a <slices> element, i.e. proposing definitions, writing open-source reference code, and providing sample objects?

 

(Same question for <voxel> and <frep>)

 

--hod

 

From: st...@googlegroups.com [mailto:st...@googlegroups.com] On Behalf Of Jesse McGatha


Sent: Tuesday, April 09, 2013 5:18 PM
To: st...@googlegroups.com

Jacob Barhak

unread,
Apr 10, 2013, 1:56:57 AM4/10/13
to st...@googlegroups.com
Thanks Hod,

This makes sense. Yet I will stretch the envelope a bit further with the risk of reiterating and boring the group. 

Consider such a cloud solution as a viable direction for a few years from now - 5 years for arguments sake. 

If AMF is not useful for such a solution, such a solution may skip AMF altogether by translating the CAD file directly into slices in the cloud. Therefore, if widely adopted, such a cloud solution will corner AMF to standalone printers. You may wish to avoid the standard being cornered so quickly as 5 years. You may want to design for at least 10 - if you can see so far. 

If AMF has the ability to incorporate new information such as slice or control data in an optional section then AMF will be still evolve to be a viable solution for such cloud designs and maybe for other designs we cannot imagine now. 

So I believe some flexibility is important as long as it does not interfere with existing constraints. I agree with others in the group who raised this already. 

If people will think of possible directions 3D printing will go, it may give ideas as to what meta data is important to keep the standard alive for a longer time.

For example, do some materials need special instructions for printing? cooling/heating/direction/wait time/conductivity/restrictions? Should this go in meta data?

As for more obvious meta data that was partially mentioned in the discussion. I am a great supporter of versioning, so version information should be part of the data, as well as manipulators of the data, perhaps the entire chain of users, programs, and machines should be recorded. This is important for reproducibility and therefore improve credibility and conformance to legal environment. This may be important in medical environment and therefore desirable meta data. 

I noticed copyright is already given as an example of meta data, yet license information seems to be also useful and not mentioned. 

Also signatures may be very important meta data and perhaps a checksum or other security information. And perhaps conformance information and other validation information should be mentioned in meta data. For example, this part conforms with standard X from organization Y.

These are all ideas for meta data that I can see useful and may be needed in some environments in the present and in the future. 

And even though the current AMF only describes the object, you should not be strict about this and allow the user to define other meta data. Some of the good ideas can be adopted to keep the standard alive. 

Meta data should be used as a sandbox for future standard evolution.  

I hope people can improve this meta data list by suggesting possible 3D printing evolution paths. 

        Jacob


Sent from my iPhone

Jacob Barhak

unread,
Apr 10, 2013, 2:49:18 AM4/10/13
to st...@googlegroups.com
Hi Hod,

If you do not mind, and unless there is someone else who wants this role, I would be glad to volunteer to define the <Future> element that will allow users to experiment with new standard by defining their own elements in a sandbox. The committee can then decide what future sub elements to include in the next version. 

Perhaps you may want a <Deprecated>   Clause that will mark ideas to be removed in future versions? Yet this is two steps ahead. 

I am thinking of a mechanism similar to how changes are introduced to a programming language where people contribute ideas. 

This may allow standard evolution by user demand and contribution. It will also allow splits in evolution in the openness spirit. This way the good ideas will remain in a given time frame and environment. 

Yet since this is not geometry related, I may be out of line here. If someone from the committee vetoes these ideas I will abandon this and withdraw this offer. 

Does anyone second these ideas? Does anyone want to collaborate on these? 

I hope this is within the scope of your call. 

       Jacob

Sent from my iPhone

Hod Lipson

unread,
Apr 10, 2013, 9:49:53 AM4/10/13
to st...@googlegroups.com

I am in favor of AMF supporting alternative geometric representations: voxels, slices, and function-representations.

 

However, what you are describing below sounds like printer-specific slice-by slice process parameters and that is not in the scope of AMF because it may not work on a different printer with different slice thickness.

 

Can you be more specific about what properties you would like to specify? Maybe we can find a way to embed those as abstract volume properties, so they can be used by any printer regardless of slices thickness.

 

--hod

 

From: Alejandro Sklar [mailto:alejand...@gmail.com]
Sent: Wednesday, April 10, 2013 3:34 AM
To: st...@googlegroups.com
Subject: Re: Does AMF support slice data?

 

I think exploring with new elements, especially different geometrical representations, has a lot of potential. In the case of slices, their structure basically mimics the sequential print path. Thus embedding information about the printing process within this type of representation would be simpler than embedding information within a mesh representation.

 

This could be useful when developing custom code for controlling other parameters and functions of the printing process. For instance, if someone wants to be able to choose different print settings for different portions of the printed piece, they could merely add custom tags around the single block of sequential code that defines the geometry of that region. It seems to me that attempting to do this with a surface mesh representation would require some messy transformations, or the excessive repetition of parameters. 

 

I too feel it's important to address a procedure for possible additions to the standard because I personally feel there might be more properties of the final object that should be explored, beyond geometry and material. These could provide developers that use AMF simple ways of embedding other printing information to make full use of the additive manufacturing process. 

 

- Alejandro

--
CTO & Co-founder

PieceMaker Technologies Inc

 

Build your world, piece by piece...

 

Hod Lipson

unread,
Apr 10, 2013, 10:26:58 AM4/10/13
to st...@googlegroups.com

 

I think we should first reaffirm or refute the principle that AMF should only state properties of the final object (like STL), and not printer-specific process parameters.

If we abandon this principle we make the any AMF file less universal, and we should not do that incrementally.

 

In my personal opinion, adding printer-specific process parameters would be a mistake. I understand the convenience of adding process parameters in a closed research environment, and you can certainly do that in house, but making that part of the official standard has long term ramifications. For example, it is possible to describe geometry by slices with slice-by-slice nozzle temperatures etc. But that file would be un-interpretable by a printer with a different thickness or a printer that does not use a nozzle. Similarly, adding <future> and <custom> and <depreciated> are all cracks in the foundations that go against the very idea of a standard.

 

XML namespaces already allow you to insert elements from a different namespace. So why not create a new namespace (e.g. “AMF-Future:”)  and you can add whatever you want without interfering with the official standard?

 

I would like to hear more people share their opinion on either side.

 

--hod

 

 

 

Hod Lipson

Associate Prof. of Mechanical & Aerospace Engineering and Computing & Information Science

Cornell University, 242 Upson Hall, Ithaca NY 14853, USA

Office: (607) 255 1686 Lab: (607) 254 8940 Fax: (607) 255 1222

Email: Hod.L...@cornell.edu

Web: http://www.mae.cornell.edu/lipson

Administrative Assistant:  Craig Ryan  cd...@cornell.edu

Calendar: http://www.mae.cornell.edu/lipson/calendar.htm

 

Jonathan Hiller

unread,
Apr 10, 2013, 11:00:52 AM4/10/13
to st...@googlegroups.com
I fully agree with Hod. I will succinctly re-iterate one simple proposed guideline for standard inclusion of new tags and one for new geometry representations to help focus the conversation:

TAGS must:
-Describes the object, not how to build it. For instance <Hollow> might be allowed to tell the printer that strength is not important and to leave the middle empty if possible, but <LayerWaitTime> describes how to build it and should be excluded. This is consistent with current color and material AMF definitions.
  How do you know?
  *Is the tag potentially applicable across multiple hardware platforms/technologies? If no, probably not appropriate. For instance, <FdmLineOffset> would be out.
  *Can the contents of the tag mess up another piece of hardware if followed? If yes, then probably not appropriate. For instance if a <BuildTemperature> is specified, another machine could fry itself trying to reach that temperature.
  *Is this tag something a CAD programmer with limited AM experience would know how to include? If no, then probably not appropriate. For instance we'd get AMF files coming out of Solidworks with <LayerOrientation> specified naively.

GEOMETRY representations must:
-Include methods for any printer to build the geometry. Specific to this discussion of slice data, efficient oversampling/undersampling/interpolation formulas would need to be explicitly defined to allow printers with different layer resolutions to build the object. I'm skeptical this is a good way to define general geometry, but happy to be proven wrong.

Jacob's point about a probably use-case of small cloud-connected 3d printers is well taken. However this is the interface between AMF and a specific printer or class of printers. I think an efficient, standard slice streaming format closely tied to AMF would be the correct solution for this scenario. This could be included in the same AMF spec document without burdening the actual AMF files with additional hardware-specific information.

  ~Jon


On Wed, Apr 10, 2013 at 8:26 AM, Hod Lipson <hod.l...@cornell.edu> wrote:

 

I think we should first reaffirm or refute the principle that AMF should only state properties of the final object (like STL), and not printer-specific process parameters.

If we abandon this principle we make the any AMF file less universal, and we should not do that incrementally.

 

In my personal opinion, adding printer-specific process parameters would be a mistake. I understand the convenience of adding process parameters in a closed research environment, and you can certainly do that in house, but making that part of the official standard has long term ramifications. For example, it is possible to describe geometry by slices with slice-by-slice nozzle temperatures etc. But that file would be un-interpretable by a printer with a different thickness or a printer that does not use a nozzle. Similarly, adding <future> and <custom> and <depreciated> are all cracks in the foundations that go against the very idea of a standard.

 

XML namespaces already allow you to insert elements from a different namespace. So why not create a new namespace (e.g. “AMF-Future:”)  and you can add whatever you want without interfering with the official standard?

 

I would like to hear more people share their opinion on either side.

 

--hod

 

 

 

Hod Lipson

Associate Prof. of Mechanical & Aerospace Engineering and Computing & Information Science

Cornell University, 242 Upson Hall, Ithaca NY 14853, USA

Office: (607) 255 1686 Lab: (607) 254 8940 Fax: (607) 255 1222

Email: Hod.L...@cornell.edu

Web: http://www.mae.cornell.edu/lipson

Administrative Assistant:  Craig Ryan  cd...@cornell.edu

Calendar: http://www.mae.cornell.edu/lipson/calendar.htm

 

From: st...@googlegroups.com [mailto:st...@googlegroups.com] On Behalf Of Jacob Barhak
Sent: Wednesday, April 10, 2013 2:49 AM

Markus Hitter

unread,
Apr 10, 2013, 1:02:20 PM4/10/13
to st...@googlegroups.com

Am 10.04.2013 um 16:26 schrieb Hod Lipson:

> In my personal opinion, adding printer-specific process parameters
> would be a mistake. I understand the convenience of adding process
> parameters in a closed research environment, and you can certainly
> do that in house, but making that part of the official standard has
> long term ramifications. For example, it is possible to describe
> geometry by slices with slice-by-slice nozzle temperatures etc. But
> that file would be un-interpretable by a printer with a different
> thickness or a printer that does not use a nozzle. Similarly,
> adding <future> and <custom> and <depreciated> are all cracks in
> the foundations that go against the very idea of a standard.
> ...
> I would like to hear more people share their opinion on either side.

You're absolutely right, that's why I didn't speak up so far.

I even expect slice files to become obsolete in a not too distant
future, because printers will handle that internally. Just like most
2D printers no longer handle pixel-by-pixel image descriptions,
because they have technologies which can't be described pixel-by-
pixel and give better printing results.


Markus

- - - - - - - - - - - - - - - - - - -
Dipl. Ing. (FH) Markus Hitter
http://www.jump-ing.de/





Hod Lipson

unread,
Apr 10, 2013, 1:49:28 PM4/10/13
to st...@googlegroups.com
There is (or was) a parallel discussion at ASTM for a different data interchange format dedicated to communicating directly with the printer. This would be a process-specific format between an AMF parser and a printer (e.g. for Jacob's cloud scenario). Although (as Markus mentions below) this may become obsolete as even small printers become more computationally capable, and will be able to do their own process planning directly from AMF.

Does anyone involved with ASTM know what happened to that effort?

--hod



-----Original Message-----
From: st...@googlegroups.com [mailto:st...@googlegroups.com] On Behalf Of Markus Hitter
Sent: Wednesday, April 10, 2013 1:02 PM
To: st...@googlegroups.com
Subject: Re: Does AMF support slice data?


Jacob Barhak

unread,
Apr 10, 2013, 2:01:05 PM4/10/13
to st...@googlegroups.com
Hi Markus,

This issue is similar to how this the client should be in a client/server application.

Who is responsible for what kind processing has been changing for years back and forth since terminals and central computers have been created.

Today for example the shift is towards heavy computations in the cloud and GUI via a web browser at the client. If the 3D printing field agrees on a printer standard such as HTML for browsers then you are right - and that standard may be AMF. Yet if streaming control information will be a better alternative then perhaps the market will shift.

Note, however, that since STL was there first, chances are that AMF has more chances of adoption than the scenario I was describing with slices/control information.

I am just trying to keep an open mind.

Jacob

Sent from my iPhone

On Apr 10, 2013, at 12:02 PM, Markus Hitter <m...@jump-ing.de> wrote:

>
> Am 10.04.2013 um 16:26 schrieb Hod Lipson:
>
>> In my personal opinion, adding printer-specific process parameters would be a mistake. I understand the convenience of adding process parameters in a closed research environment, and you can certainly do that in house, but making that part of the official standard has long term ramifications. For example, it is possible to describe geometry by slices with slice-by-slice nozzle temperatures etc. But that file would be un-interpretable by a printer with a different thickness or a printer that does not use a nozzle. Similarly, adding <future> and <custom> and <depreciated> are all cracks in the foundations that go against the very idea of a standard.
>> ...
>> I would like to hear more people share their opinion on either side.
>
> You're absolutely right, that's why I didn't speak up so far.
>
> I even expect slice files to become obsolete in a not too distant future, because printers will handle that internally. Just like most 2D printers no longer handle pixel-by-pixel image descriptions, because they have technologies which can't be described pixel-by-pixel and give better printing results.
>
>
> Markus
>
> - - - - - - - - - - - - - - - - - - -
> Dipl. Ing. (FH) Markus Hitter
> http://www.jump-ing.de/
>
>
>
>
>

Martin Wicke

unread,
Apr 10, 2013, 2:13:48 PM4/10/13
to st...@googlegroups.com
I have always thought of AMF as a geometry exchange format. This choice
makes a lot of sense to me since geometry is a universal interchange
format. Slicing on the other hand is just one method of manufacturing,
relevant only for (most) 3D printers, and some 3-axis mills. Slices are
far from universal.

I agree that AMF should not include (and therefore tempt producers to
produce) machine or process specific data *in the geometry
specification*. I do not think that should mean that all
process-specific data should be forbidden: I think it is fair to enter
parameters relating to the scanning process for scanned geometry (the
right place IMO is <metadata>), or even suggested parameters for
production (again, in <metadata>). I believe the problems surrounding
these things can be solved with proper namespacing, as discussed
elsewhere. Even better, if such tags/data turn out to be important and
widely adopted, they can be absorbed into the standard (similar to the
ARB/EXT method OpenGL uses).

As Hod said earlier, adding tags other than <mesh> is perfectly
reasonable as long as the contained information describes the geometry
in a "portable" way, for example <frep>, <levelset>, <csg>,
<pointcloud>, etc., but as Jonathan said, it is crucial that exact
instructions are given how to obtain pure geometry from the data
(interpolation schemes for levelsets, implicit surface definition
specifications for point clouds, etc.). Just slices as they are usually
produced by printer drivers now are not enough (since they implicitly
rely on a process to complete the geometry), but slices plus a
definition of how they connect would define a unique geometry, and could
be a way to define a good <slices> tag.

Martin

Markus Hitter wrote:
>
> Am 10.04.2013 um 16:26 schrieb Hod Lipson:
>
>> In my personal opinion, adding printer-specific process parameters
>> would be a mistake. I understand the convenience of adding process
>> parameters in a closed research environment, and you can certainly do
>> that in house, but making that part of the official standard has long
>> term ramifications. For example, it is possible to describe geometry
>> by slices with slice-by-slice nozzle temperatures etc. But that file
>> would be un-interpretable by a printer with a different thickness or a
>> printer that does not use a nozzle. Similarly, adding <future> and
>> <custom> and <depreciated> are all cracks in the foundations that go
>> against the very idea of a standard.
>> ...
>> I would like to hear more people share their opinion on either side.
>
> You're absolutely right, that's why I didn't speak up so far.
>
> I even expect slice files to become obsolete in a not too distant
> future, because printers will handle that internally. Just like most 2D
> printers no longer handle pixel-by-pixel image descriptions, because
> they have technologies which can't be described pixel-by-pixel and give

Jacob Barhak

unread,
Apr 10, 2013, 2:52:05 PM4/10/13
to st...@googlegroups.com
Hi Hod,

What you are referring to as cracks in the standard may be the open mechanism for its evolution and survival. 

What I was thinking of is using the <Future> element as part of any XML standard that allows the users to officially suggest an enhancement with the incentive of backwards adoption. 

Think of it as a sandbox environment where any user can implement whatever they want. They would place a unique ID for their enhancement at the beginning composed of a time stamp + name + place  to make it unique. This will resolve conflict of names. 

Once the user has implemented their new idea the standard committee will be able to adopt the implementation just by stating that version X+1 of the standard will use element <E> defined as <E + ID> under < Future> in version X. 

This will give incentive to innovation since by adoption the standard committee will essentially state that implementations in version X+1 must also backwards implement future elements from version X. The developer who invested in defining the sandbox elements of version X will benefit from the development being adopted early while everyone else needed to adjust to the change in the standard. 

If there are incentives to develop something new with a chance of benefit  then the standard will evolve and be current. This does not take away the committees role in defining version X+1. Yet it does allow splits in ideology at the price of non adoption of an ideas and therefore effort lost. 

This will increase openness of the standard. Do not think of a standard as something solid that should withstand harsh conditions. Think about it as something more fluid that evolves to fit needs at a specific environment at a specific time frame. As a metaphor: notice that there are no cracks in a fluid and it occupies new space in can reach. 

Similar ideas already exist in development of programming languages and software. 

If you are still opposed after this explanation I will withdraw my offer. After all in an environment where only a unanimous vote means adoption, a single negative opinion means veto. If there is only opposition and no second, then I rather withdraw to conserve effort. 

Never the less, I thank you for creating an environment where this idea can be voiced and recorded. Perhaps someone may find this useful for another standard. 

       Jacob


Sent from my iPhone

Hod Lipson

unread,
Apr 10, 2013, 4:16:46 PM4/10/13
to st...@googlegroups.com

How about doing this under a different namespace, like “AMF-Future:” or “AMFX:”.

Then it is completely independent of the AMF standard, and AMF readers can ignore it if they want.

It sounds to me the perfect solution.

Alejandro Sklar

unread,
Apr 10, 2013, 3:34:17 AM4/10/13
to st...@googlegroups.com
I think exploring with new elements, especially different geometrical representations, has a lot of potential. In the case of slices, their structure basically mimics the sequential print path. Thus embedding information about the printing process within this type of representation would be simpler than embedding information within a mesh representation.

This could be useful when developing custom code for controlling other parameters and functions of the printing process. For instance, if someone wants to be able to choose different print settings for different portions of the printed piece, they could merely add custom tags around the single block of sequential code that defines the geometry of that region. It seems to me that attempting to do this with a surface mesh representation would require some messy transformations, or the excessive repetition of parameters. 

I too feel it's important to address a procedure for possible additions to the standard because I personally feel there might be more properties of the final object that should be explored, beyond geometry and material. These could provide developers that use AMF simple ways of embedding other printing information to make full use of the additive manufacturing process. 

- Alejandro
On Wed, Apr 10, 2013 at 1:56 AM, Jacob Barhak <jacob....@gmail.com> wrote:



--

Alejandro Sklar

unread,
Apr 10, 2013, 2:35:10 PM4/10/13
to st...@googlegroups.com
Hi all,

I didn't mean that printer specific information or settings concerning the printing process should be included in the standard, rather that there should be an established way of experimenting with new types of elements that could be adopted into the new standard, if useful. 

Specifically, I think allowing people to experiment with geometry representations beyond the conventional triangular mesh used in STL is important. There may be representations we find are more useful for the AM process because these might be structured in a way that better parallels the printing process. The point is to make it easy for adopters of the standard to add functionality tailoring unique print settings to separate regions of a print. Some geometric representations might lend themselves to these capabilities more than others, because it would be easier to pinpoint, within the AMF file, the position where information should be added or parsed. 

As of now, the simplest way to adjust the print speed of a specific region of a print is to basically track the transformation of that geometric region into its GCODE and then add lines of GCODE to the buffer where necessary. Wouldn't it be great if the standard supported a geometrical representation whose structure mirrored the printing process? Developers could then embed this information before the GCODE buffer is generated, which would be a much simpler task. Regarding slices, and printers with different resolutions, one would identify key geometric features of the structure to the fullest extent, but not include any interpolation or printer head path planning (this would be handled outside of the standard file, for each specific printer). 

These are just some thoughts I'm having, as I'm trying to support the AMF standard on a printer I am developing and am thus interested in how AMF can be really different from the current standard and address some of the key issues I've pinpointed with the printing process today. 

- Alejandro

Jacob Barhak

unread,
Apr 10, 2013, 5:24:07 PM4/10/13
to st...@googlegroups.com
Hi Hod,

This is a possibility. Do you have specifics in mind?

Note that the <Future> idea is not really specific to AMF. This idea can be reused in any XML based standard that wants the ability to openly evolve and give incentive to contributions.

If you find the <Future> element useful then you can decide to adopt the tag into AMF. So instead of being based on XML alone, AMF can be based on XML + Future tag. It will allow flexibility + evolution mechanism. 

Note that the <Future> idea is abstract and separate from the slices ideas I raised. It evolved from thinking about meta-data and openness. This subject line for the post may be misleading here. Slices can use the future namespace as a sandbox, yet the standard has to agree upon reusing future statement for this idea to be effective. 

If you know of any XML standard interested in adopting such an idea I will be happy to formally draft it. 

Yet if AMF or another standard do not value in this, the idea will be shelved until called upon. 

In any case, the conversation is welcome. If I see more posts in this matter calling for public response, I will respond publicly. Otherwise, since there is no strong support, if anyone is interested in discussing it further, please feel free to contact me offline. 

I hope this keeps the forum on topic. 

          Jacob


Sent from my iPhone

Daid

unread,
Apr 11, 2013, 2:02:47 PM4/11/13
to st...@googlegroups.com
I'm firmly against support alternative geometric representations. As you will make it a lot harder to make basic reading of AMF files work. Suddenly you would end up with files that some programs will open, and others will not. The power of STL is that every tool reads it and every tool writes it, and they all read each others files just fine (especially for the binary STL), losing that power reduces your next standard to total crap. The geometric data is the cake, everything else is just icing on the cake. You need to have exchangability of cake between programs of the cake, the icing might, or might not work on all software. But the cake needs to work all the time.

I'll have to look into XML name spaces (I'm not that familiar with XML) if that provides a solution to tag extra data along to the AMF file, without ruining it for current readers, then that makes me happy. Else I will most likely be abusing the metadata tag and not be standard compliant. The data that I want to store with the geometry is not that much different from storing a texture with it. 
Which is also data that some manufacturing processes can use, and others can not, pretty much showing that the current standard isn't "just geometric data", as single or multi-color FDM printer, I cannot use the per-vertex/face color data, or textures.

(I'm not sure who suddenly pulled "storing slices in AMF" and "cloud slicing" into this discussion, but nice job at steering everything off-topic)

To post to this group, send email to s...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "STL 2.0" group.
To unsubscribe from this group and stop receiving emails from it, send an email to stl2+uns...@googlegroups.com.

To post to this group, send email to s...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "STL 2.0" group.
To unsubscribe from this group and stop receiving emails from it, send an email to stl2+uns...@googlegroups.com.

To post to this group, send email to s...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "STL 2.0" group.
To unsubscribe from this group and stop receiving emails from it, send an email to stl2+uns...@googlegroups.com.

To post to this group, send email to s...@googlegroups.com.

Reply all
Reply to author
Forward
0 new messages