帮我开始。
大家好,再次需要帮助。
实际上,我正在尝试编写代码,但没有开始。
我想:
a、 跟踪多段线。i、 e选择多段线并在多段线上的任意位置拾取点,并获得距指定顶点的距离。
b、 如果我在多段线的(右侧或左侧)之外拾取一个点,它也应该给我一个偏移距离。
我写了几行,但还是卡住了。
任何有助于我开始的帮助都是值得赞赏的。。。
当做
Aaryan公司 对于项目“a”
(defun c:test ()
(setvar 'osmode 0)
(setq a (entsel "\nSelect polyline:"))
(vlax-curve-getDistAtPoint (car a)
(vlax-curve-getClosestPointTo (car a) (cadr a))))
对于“b”项:
我不知道你的意思。这是否仍然是项目“A”的一部分,如果拾取点不在多段线上,则它将为您提供距最接近多段线的拾取点的距离? 感谢pBe的回复,
对于项目“B”,如果拾取点不在多段线上,则应提供从拾取点到多段线上的点的垂直距离。此外,项目“A”将应用于“多段线上的垂直点”。
我希望“B”项清楚。
对于项目“A”,我需要这样的东西,但它给我一个距离结束顶点的折线。。
(Defun c:KpInquiry()
(setq Kproute (car (entsel "\nSelect Polyline Route:"))
Kpprop (entget Kproute)
Ppoint (getpoint "\nSpecify Point on polyline:"))
(command "break" Kproute Ppoint ppoint "")
(command "_list" "l" "")
(setq Ppointlen (getvar "perimeter"))
(command "_undo" 2 "")
(princ (strcat "\nKP on this point is:" (rtos Ppointlen 2 3)))
(princ))
谢谢和问候
Aaryan公司 请通过第二个问题检查这是否是您想要的:
(vl-load-com)
(defun c:test2( / thePoly thePoint )
(if (setq thePoly (ssget "_:S" '((0 . "LWPOLYLINE"))))
(while (setq thePoint (getpoint "\nPick a point: "))
(prompt (strcat "\nDistance is "
(rtos (distance thePoint (vlax-curve-getClosestPointTo (ssname thePoly 0) thePoint T))
2 5)))
)
)
(princ)
) (defun c:test ()
(setvar 'osmode 0)
(setq a (entsel "\nSelect polyline:"))
(setq dist (vlax-curve-getDistAtPoint (car a)
(vlax-curve-getClosestPointTo (car a) (cadr a))))
(princ (strcat "\nKP on this point is: " (rtos dist 2 3)))
(princ)
)
不知道休息是为了什么。我想撤销的呼吁将“打破”普林线。现在取决于pline的创建方式,结果是主观的 也许是这个。。
(defun c:test()
(setvar 'osmode 0)
(setq a (entsel "\nSelect polyline:"))
(setq dist (vlax-curve-getDistAtParam
(car a)
(vlax-curve-getParamAtPoint
(Car a)
(vlax-curve-getClosestPointTo
(car a)
(cadr a)))
))
(princ (strcat "\nKP on this point is: " (rtos dist 2 3)))
(princ)
)
给定的距离始终是从起点开始的 @msasu错误:参数类型错误:2D/3D点:无。
@pBe我想用光标拾取一个点(就像我们使用getpoint时),从你的代码中,它是一个小正方形框,因此我无法交叉检查距离。。
当做
你没看到吗?(cadr a)是选择多段线时的“点”,而(car a)是ename。把它想象成一对二
安尼胡奥
(defun c:test()
(setq a (car (entsel "\nSelect polyline:")))
(setq pt (getpoint "\nPick point:"))
(setq dist (vlax-curve-getDistAtParam
a
(vlax-curve-getParamAtPoint
a
(vlax-curve-getClosestPointTo
a
pt))
))
(princ (strcat "\nKP on this point is: " (rtos dist 2 3)))
(princ)
) 你说得对,我已经编辑了代码来更改变量的名称,但错过了一次-请测试调整后的版本。很抱歉给您带来不便。 谢谢
@pBe我其实想让你们修改你们的代码,而不是我,因为你们都是大师。。
@Mircea谢谢你的帮助
页:
[1]
2