VBA中的,Offset的问题
我在ACD中用Rectangle和pline分加画一个矩形,用VBA中的obj.offset(-10)后,为什么是这样的效果(如图所示),请高手指点。 偏移后判断偏移前后的面积,如果面积小则向内偏移了。因为多段线为顺时针和逆时针之分,所以有时会向内偏移有时会向外偏移。 如何判断,多线段的顺逆时针之分? <P>下面程序你应该满意的,不满意请回復</P>
<P>Public Sub od() <BR>On Error Resume Next<BR>Dim i As Integer, ssetobj As AcadSelectionSet, I1 As Integer, selobj As AcadEntity<BR>Dim str As String, shu As Double, I2 As Integer, Offsetobj As Variant<BR>i = ThisDrawing.SelectionSets.Count<BR>While (i > 0)<BR> If ThisDrawing.SelectionSets.Item(i - 1).Name = "od" Then<BR> ThisDrawing.SelectionSets.Item(i - 1).Delete<BR> End If<BR> i = i - 1<BR>Wend<BR>str = ThisDrawing.Utility.GetString(False, "Please input number you want to offset :")<BR>str1 = Val(str)<BR>Set ssetobj = ThisDrawing.SelectionSets.Add("od")<BR>ssetobj.SelectOnScreen<BR>For I1 = 0 To ssetobj.Count - 1<BR> Set selobj = ssetobj.Item(I1)<BR> Offsetobj = selobj.Offset(str1)<BR> I2 = UBound(Offsetobj)<BR> If Offsetobj(I2).Area < selobj.Area Then<BR> Offsetobj(I2).Delete<BR> Offsetobj = selobj.Offset(-str1)<BR> End If<BR>Next<BR>End Sub<BR></P> <P>对了错了也不回復,这种人以后不帮算了</P> 楼主你的图中偏移后的线的颜色是怎样修改的啊? 用color属性修改 2楼老大回复的是对的。
最简单的判断方法是分别取正参数和负参数,然后比较面积,看保留哪个。
还有一个办法就是利用格林公式判断顶点是逆时针还是顺时针排序。
offset的参数为正数时,逆时针是外偏,顺时针是内偏;参数为负数则相反。
页:
[1]