jakebullet70 发表于 2022-7-6 14:49:24

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程序员,工作很慢,这些东西只是扔在我的桌子上。
 
谢谢大家!!!

SEANT 发表于 2022-7-6 15:02:48

我不确定我在听。对于v1(0)+18和v2(0)–18,您将水平线的每一侧减少18的示例似乎更合适。
 
我没有遵循常规的目标吗?

jakebullet70 发表于 2022-7-6 15:17:59

 
你说得对,我在论坛上打错了。因此,我使用:
 

p_vPoint1(0) = (v1(0) + 18)
p_vPoint2(0) = (v2(0) - 18)

 
只要这条线是水平的,这就行了,但一旦它垂直了,它就完全不稳定了。。。

SEANT 发表于 2022-7-6 15:37:16

类似于所示示例的内容应允许任意角度的点。
 
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

jakebullet70 发表于 2022-7-6 15:48:39

肖恩!!!!
 
非常感谢!!!太棒了!!!!

SEANT 发表于 2022-7-6 15:53:27

不客气。我应该指出,该例程仅与WCS中公共高程处的点兼容。需要进行额外处理,以考虑完整的3D点选择。
页: [1]
查看完整版本: VBA-收缩点