同时获取距离和GetPoint
根据我对GetDistance实用程序的理解,您无法获得两个已知点的距离。即。
CurDist = GetDistance(PointA,PointB)
显然你只能使用一个已知点,你必须选择下一个点或输入一些东西。
选择第二点并不是什么大不了的事情,除了我必须将同一点用于2个目的(获取距离并获得插入点)。
那么,有没有办法在一步之内利用GetDistance和Getpoint实用程序?
我希望这是有道理的...
**** Hidden Message ***** 嗨,凯文
,你可以做这样的事情:
Public Function MeGetPointOrDistance() As Variant
Dim aFstPnt As Variant
Dim aNxtPnt As Variant
On Error Resume Next
With ThisDrawing.Utility
aFstPnt = .GetPoint(, vbCrLf & "Select first point: ")
If Err.Number0 Then
Err.Clear
Exit Function
End If
aNxtPnt = .GetPoint(aFstPnt, vbCrLf & "Select next point/enter distance: ")
If Err.Number0 Then
Err.Clear
TestPnt = aFstPnt
Else
TestPnt = Sqr(((aFstPnt(0) - aNxtPnt(0)) ^ 2) + _
((aFstPnt(1) - aNxtPnt(1)) ^ 2) + _
((aFstPnt(2) - aNxtPnt(2)) ^ 2))
End If
End With
End Function
Use:
Dim vRetVal As Variant
vRetVal = MeGetPointOrDistance()
Select Case VarType(RetVal)
Case vbEmpty
'User pressed enter - do nothing
Case vbDouble
'User had enter a distance
Case Else
'User had enter a point
End Select
不确定如果我理解您的问题,但选择的最后一个点存储在“lastpoint”系统变量中,或者如果两个点设置为变量,则该变量可用于其他任何操作。
(defun C:DS (/ A B)
(PROMPT (STRCAT(RTOS (CAR(SETQ A(GETPOINT "START\t")))3 10)
" "(RTOS (CADR A)3 10)
" "(RTOS (CADDR A)3 10)"\n"
))
(PROMPT(RTOS (DISTANCE A (SETQ B(GETPOINT A "TO\n") ))3 10))
(PROMPT(STRCAT "\tX="(RTOS (SETQ DX(CAR(MAPCAR '- B A)))3 10)"\tor X="(RTOS (SETQ DX(CAR(MAPCAR '- B A)))2 10)
"\tY="(RTOS (SETQ DY(CADR(MAPCAR '- B A)))3 10)"\tor Y="(RTOS (SETQ DY(CADR(MAPCAR '- B A)))2 10)
"\tZ="(RTOS (SETQ DZ(CADDR(MAPCAR '- B A)))3 10)
)) (PRINC (DISTANCE A B))
(command "insert" (getstring "blockname") "s" 1 "r" 0 B)
(terpri)
)
页:
[1]