乐筑天下

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

[编程交流] 选择集-单独

[复制链接]

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:52:42 | 显示全部楼层 |阅读模式
我使用两种方法:
1.(setq ss1(ssget’((0。“点”))和(setq ss2(ssget’((0。“文本”))创建2个单独的选择集
2.(setq ss1(ssget'((0。“点,文本”)),然后我使用repeat。。。制作两个列表,一个用于文本,一个用于点。
是否可以仅使用1次ssget函数生成2个选择集?
我的问题似乎很愚蠢。。。很抱歉
谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:59:56 | 显示全部楼层
好吧,你的第二选择是你完成这项任务的唯一方式。无论如何。最好在重复循环内使用IF/COND处理对象,以消除创建另一个选择集的需要。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:04:16 | 显示全部楼层
  1. [font=monospace](defun _GetSelPoints  (/ *error*)
  2. (defun *error*  (msg)
  3.    (and oldNomutt (setvar 'nomutt oldNomutt))
  4.    (cond ((not msg))                                                   ; Normal exit
  5.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  6.          ((princ (strcat "\n** Error: " msg " ** "))))                 ; Fatal error, display it
  7.    (if result result (princ)))
  8. ((lambda (oldNomutt / startPoint endPoint result)
  9.     (if (and (not (prompt "\nSelect objects: "))
  10.              (setvar 'nomutt 1)
  11.              (not (initget 1024))
  12.              (setq startPoint (getpoint))
  13.              (not (initget 1056))
  14.              (setq endPoint (getcorner startPoint)))
  15.       (progn (setq result (list startPoint endPoint)) (*error* nil))
  16.       (*error* "Nothing selected")))
  17.    (getvar 'nomutt)))

 
林奇:http://www.theswamp.org/index.php?topic=41872.msg469927#msg469927
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:09:39 | 显示全部楼层
请给我一点帮助。。。对于新的autolisp用户
 
似乎是我在寻找的。请举例说明如何将您的函数与ssget一起使用。。。要制作两组点和文本的选择集,只需选择一次对象——我的意思是,一个“矩形”。
 
  1. <li style="">([url="http://www.theswamp.org/%7Ejohn/avlisp/#defun"][color=#4D4DFF][b]defun[/b][/color][/url] _GetSelPoints  ([color=#008000]/[/color] [color=#4D4DFF][i]*error*[/i][/color])
  2. <li style="">
  3. <li style="">  ([url="http://www.theswamp.org/%7Ejohn/avlisp/#defun"][color=#4D4DFF][b]defun[/b][/color][/url] [color=#4D4DFF][i]*error*[/i][/color]  (msg)
  4. <li style="">    ([url="http://www.theswamp.org/%7Ejohn/avlisp/#and"][color=#4D4DFF][b]and[/b][/color][/url] oldNomutt ([url="http://www.theswamp.org/%7Ejohn/avlisp/#setvar"][color=#4D4DFF][b]setvar[/b][/color][/url] 'nomutt oldNomutt))
  5. <li style="">    ([url="http://www.theswamp.org/%7Ejohn/avlisp/#cond"][color=#4D4DFF][b]cond[/b][/color][/url] (([url="http://www.theswamp.org/%7Ejohn/avlisp/#not"][color=#4D4DFF][b]not[/b][/color][/url] msg))                                                   [color=#666666][i]; Normal exit[/i][/color]
  6. <li style="">          (([url="http://www.theswamp.org/%7Ejohn/avlisp/#member"][color=#4D4DFF][b]member[/b][/color][/url] msg '([color=#FF0000]"Function cancelled"[/color] [color=#FF0000]"quit / exit abort"[/color])))    [color=#666666][i]; <esc> or (quit)[/i][/color]
  7. <li style="">          (([url="http://www.theswamp.org/%7Ejohn/avlisp/#princ"][color=#4D4DFF][b]princ[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#strcat"][color=#4D4DFF][b]strcat[/b][/color][/url] [color=#FF0000]"[color=#000099][b]\n[/b][/color]** Error: "[/color] msg [color=#FF0000]" ** "[/color]))))                 [color=#666666][i]; Fatal error, display it[/i][/color]
  8. <li style="">    ([url="http://www.theswamp.org/%7Ejohn/avlisp/#if"][color=#4D4DFF][b]if[/b][/color][/url] result result ([url="http://www.theswamp.org/%7Ejohn/avlisp/#princ"][color=#4D4DFF][b]princ[/b][/color][/url])))
  9. <li style="">
  10. <li style="">  (([url="http://www.theswamp.org/%7Ejohn/avlisp/#lambda"][color=#4D4DFF][b]lambda[/b][/color][/url] (oldNomutt [color=#008000]/[/color] startPoint endPoint result)
  11. <li style="">     ([url="http://www.theswamp.org/%7Ejohn/avlisp/#if"][color=#4D4DFF][b]if[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#and"][color=#4D4DFF][b]and[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#not"][color=#4D4DFF][b]not[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#prompt"][color=#4D4DFF][b]prompt[/b][/color][/url] [color=#FF0000]"[color=#000099][b]\n[/b][/color]Select objects: "[/color]))
  12. <li style="">              ([url="http://www.theswamp.org/%7Ejohn/avlisp/#setvar"][color=#4D4DFF][b]setvar[/b][/color][/url] 'nomutt [color=#0000dd]1[/color])
  13. <li style="">              ([url="http://www.theswamp.org/%7Ejohn/avlisp/#not"][color=#4D4DFF][b]not[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#initget"][color=#4D4DFF][b]initget[/b][/color][/url] [color=#0000dd]1024[/color]))
  14. <li style="">              ([url="http://www.theswamp.org/%7Ejohn/avlisp/#setq"][color=#4D4DFF][b]setq[/b][/color][/url] startPoint ([url="http://www.theswamp.org/%7Ejohn/avlisp/#getpoint"][color=#4D4DFF][b]getpoint[/b][/color][/url]))
  15. <li style="">              ([url="http://www.theswamp.org/%7Ejohn/avlisp/#not"][color=#4D4DFF][b]not[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#initget"][color=#4D4DFF][b]initget[/b][/color][/url] [color=#0000dd]1056[/color]))
  16. <li style="">              ([url="http://www.theswamp.org/%7Ejohn/avlisp/#setq"][color=#4D4DFF][b]setq[/b][/color][/url] endPoint ([url="http://www.theswamp.org/%7Ejohn/avlisp/#getcorner"][color=#4D4DFF][b]getcorner[/b][/color][/url] startPoint)))
  17. <li style="">       ([url="http://www.theswamp.org/%7Ejohn/avlisp/#progn"][color=#4D4DFF][b]progn[/b][/color][/url] ([url="http://www.theswamp.org/%7Ejohn/avlisp/#setq"][color=#4D4DFF][b]setq[/b][/color][/url] result ([url="http://www.theswamp.org/%7Ejohn/avlisp/#list"][color=#4D4DFF][b]list[/b][/color][/url] startPoint endPoint)) ([color=#4D4DFF][i]*error*[/i][/color] [color=#4D4DFF][i]nil[/i][/color]))
  18. <li style="">       ([color=#4D4DFF][i]*error*[/i][/color] [color=#FF0000]"Nothing selected"[/color])))
  19. <li style="">    ([url="http://www.theswamp.org/%7Ejohn/avlisp/#getvar"][color=#4D4DFF][b]getvar[/b][/color][/url] 'nomutt)))
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:15:47 | 显示全部楼层
不管好坏
  1. (defun c:sepsel ()
  2.       (setq textsel  (ssadd)  PointSel (ssadd)
  3.              ss       (ssget '((0 . "POINT,TEXT"))))
  4.             (while (setq e (ssname ss 0))
  5.   (if (eq (cdr (assoc 0 (entget e))) "POINT")
  6.    (ssadd e PointSel)(ssadd e textsel))
  7.                      (ssdel e ss)))
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:16:54 | 显示全部楼层
@布拉姆斯:你用的是什么编辑器?似乎您在AutoLISP代码中粘贴了一些控件标记。
还是你试着给台词编号?!?
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:20:31 | 显示全部楼层
我是从这里抄来的http://www.theswamp.org/index.php?to...9927#msg469927
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:27:18 | 显示全部楼层
很好,Pbe!
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:34:05 | 显示全部楼层
 
不客气,
 
IMO致力于将slection一分为二,它还可以处理while/repeat循环中的实体。
 
代码到底是关于什么的?你能和我们分享一下吗,也许有一种更有效的方式来实现你的目标。
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:35:57 | 显示全部楼层
我可以分享我的“杰作”,没问题。。。
该代码必须将点和文本移动到正确的高度。我选择点和文本-与点具有相同x和y的文本。。。应该是成对的。如果文本是209.324,那么我将在该标高处移动该点,并且我将移动该点-该点在该标高处具有相同的x值和y值。是关于土地测量师的“杰作”-点的高程错误。如果我选择成对的点和文本(相同的x和y),我的代码似乎工作正常,但当我选择不成对的文本和点时,会出现一些错误。。。我不知道为什么-如果可能的话请帮忙。抱歉的代码,看起来很糟糕-仍在工作中。。。。
 
  1. (defun c:pz (/ ldata layer punct)
  2. (princ "\nSELECTEAZA PUNCTELE SI TEXTELE")
  3. (setq ss (ssget '((0 . "POINT,TEXT"))))
  4. (setq i 0)
  5. (repeat (sslength ss)
  6.    (setq ename (ssname ss i))
  7.    (setq data (entget ename))
  8.    (setq entName (cdr (assoc -1 data)))
  9.    (setq Nume (cdr (assoc 0 data)))
  10.    (setq ldata (cons data ldata))
  11.    (setq i (1+ i))
  12. ) ;_ end of repeat
  13. (setq ltest ldata)
  14. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  15. (setq i 0)
  16. (setq listat nil)
  17. (repeat (length ldata)
  18.    (setq entName (cdr (assoc -1 (nth i ldata))))
  19.    (setq Nume (cdr (assoc 0 (nth i ldata))))
  20.    (if    (= Nume "TEXT")
  21.      (progn
  22.    (setq pct (cdr (assoc 10 (nth i ldata))))
  23.    (setq z (atof (cdr (assoc 1 (nth i ldata)))))
  24.    (setq ztext (caddr pct))
  25.    (setq listat (cons (list pct z ztext entName) listat))
  26.      ) ;_ end of progn
  27.    ) ;_ end of if
  28.    (setq i (1+ i))
  29. ) ;_ end of repeat
  30. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  31. (setq i 0)
  32. (setq listap nil)
  33. (repeat (length ldata)
  34.    (setq entName (cdr (assoc -1 (nth i ldata))))
  35.    (setq Nume (cdr (assoc 0 (nth i ldata))))
  36.    (if    (= Nume "POINT")
  37.      (progn
  38.    (setq punct (cdr (assoc 10 (nth i ldata))))
  39.    (setq layer (cdr (assoc 8 (nth i ldata))))
  40.    (setq culoare (cdr (assoc 62 (nth i ldata))))
  41.    (setq listap (cons (list punct layer culoare entName) listap))
  42.      ) ;_ end of progn
  43.    ) ;_ end of if
  44.    (setq i (1+ i))
  45. ) ;_ end of repeat
  46. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  47. (setq listam nil)
  48. (setq listaep nil)
  49. (setq listaet nil)
  50. (setq i 0)
  51. (repeat (length listap)
  52.    (setq text (nth i listat))
  53.    (foreach punct listap
  54.      (if (and (= (car (car text)) (car (car punct)))
  55.           (= (cadr (car text)) (cadr (car punct)))
  56.      ) ;_ end of and
  57.    (setq p    (list
  58.          (list
  59.            (car (car punct))
  60.            (cadr (car punct))
  61.            (cadr text)
  62.          ) ;_ end of list
  63.          (setq la (cadr punct))
  64.          (setq cul (caddr punct))
  65.          (setq entitatep (cadddr punct))
  66.          (setq entitatet (cadddr text))
  67.          (setq pt (car text))
  68.        ) ;_ end of list
  69.    ) ;_ end of setq
  70.      ) ;_ end of if
  71.    ) ;_ end of foreach
  72.    (setq listam (cons p listam))
  73.    (setq listaep (cons entitatep listaep))
  74.    (setq listaet (cons entitatet listaet))
  75.    (setq i (1+ i))
  76. ) ;_ end of repeat
  77. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  78. (setq i 0)
  79. (repeat (length listam)
  80.    (entmake (list (cons 0 "POINT")
  81.           (cons 8 (cadr (nth i listam)))
  82.           (if
  83.             (/= (caddr (nth i listam)) nil)
  84.              (cons 62 (caddr (nth i listam)))
  85.              (cons 62 256)
  86.           ) ;_ end of if
  87.           (cons 10 (car (nth i listam)))
  88.         ) ;_ end of list
  89.    ) ;_ end of entmake
  90. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  91.    (command "_.move"
  92.         (cadddr (cdr (nth i listam)))
  93.         ""
  94.         (setq pti (cadddr (cdr (cdr (nth i listam)))))
  95.         (setq ptf (car (nth i listam)))
  96.         (list
  97.           (car (car (nth i listat)))
  98.           (cadr (car (nth i listat)))
  99.           (cadr (nth i listat))
  100.         ) ;_ end of list
  101.    ) ;_ end of command
  102.    (setq i (1+ i))
  103. ) ;_ end of repeat
  104. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  105. (setq sse (ssadd))
  106. (foreach ent listaep (ssadd ent sse))
  107. (command "erase" sse "")
  108. (princ)
  109. ) ;_ end of defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-15 03:15 , Processed in 3.407267 second(s), 73 queries .

© 2020-2025 乐筑天下

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