VBA-收缩点
大家好我用这个代码获得2分
v1 = ThisDrawing.Utility.GetPoint(, vbCr & "Select Point 1: ")
v2 = ThisDrawing.Utility.GetPoint(, vbCr & "Select Point 2: ")
选择的点可以是任何角度。现在
在某些情况下,我需要将每边的长度减少18英寸。
我使用了v1(0)+18和v1(1)-18,如果线是水平的,这可以工作,但一旦线角度改变,这就不起作用。
有什么想法吗?顺便说一句,我不是Acad程序员,工作很慢,这些东西只是扔在我的桌子上。
谢谢大家!!! 我不确定我在听。对于v1(0)+18和v2(0)–18,您将水平线的每一侧减少18的示例似乎更合适。
我没有遵循常规的目标吗?
你说得对,我在论坛上打错了。因此,我使用:
p_vPoint1(0) = (v1(0) + 18)
p_vPoint2(0) = (v2(0) - 18)
只要这条线是水平的,这就行了,但一旦它垂直了,它就完全不稳定了。。。 类似于所示示例的内容应允许任意角度的点。
Option Explicit
Const pi As Double = 3.14159265
Sub reduceBy18()
Dim v1 As Variant
Dim v2 As Variant
Dim dblAng As Double
Dim entLine As AcadLine
With ThisDrawing.Utility
v1 = .GetPoint(, "Select point 1: ")
v2 = .GetPoint(v1, "Select point 2: ")
dblAng = .AngleFromXAxis(v1, v2)
v1 = .PolarPoint(v1, dblAng, 18#)
v2 = .PolarPoint(v2, dblAng + pi, 18#)
Set entLine = ThisDrawing.ModelSpace.AddLine(v1, v2)
End With
End Sub 肖恩!!!!
非常感谢!!!太棒了!!!! 不客气。我应该指出,该例程仅与WCS中公共高程处的点兼容。需要进行额外处理,以考虑完整的3D点选择。
页:
[1]