- 积分
- 2943
- 明经币
- 个
- 注册时间
- 2003-11-3
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2004-5-11 13:41:00
|
显示全部楼层
本帖最后由 作者 于 2004-5-12 8:07:04 编辑
我只会vba,用vba写了一个以下是主程序的代码, - Sub GBChamfer()
- On Error Resume Next
- Dim dist1 As Double, dist2 As Double
- dist1 = 0.5: dist2 = 0.8
-
- Dim lineObj1 As AcadLine, lineObj2 As AcadLine
- Dim pt1, pt2
-
- gwGetEntity lineObj1, pt1, "请选择第一条直线:", "AcDbLine"
- If lineObj1 Is Nothing Then Exit Sub
-
- gwGetEntity lineObj2, pt2, "请选择第二条直线:", "AcDbLine"
- If lineObj2 Is Nothing Then Exit Sub Dim jointPnt, startPnt1, startPnt2, endPnt1, endPnt2, startPnt3
- jointPnt = lineObj1.IntersectWith(lineObj2, acExtendBoth)
- If UBound(jointPnt) = -1 Then Exit Sub
-
- If (Abs(GetAngleFromX(jointPnt, pt1) - GetAngleFromX(jointPnt, lineObj1.StartPoint)) < 0.1 Or _
- Abs(Abs(GetAngleFromX(jointPnt, pt1) - GetAngleFromX(jointPnt, lineObj1.StartPoint)) - 2 * PI) < 0.1) And _
- GetDistance(jointPnt, pt1) < GetDistance(jointPnt, lineObj1.StartPoint) Then
- startPnt1 = lineObj1.StartPoint
- Else
- startPnt1 = lineObj1.EndPoint
- End If
-
- If (Abs(GetAngleFromX(jointPnt, pt2) - GetAngleFromX(jointPnt, lineObj2.StartPoint)) < 0.1 Or _
- Abs(Abs(GetAngleFromX(jointPnt, pt2) - GetAngleFromX(jointPnt, lineObj2.StartPoint)) - 2 * PI) < 0.1) And _
- GetDistance(jointPnt, pt2) < GetDistance(jointPnt, lineObj2.StartPoint) Then
- startPnt2 = lineObj2.StartPoint
- Else
- startPnt2 = lineObj2.EndPoint
- End If
-
- 'If GetDistance(jointPnt, startPnt1) < dist1 Or GetDistance(jointPnt, startPnt2) < dist2 Then
- ' ThisDrawing.Utility.Prompt "倒角的间距过大,退出命令。"
- ' Exit Sub
- 'End If
-
- endPnt1 = GetPointAR(jointPnt, GetAngleFromX(jointPnt, startPnt1), dist1)
- endPnt2 = GetPointAR(jointPnt, GetAngleFromX(jointPnt, startPnt2), dist2)
- startPnt3 = GetPointAR(endPnt2, GetAngleFromX(jointPnt, startPnt1), dist1)
-
- Dim newObj1 As AcadLine, newObj2 As AcadLine, newObj3 As AcadLine, newObj4 As AcadLine
- Set newObj1 = ThisDrawing.ModelSpace.AddLine(startPnt1, endPnt1)
- Set newObj2 = ThisDrawing.ModelSpace.AddLine(startPnt2, endPnt2)
- Set newObj3 = ThisDrawing.ModelSpace.AddLine(startPnt3, endPnt1)
- Set newObj4 = ThisDrawing.ModelSpace.AddLine(startPnt3, endPnt2)
-
- newObj1.Layer = lineObj1.Layer: newObj1.Linetype = lineObj1.Linetype
- newObj2.Layer = lineObj2.Layer: newObj2.Linetype = lineObj2.Linetype
- newObj3.Layer = lineObj1.Layer: newObj3.Linetype = lineObj1.Linetype
- newObj4.Layer = lineObj1.Layer: newObj4.Linetype = lineObj1.Linetype
-
- lineObj1.Delete: lineObj2.Delete
-
- End Sub
|
|