乐筑天下

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

[编程交流] 选择符合以下条件的线或线:

[复制链接]

8

主题

11

帖子

3

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:04:09 | 显示全部楼层 |阅读模式
嗨,我需要做一个Lisp程序,将做以下工作,需要一些指导我应该做什么。
 
我希望用户选择一条或多条直线或多段线。
然后lisp应该选择所有相交的线或样条线,直到3-4级(假设有一个包含许多分支的网格)。
然后向用户显示结果(可能还会添加更多分支并再次运行)
最后选择特定类型的所有相交块,显示块的数量,并对这些块的特定属性求和。
 
p、 例如,如果块与直线不相交,但在距离直线1m以内,是否可以为这些程序增加一些公差?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:06:24 | 显示全部楼层
选择对象时只需启动一个选项,即围栏“F”尝试移动F绘制接触对象的临时线。可以使用现有柱网的坐标将其用作围栏点。所以使用ssget,但使用“F”选项。看最后一行代码。
 
  1. ;An example with two pts
  2. (setq ss (ssget "F" (list pt1 pt2))).

 
  1. ; pline co-ords example
  2. ; By Alan H
  3. (defun getcoords (ent)
  4. (vlax-safearray->list
  5.    (vlax-variant-value
  6.      (vlax-get-property
  7.    (vlax-ename->vla-object ent)
  8.    "Coordinates"
  9.      )
  10.    )
  11. )
  12. )
  13. (defun co-ords2xy ()
  14. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  15. (setq len (length co-ords))
  16. (setq numb (/ len 2)) ; even and odd check required
  17. (setq I 0)
  18. (repeat numb
  19. (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
  20. ; odd (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords)(nth (+ I 2) co-ords) ))
  21. (setq co-ordsxy (cons xy co-ordsxy))
  22. (setq I (+ I 2))
  23. )
  24. )
  25. ; program starts here
  26. (setq co-ords (getcoords (car (entsel "\nplease pick pline"))))
  27. (co-ords2xy) ; list of 2d points making pline
  28. ; try this
  29. (setq ss (ssget "F" co-ordsxy))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:02 , Processed in 0.889249 second(s), 56 queries .

© 2020-2025 乐筑天下

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