bluefires 发表于 2006-6-29 23:00:00

问xdata的问题

我希望可以给轻量多义线赋予一些属性,我就想用SetXData和GetXData的方法,可是我看了一下组码datatype,不知道是不是可以随便使用的。我要做的东西只是要赋予一些属性再读出来而已,大家帮我讲讲XData的用途,以及我这样做可不可以

雪山飞狐_lzh 发表于 2006-6-30 08:46:00

<P>VBA的例子里就有</P>
<P>http://www.mccad.net/object/acad2004/ex_setxdata.htm</P>

sangding 发表于 2006-6-30 10:59:00

<P>方法可行</P>

bluefires 发表于 2006-6-30 19:43:00

<P><A name=21402><FONT color=#990000><B>lzh</B></FONT></A>,你给的那个文档我都看过了,我试验了一下子,发现发现必须严格按照DataType的值去赋予Data数据,我现在想给一条多义线赋予四个值,四个值都是字符串,不是很长。请问具体怎么做。麻烦先回答这个问题,然后再问下我用字典做怎么样?</P>

bluefires 发表于 2006-6-30 19:54:00

<P>DataType(2) = 1003: Data(2) = "0"&nbsp; </P>
<P>例如这条语句,当你的图中没有“0”这个层时就会出现数据不符合的问题。我当时看了DFX的码值,我用了一些它里面说可以用于字符的,可以试验不成功,可能是我没看懂文档,我现在把所有关于Xdata的文档都看了还是不是很明白使用这个的时候有什么具体的限制。不过在这个的过程中我发现了字典这个东西,getXrecord 这个东西,我目前还没好好研究,只是看了文档的例子,要大家有事件的话给我一些实际的指导或者源代码。等过段时间我的项目做完了我把我的代码传上了给大家点评一下。</P>

雪山飞狐_lzh 发表于 2006-6-30 20:26:00

<P>&nbsp;&nbsp;&nbsp; Dim xt(4) As Integer,xd(4)</P>
<P>&nbsp;&nbsp;&nbsp; xt(0) = 1001: xd(0) = "testapp"<BR>&nbsp;&nbsp;&nbsp; xt(1) = 1000: xd(1) = "a"<BR>&nbsp;&nbsp;&nbsp; xt(2) = 1000: xd(2) = "b"<BR>&nbsp;&nbsp;&nbsp; xt(3) = 1000: xd(3) = "c"<BR>&nbsp;&nbsp;&nbsp; xt(4) = 1000: xd(4) = "d"<BR><BR><BR><BR><BR></P>

bluefires 发表于 2006-7-3 21:44:00

<P>&nbsp;&nbsp;&nbsp; Dim xt(4) As Integer,xd(4)</P>
<P>&nbsp;&nbsp;&nbsp; xt(0) = 1001: xd(0) = "testapp"<BR>&nbsp;&nbsp;&nbsp; xt(1) = 1000: xd(1) = "a"<BR>&nbsp;&nbsp;&nbsp; xt(2) = 1000: xd(2) = "b"<BR>&nbsp;&nbsp;&nbsp; xt(3) = 1000: xd(3) = "c"<BR>&nbsp;&nbsp;&nbsp; xt(4) = 1000: xd(4) = "d"<BR>这个我试了下不行啊,我是在Autocad2006试得,<A name=21534><FONT color=#990000><B>lzh741206</B></FONT></A>你试试看呢?</P>
<P>&nbsp;</P>

雪山飞狐_lzh 发表于 2006-7-3 22:09:00

<P>没有问题的,我从2002到2007都做过的:)</P>
<P>看看你的测试代码?</P>

bluefires 发表于 2006-7-4 22:45:00

<P>就拿你前面给我的代码做个测试,我测试的时候他告诉我类型不对,郁闷!你看看行不行,该不会是版本的问题。</P>
<P>Sub Example_SetXdata()<BR>&nbsp;&nbsp;&nbsp; ' This example creates a line and attaches extended data to that line.<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' Create the line<BR>&nbsp;&nbsp;&nbsp; Dim lineObj As AcadLine<BR>&nbsp;&nbsp;&nbsp; Dim startPt(0 To 2) As Double, endPt(0 To 2) As Double<BR>&nbsp;&nbsp;&nbsp; startPt(0) = 1#: startPt(1) = 1#: startPt(2) = 0#<BR>&nbsp;&nbsp;&nbsp; endPt(0) = 5#: endPt(1) = 5#: endPt(2) = 0#<BR>&nbsp;&nbsp;&nbsp; Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt)<BR>&nbsp;&nbsp;&nbsp; ZoomAll</P>
<P>&nbsp;&nbsp;&nbsp; Dim DataType(0 To 4) As Integer<BR>&nbsp;&nbsp;&nbsp; Dim Data(0 To 4) As Variant</P>
<P>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; DataType(0) = 1001: Data(0) = "testapp"<BR>&nbsp;&nbsp;&nbsp; DataType(1) = 1000: Data(1) = "a"<BR>&nbsp;&nbsp;&nbsp; DataType(2) = 1000: Data(2) = "b"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; DataType(3) = 1000: Data(3) = "c"<BR>&nbsp;&nbsp;&nbsp; DataType(4) = 1000: Data(4) = "d"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' Attach the xdata to the line<BR>&nbsp;&nbsp;&nbsp; lineObj.SetXData DataType, Data<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; ' Return the xdata for the line<BR>&nbsp;&nbsp;&nbsp; Dim xdataOut As Variant<BR>&nbsp;&nbsp;&nbsp; Dim xtypeOut As Variant<BR>&nbsp;&nbsp;&nbsp; lineObj.GetXData "", xtypeOut, xdataOut<BR>&nbsp;&nbsp;&nbsp; <BR>End Sub<BR></P>

sangding 发表于 2006-7-5 11:04:00

<P>你在程序第一行加上&nbsp;&nbsp;&nbsp; On Error Resume Next<BR>&nbsp; </P>
<P>试试</P>
<P>我发现有时程序不好用的时候加上这个就好用了</P>
<P>&nbsp;</P>
页: [1]
查看完整版本: 问xdata的问题