[求助]关于给多位线附加属性和读取属性
本帖最后由 作者 于 2007-6-7 10:37:55 编辑 <br /><br /> <p>各位高手:</p><p>小弟想用VBA代码实现如下过程:</p><p>有3条多位线pline1,pline2,pline3代表3根电缆</p><p>给其附加属性:pline1 名称:电力电缆 ;截面:200;型号:XY</p><p> pline2 名称:信号电缆 ;截面:100;型号:XZ</p><p> pline3 名称:通信电缆 ;截面:500;型号:YZ</p><p>然后 有一根line的直线,判断如果line与以上的三条多位线有交点,则画出以交点为圆心半径为电缆截面的圆。</p><p>PS:属性中的名称、截面和型号都是从TextBox控件中输入的。</p><p>十分感谢!!!</p><p></p> <p>1)添加属性可通过 pline1.SetXData(XDataType, XData)来实现</p><p>2)求交点 </p><p> 首先,你可通过line直线做为选择集的选择方式,组成与line相交的电缆的选择集</p><p> 其次,遍历选择集.用Line.IntersectWith(IntersectObject, ExtendOption) 来分别求取每个交点,并用GetXData来读取每条电缆相应的属性信息,并在指定位置画出截面图</p><p>具体的可以参照帮助文件</p><p></p> <p><strong><font face="Verdana" color="#61b713">十分感谢zhuxuhong兄的指点</font></strong></p><p><font face="Verdana">另请问一下附加和获取XDATA是不是这样(以pline1为例)</font></p><p><font face="Verdana">附加属性</font></p><p><font face="Verdana">Dim pline1 As AcadLWPolyline<br/>Dim DataType(0 To 3) As Integer<br/>Dim Data(0 To 3) As Variant<br/>TextBox1.text = "电力电缆"<br/>TextBox2.text = "200"<br/>TextBox3.text = "XY"<br/>Set pline1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(arr)<br/>DataType(0) = 1001: Data(0) = TextBox1.text<br/>DataType(1) = 1040: Data(1) = TextBox2.Value<br/>DataType(2) = 1000: Data(2) = TextBox3.text<br/>pline1.SetXData DataType, Data</font></p><p><font face="Verdana"></font></p><p><font face="Verdana">获取属性</font></p><p><font face="Verdana">(以下代码:遍历图层“电缆”中所有多位线,如果它与pt1、pt2所围成的矩形有交点,则获取它的截面属性。)</font></p><p>Dim plln As AcadLWPolyline</p><p>Dim asss As AcadSelectionSet<br/>Dim ftype1(0) As Integer, fdata1(0) As Variant<br/>Set asss = ThisDrawing.SelectionSets.Add("asss")<br/>If Err Then Set asss = ThisDrawing.SelectionSets.Add("asss")<br/>asss.Clear</p><p>ftype1(0) = 8: fdata1(0) = "电缆"<br/>asss.Select acSelectionSetCrossing, pt1, fpt2, ftype1, fdata1</p><p>For Each plln In asss<br/>With plln<br/><font color="#dd2222">plln.GetXData "", DataType(1), Data(1)</font><br/>Dim cc1 As AcadCircle<br/>Set cc1 = ThisDrawing.ModelSpace.AddCircle(point, <font color="#dd2222">Data(1)</font>)<br/><br/>End With<br/>Next plln<br/>asss.Delete</p><p></p><p></p><p>小弟刚入手VBA,不知道以上代码有什么问题,望各位高手多多指教。感谢!</p> <p>各位老大帮帮忙啊</p> 生成后,用CAD的扩展命令查询下不就知道了
页:
[1]