乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 49|回复: 19

[编程交流] 帮我开始。

[复制链接]

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 07:48:55 | 显示全部楼层 |阅读模式
大家好,
再次需要帮助。
实际上,我正在尝试编写代码,但没有开始。
我想:
a、 跟踪多段线。i、 e选择多段线并在多段线上的任意位置拾取点,并获得距指定顶点的距离。
b、 如果我在多段线的(右侧或左侧)之外拾取一个点,它也应该给我一个偏移距离。
 
我写了几行,但还是卡住了。
任何有助于我开始的帮助都是值得赞赏的。。。
 
当做
Aaryan公司
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:53:02 | 显示全部楼层
对于项目“a”
  1. (defun c:test ()
  2.        (setvar 'osmode 0)
  3.       (setq a (entsel "\nSelect polyline:"))
  4.        (vlax-curve-getDistAtPoint (car a)
  5.              (vlax-curve-getClosestPointTo (car a) (cadr a))))

 
对于“b”项:
我不知道你的意思。这是否仍然是项目“A”的一部分,如果拾取点不在多段线上,则它将为您提供距最接近多段线的拾取点的距离?
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 07:55:55 | 显示全部楼层
感谢pBe的回复,
 
对于项目“B”,如果拾取点不在多段线上,则应提供从拾取点到多段线上的点的垂直距离。此外,项目“A”将应用于“多段线上的垂直点”。
我希望“B”项清楚。
 
对于项目“A”,我需要这样的东西,但它给我一个距离结束顶点的折线。。
  1. (Defun c:KpInquiry()
  2. (setq Kproute (car (entsel "\nSelect Polyline Route:"))
  3. Kpprop (entget Kproute)
  4. Ppoint (getpoint "\nSpecify Point on polyline:"))
  5. (command "break" Kproute Ppoint ppoint "")
  6. (command "_list" "l" "")
  7. (setq Ppointlen (getvar "perimeter"))
  8. (command "_undo" 2 "")
  9. (princ (strcat "\nKP on this point is:" (rtos Ppointlen 2 3)))
  10. (princ))

 
谢谢和问候
Aaryan公司
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:59:31 | 显示全部楼层
请通过第二个问题检查这是否是您想要的:
  1. (vl-load-com)
  2. (defun c:test2( / thePoly thePoint )
  3. (if (setq thePoly (ssget "_:S" '((0 . "LWPOLYLINE"))))
  4. (while (setq thePoint (getpoint "\nPick a point: "))
  5.   (prompt (strcat "\nDistance is "
  6.                   (rtos (distance thePoint (vlax-curve-getClosestPointTo (ssname thePoly 0) thePoint T))
  7.                         2 5)))
  8. )
  9. )
  10. (princ)
  11. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:03:33 | 显示全部楼层
  1. (defun c:test ()
  2.        (setvar 'osmode 0)
  3.       (setq a (entsel "\nSelect polyline:"))
  4.        (setq dist (vlax-curve-getDistAtPoint (car a)
  5.               (vlax-curve-getClosestPointTo (car a) (cadr a))))
  6.        (princ (strcat "\nKP on this point is: " (rtos dist 2 3)))
  7.      (princ)
  8.      )

 
不知道休息是为了什么。我想撤销的呼吁将“打破”普林线。现在取决于pline的创建方式,结果是主观的
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:07:45 | 显示全部楼层
也许是这个。。
  1. (defun c:test  ()
  2.      (setvar 'osmode 0)
  3.      (setq a (entsel "\nSelect polyline:"))
  4.      (setq dist (vlax-curve-getDistAtParam
  5.                       (car a)
  6.                       (vlax-curve-getParamAtPoint
  7.                             (Car a)
  8.                             (vlax-curve-getClosestPointTo
  9.                                   (car a)
  10.                                   (cadr a)))
  11.                       ))
  12.      (princ (strcat "\nKP on this point is: " (rtos dist 2 3)))
  13.      (princ)
  14.      )

 
给定的距离始终是从起点开始的
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:11:06 | 显示全部楼层
@msasu错误:参数类型错误:2D/3D点:无。
 
@pBe我想用光标拾取一个点(就像我们使用getpoint时),从你的代码中,它是一个小正方形框,因此我无法交叉检查距离。。
 
当做
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:12:26 | 显示全部楼层
 
你没看到吗?(cadr a)是选择多段线时的“点”,而(car a)是ename。把它想象成一对二
 
安尼胡奥
 
  1. (defun c:test  ()
  2.      (setq a (car (entsel "\nSelect polyline:")))
  3.      (setq pt (getpoint "\nPick point:"))
  4.      (setq dist (vlax-curve-getDistAtParam
  5.                       a
  6.                       (vlax-curve-getParamAtPoint
  7.                             a
  8.                             (vlax-curve-getClosestPointTo
  9.                                   a
  10.                                   pt))
  11.                       ))
  12.      (princ (strcat "\nKP on this point is: " (rtos dist 2 3)))
  13.      (princ)
  14.      )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:16:48 | 显示全部楼层
你说得对,我已经编辑了代码来更改变量的名称,但错过了一次-请测试调整后的版本。很抱歉给您带来不便。
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:19:56 | 显示全部楼层
谢谢
@pBe我其实想让你们修改你们的代码,而不是我,因为你们都是大师。。
 
@Mircea谢谢你的帮助
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 21:28 , Processed in 0.492191 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表