vlax曲线getClosestPointTo问题
您好-我正在尝试在VBA和VLisp之间通信,以使用使用setlispvar和evallispexpression代码的vlax曲线函数。我似乎无法使代码正常工作。附件包含我的代码。代码试图从(0,0,0)到(100100,0)绘制一条线,然后找到距离(50,55,0)最近的点。问题似乎在于将点变量转换为点列表。任何帮助都将不胜感激,因为我感到非常沮丧和“;“脑死亡”;在这一点上,我知道我忽略了一些非常明显的事情或做了一些非常愚蠢的事情
提前谢谢
**** Hidden Message ***** 这里是#039;这是Frank Oquendo的一段代码#039;s VLAX。处理设置lisp符号的CLS。请注意,它与您的不同之处在于,他使用lisp函数来转换数据类型
Public Sub SetLispSymbol(symbolName As String, value)
Dim sym As Object, ret, symValue
symValue = value
Set sym = VLF.Item("read").funcall(symbolName)
ret = VLF.Item("set").funcall(sym, symValue)
EvalLispExpression "(defun translate-variant (data) (cond ((= (type data) 'list) (mapcar 'translate-variant data)) ((= (type data) 'variant) (translate-variant (vlax-variant-value data))) ((= (type data) 'safearray) (mapcar 'translate-variant (vlax-safearray->list data))) (t data)))"
EvalLispExpression "(setq " & symbolName & "(translate-variant " & symbolName & "))"
EvalLispExpression "(setq translate-variant nil)"
End Sub
我使用;弗兰克#039;s级,it#039;它易于使用,可以满足您的需要
(2006年的我,2007年的我还没有试过);曲线cls v1.3(上次更新于2001年12月18日)
&039;版权所有2000年,2001年,Frank Oquendo 谢谢大家
我很感激这些提示。我仍在努力解决这个问题。我已经尝试了曲线类并取得了一些成功。对于我的测试图形来说,它似乎工作得很好,在坐标值小于10000的坐标处只有几个Aecc点。我在一个更大的图形上尝试了它,在状态平面坐标为10000000(x)和3000000(y)的大约300个点上,它在不同的点上给出了错误消息,没有一致性。如果我将这些点转换为小于10000的值,那么对于300个点,它可以完美地工作。问题是用科学记数法表示某些值,因为我一直得到错误代码13吗
无论如何,我会继续玩下去。再次感谢您的帮助!!! 当您离原点和vba太远时,Cad本身存在偏移问题;s低;精度不#039;没什么帮助
如果你只想要最近的点,我会发布一些我更喜欢的代码和数学。
页:
[1]