乐筑天下

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

[编程交流] 多段线以外的对象。恳求

[复制链接]

43

主题

136

帖子

92

银币

后起之秀

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

铜币
217
发表于 2022-7-6 07:47:47 | 显示全部楼层 |阅读模式
大家好,
 
由于我是编程新手,我的技能太低,无法解决我的问题,经过多次尝试(没有成功),我来到了大家面前。给我一个提示。
 
我画了一条多段线(路线),旁边有圆圈(位置)。
 
我只是想知道如何对这些圆进行排序,就像它是多段线的右侧(正)和左侧(负)一样。
 
附上图纸是一个参考了解。
样品图纸
请给我一个解决方案。
 
提前谢谢。
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 08:08:13 | 显示全部楼层
这可能是你的开始
  1. (defun C:TEST ( / cross_prod ss1 ss2 e1 e2 p1 p2 i v tg)
  2. (defun cross_prod (a b)
  3. (list (- (* (cadr a) (caddr b)) (* (caddr a) (cadr b)))
  4.    (- (* (caddr a) (car b)) (* (car a) (caddr b)))
  5.    (- (* (car a) (cadr b)) (* (cadr a) (car b)))
  6.    )
  7. )
  8. (if
  9.    (and
  10.      (setq ss1 (ssget ":E:S" '((0 . "LWPOLYLINE,SPLINE"))))
  11.      (setq ss2 (ssget '((0 . "CIRCLE"))))
  12.      )
  13.    (progn
  14.      (setq e1 (ssname ss1 0))
  15.      (repeat (setq i (sslength ss2))
  16.        (setq e2 (ssname ss2 (setq i (1- i)))
  17.              p2 (cdr (assoc 10 (entget e2)))
  18.              p1 (vlax-curve-GetClosestPointTo e1 p2)
  19.              v (mapcar '- p1 p2)
  20.              tg (vlax-curve-GetFirstDeriv e1 (vlax-curve-GetParamAtPoint e1 p1))
  21.              )
  22.          (vla-put-Color (vlax-ename->vla-object e2) (if (minusp (caddr (cross_prod v tg))) acRed acYellow))
  23.        )
  24.      )
  25.    )
  26. (princ)
  27. )
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

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

铜币
217
发表于 2022-7-6 08:44:29 | 显示全部楼层
非常感谢Stefan BMR。
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-6 08:55:16 | 显示全部楼层
不客气。
FWIW也适用于直线、圆、圆弧和椭圆
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:48 , Processed in 0.780248 second(s), 60 queries .

© 2020-2025 乐筑天下

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