乐筑天下

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

[编程交流] 选择相似项

[复制链接]

40

主题

92

帖子

52

银币

后起之秀

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

铜币
200
发表于 2022-7-6 07:51:43 | 显示全部楼层 |阅读模式
你好
我需要为((水平线、多段线或垂直线、多段线)选择类似的LISP。plz查找示例附件。
我感谢您的快速回复
文基
085146w0k9lpv8r8cq3lw9.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:06:23 | 显示全部楼层
这是我的版本,可以根据用户的选择选择垂直或水平线/多段线。
 
  1. (defun c:Test (/ sel ss go)
  2. (vl-load-com)
  3. ;;;;  *******        Tharwat 14. June . 2012     ******* ;;;;;;
  4. ;;;;  This peice of code to select Horizontal or Vertical ;;;;;
  5. ;;;;  lines or Polylines according to user's choose       ;;;;;
  6. (defun Catch (ang1 ang2 ss)
  7.    ((lambda (l / i n sn e x p1 p2)
  8.       (while (setq sn (ssname ss (setq l (1+ l))))
  9.         (setq e (entget sn))
  10.         (if (wcmatch (cdr (assoc 0 (entget sn))) "*POLYLINE")
  11.           (progn
  12.             (setq i 0
  13.                   n 0
  14.             )
  15.             (repeat (setq x (fix (vlax-curve-getendparam sn)))
  16.               (if
  17.                 (or
  18.                   (equal
  19.                     (angle (setq p1 (vlax-curve-getpointatparam sn i))
  20.                            (setq p2 (vlax-curve-getpointatparam
  21.                                       sn
  22.                                       (setq i (1+ i))
  23.                                     )
  24.                            )
  25.                     )
  26.                     ang1
  27.                   )
  28.                   (equal (angle p1 p2) ang2)
  29.                 )
  30.                  (setq n (1+ n))
  31.               )
  32.             )
  33.             (if (eq n x)
  34.               (ssadd sn sel)
  35.             )
  36.           )
  37.           (if
  38.             (or (eq (angle (cdr (assoc 10 e)) (cdr (assoc 11 e))) ang1)
  39.                 (eq (angle (cdr (assoc 10 e)) (cdr (assoc 11 e))) ang2)
  40.             )
  41.              (ssadd sn sel)
  42.           )
  43.         )
  44.       )
  45.     )
  46.      -1
  47.    )
  48.    (princ)
  49. )
  50. (if
  51.    (and (setq sel (ssadd))
  52.         (progn
  53.           (initget "Horizontal Vertical")
  54.           (setq go (getkword "\n Choose one [Horizonta/Vertical] :"))
  55.         )
  56.         (setq ss (ssget "_:L" '((0 . "*POLYLINE,LINE"))))
  57.    )
  58.     (if (eq go "Horizontal")
  59.       (Catch 0.0 pi ss)
  60.       (Catch (/ pi 2.) (* pi 1.5) ss)
  61.     )
  62. )
  63. (if (> (sslength sel) 0)
  64.    (sssetfirst nil sel)
  65. )
  66. (princ)
  67. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:19:56 | 显示全部楼层
也许我错过了什么。。。鉴于上面发布的示例屏幕截图,为什么SELECTSIMILAR命令不起作用?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:25:19 | 显示全部楼层
 
首先,OP使用cad 2006,新命令在cad 2012之前不可用,
第二个问题是,角度选项在新的命令调用中不可用。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:39:20 | 显示全部楼层
 
Tharwat,SELECTSIMILAR命令自+/-2006年就出现了;我用它与土地桌面(LDD)2006年。。。诚然,LDD具有Vanilla所没有的功能。
 
其次,您认为缺少垂直或水平选择选项是命令设计中的一个缺陷,而事实上它有更大的用途。。。使用户有义务遵守“良好”的起草实践,在这种情况下,不需要选择此选项(IMHO)。。。相反,我们可以依靠其他层命令来实现他们的目标。
 
回复

使用道具 举报

40

主题

92

帖子

52

银币

后起之秀

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

铜币
200
发表于 2022-7-6 08:48:44 | 显示全部楼层
谢谢你为我花了很多时间;伟大的作品
 
文基
 
 
 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:59:08 | 显示全部楼层
 
 
很高兴听到这个消息。
 
不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:31 , Processed in 1.371657 second(s), 69 queries .

© 2020-2025 乐筑天下

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