Message 1 of 5
New TypedValue Usage (LispDataType.DottedPair)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I am starting to slowly migrate some of my LISP functions into .NET. Since I obviously can't do it all at once I am migrating slowly by using the "LispFunction" class in order to write chunks of code in .NET that can be called from the "left over" LISP routine code. The return value from this class\function is a "Autodesk.AutoCAD.DatabaseServices.ResultBuffer" (which is changed into a list by the time it is returned to the LISP code). Right now I am returning a DataSet (that I have already obtained before the below code) as a "list of lists".
This code currently works just fine:
{code}
resBuf = New ResultBuffer()
'read data set
For Each dt As System.Data.DataTable In dataSet.Tables
For Each dr As DataRow In dt.Rows
'add each row into result buffer as a list
resBuf.Add(New TypedValue(LispDataType.ListBegin, -1))
For Each dc As System.Data.DataColumn In dt.Columns
resBuf.Add(New TypedValue(LispDataType.ListBegin, -1))
resBuf.Add(New TypedValue(LispDataType.Text, dc.ColumnName))
resBuf.Add(New TypedValue(LispDataType.Text, dr.Item(dc)))
resBuf.Add(New TypedValue(LispDataType.ListEnd, -1))
Next
resBuf.Add(New TypedValue(LispDataType.ListEnd, -1))
Next
Next
{code}
BUT, what I want is to return a "list of dotted pairs", which I assume would be something like this:
(because I know "LispDataType.DottedPair" is valid (value=5018)...I just don't know how to use it)
{code}
resBuf = New ResultBuffer()
'read data set
For Each dt As System.Data.DataTable In dataSet.Tables
For Each dr As DataRow In dt.Rows
'add each row into result buffer as a list
resBuf.Add(New TypedValue(LispDataType.ListBegin, -1))
For Each dc As System.Data.DataColumn In dt.Columns
resBuf.Add(New TypedValue(LispDataType.DottedPair, dc.ColumnName))
resBuf.Add(New TypedValue(LispDataType.DottedPair, dr.Item(dc)))
Next
resBuf.Add(New TypedValue(LispDataType.ListEnd, -1))
Next
Next
{code}
...but that is obviously not the right syntax because one data type of DottedPair would need 2 arguments (not 2 dotted pairs w/ one arg each).
Can anyone help?
This code currently works just fine:
{code}
resBuf = New ResultBuffer()
'read data set
For Each dt As System.Data.DataTable In dataSet.Tables
For Each dr As DataRow In dt.Rows
'add each row into result buffer as a list
resBuf.Add(New TypedValue(LispDataType.ListBegin, -1))
For Each dc As System.Data.DataColumn In dt.Columns
resBuf.Add(New TypedValue(LispDataType.ListBegin, -1))
resBuf.Add(New TypedValue(LispDataType.Text, dc.ColumnName))
resBuf.Add(New TypedValue(LispDataType.Text, dr.Item(dc)))
resBuf.Add(New TypedValue(LispDataType.ListEnd, -1))
Next
resBuf.Add(New TypedValue(LispDataType.ListEnd, -1))
Next
Next
{code}
BUT, what I want is to return a "list of dotted pairs", which I assume would be something like this:
(because I know "LispDataType.DottedPair" is valid (value=5018)...I just don't know how to use it)
{code}
resBuf = New ResultBuffer()
'read data set
For Each dt As System.Data.DataTable In dataSet.Tables
For Each dr As DataRow In dt.Rows
'add each row into result buffer as a list
resBuf.Add(New TypedValue(LispDataType.ListBegin, -1))
For Each dc As System.Data.DataColumn In dt.Columns
resBuf.Add(New TypedValue(LispDataType.DottedPair, dc.ColumnName))
resBuf.Add(New TypedValue(LispDataType.DottedPair, dr.Item(dc)))
Next
resBuf.Add(New TypedValue(LispDataType.ListEnd, -1))
Next
Next
{code}
...but that is obviously not the right syntax because one data type of DottedPair would need 2 arguments (not 2 dotted pairs w/ one arg each).
Can anyone help?