乐筑天下

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

[编程交流] 如何向ssget添加选项?

[复制链接]

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 08:51:26 | 显示全部楼层 |阅读模式
嗨,朋友们,
可以将(initget)函数定义的行为添加到(ssget)中吗
(正如大多数人所知,其他输入函数也可以使用,例如(entsel)、(entselp)、(getpoint),…)
 
例如:
 
谢谢你的帮助
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:58:24 | 显示全部楼层
不能将initget函数与ssget一起使用。
 
只有以下函数可以与initget一起使用:
 
getint,getreal,getdist,getangle,getorient,getpoint,getcorner,getkword,entsel,nentsel,nentselp。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:02:56 | 显示全部楼层
尝试以下操作:
 
  1. (defun c:test (/ Prcd gr Npt Mode Par )
  2.      (prompt "\nSelect objects, or [by Style/by Layer/by Color/...]:")
  3.     (while (null Prcd)
  4.       (setq gr (grread nil 4 2) Mode (car gr))
  5.        (cond
  6.           ((= 3 Mode)
  7.          (princ "\nSelect Mode")
  8.          (setq Objects (ssget "_C" (cadr gr)
  9.               (setq Npt (Getcorner (cadr gr) "\nOther Corner:"))))
  10.          (foreach mp (vl-remove-if 'listp
  11.                        (mapcar 'cadr(ssnamex Objects)))
  12.           (redraw mp 3))
  13.          (setq Prcd T))
  14.        ((and (= 2 Mode)
  15.              (setq Par (member (cAdr gr) '(67 76 83 99 108 115))))
  16.           (princ (strcat "\nYou Pressed " (chr (car Par))))
  17.          (setq Prcd T))
  18.      )
  19.       )
  20.      (princ)
  21.      )

 
剩下的留给你想象
 
HTH公司
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 09:05:21 | 显示全部楼层
也试试这个。
 
  1. (defun C:TEST ()
  2.    (setq SEL (ssadd))
  3.    (initget "S L C")
  4.    (setq a (entsel "\nSelect objects, or by [style/Layer/Color]...:"))
  5.    (if (= a "S")
  6.        (progn
  7.            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8.        )
  9.    )
  10.    (if (= a "L")
  11.        (progn
  12.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  13.        )
  14.    )
  15.    (if (= a "S")
  16.        (progn
  17.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  18.        )
  19.    )   
  20.    (if (and (/= a nil)(/= a "S")(/= a "L")(/= a "C"))
  21.        (progn
  22.            (setq SEL (ssadd (car a) SEL))
  23.            (command "_select" SEL pause)
  24.            (setq SEL (ssget "_P"))
  25.        )     
  26.    )
  27.    (if (= a nil)
  28.        (progn
  29.            (command "_select" "_BOX" (cadr (grread T)) pause)
  30.            (setq SEL (ssget "_P"))
  31.        )
  32.    )
  33. )
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 09:08:42 | 显示全部楼层
 
你说得对,李,
但我正在寻找一种方法来为ssget模拟initget。
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 09:13:15 | 显示全部楼层
感谢您的回复,但没有隐含窗口等选项。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:18:37 | 显示全部楼层
 
附件是我的一个旧程序,试图创建与UCS对齐的ssget函数,可以修改它以添加额外选项。
 

UCS ssget。lsp
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 09:23:21 | 显示全部楼层
 
 
你想要鸡蛋和母鸡。
 
 
  1. (defun C:TEST (/ a b option)
  2.    (setq SEL (ssadd))
  3.    (initget "? ST LA CO W L C B ALL F WP CP G A R M P U AU SI SU O")
  4.    (setq a (entsel "\nSelect objects, or by [sTyle/LAyer/COlor]...:  "))
  5.    (if (= a "?")
  6.        (progn
  7.            (setq b nil)
  8.            (while (not (member b (list "W" "L" "C" "B" "BOX" "ALL" "F" "WP" "CP"
  9.                      "G" "A" "R" "M" "P" "U" "AU" "SI" "SU" "O")))
  10.                (prompt "Expects a point or" )
  11.                (prompt "\nWindow/Last/Crossing/BOX/ALL/Fence/WPolygon/")
  12.                (prompt "CPolygon/Group/Add/Remove/Multiple/Previous/")
  13.                (prompt "Undo/AUto/SIngle/SUbobject/Object ")
  14.                (prompt "\nSelect objects:" )
  15.                (setq b (strcase (getstring)))
  16.                (if (= b nil) (exit))
  17.            )
  18.            (setq a b)
  19.        )
  20.    )
  21.    (if (= a "ST")
  22.        (progn
  23.            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  24.        )
  25.    )
  26.    (if (= a "LA")
  27.        (progn
  28.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  29.        )
  30.    )
  31.    (if (= a "CO")
  32.        (progn
  33.             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  34.        )
  35.    )   
  36.    (if (and
  37.            (/= a nil)
  38.            (not
  39.                (member a
  40.                    (list "?" "ST" "LA" "CO" "W" "L" "C" "B"
  41.                          "BOX" "ALL" "F" "WP" "CP" "G" "A"
  42.                          "R" "M" "P" "U" "AU" "SI" "SU" "O")
  43.                )
  44.            )
  45.        )
  46.        (progn
  47.            (setq SEL (ssadd (car a) SEL))
  48.            (command "_select" SEL pause)
  49.            (setq SEL (ssget "_P"))
  50.        )     
  51.    )
  52.    (if (= a nil)
  53.        (progn
  54.            (command "_select" "_BOX" (cadr (grread T)) pause)
  55.            (setq SEL (ssget "_P"))
  56.        )
  57.    )
  58.    (if (member a (list "W" "L" "C" "B" "BOX" "ALL" "F" "WP" "CP"
  59.                      "G" "A" "R" "M" "P" "U" "AU" "SI" "SU" "O"))
  60.        (progn
  61.            (setq option (strcat "_" a))
  62.            (command "_select" option pause)
  63.            (setq SEL (ssget "_P"))
  64.        )     
  65.    )
  66. )
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 09:27:07 | 显示全部楼层
 
很好,李。你的大脑是一个宝藏,非常感谢
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 09:29:28 | 显示全部楼层
GP_,非常感谢。你的代码很有帮助
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:31 , Processed in 0.544540 second(s), 72 queries .

© 2020-2025 乐筑天下

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