乐筑天下

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

[编程交流] 通过lisp选择上一个组

[复制链接]

22

主题

74

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-5 16:38:51 | 显示全部楼层 |阅读模式
大家好。
 
这个lisp(附加的一个)可以绘制样条线,选择其中/交叉的对象,并删除用于选择的样条线。
 
在这种情况下,我需要在样条线内重新选择以前选择的实体,然后从这些对象创建组。。
 
但现在我需要选择上一组。。如果我在命令行中使用GROUP命令,这是可能的,但通过lisp执行这项操作对我来说是有问题的
 
你知道怎么做吗?
 
我感谢你的快速反应和你花时间帮助我。谢谢
套索选择测试。lsp
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 17:12:21 | 显示全部楼层
你好。
 
有时,通过直接发布代码(当然是在代码标签之间,以避免众神和终结者的愤怒…)可以获得更多视图而不是附加它,强制用户登录以实际查看它。
 
因此,如果我理解正确的话,您试图实现的唯一一件事就是删除样条曲线,并最终得到最初由lisp进行的选择。由于在lisp中已经有一个包含样条曲线的var(e),只需添加我添加的绿色线,在选择并返回之前删除样条曲线,就可以轻松实现。那里不需要额外里程!
还有一点需要注意的是:一个lisp例程一旦执行,就会更改设置,而在最后又不恢复设置,这可能会让人恼火。最佳实践:查看并将其原始值存储在变量中,根据需要更改var,然后使用创建的变量中的原始值将其更改回来。(见添加的红色代码)。
 
  1. ;;; Make Lasso Selection (draw spline and Select Objects Within/Crossing it)
  2. ;;; Special thanks to Alan J. Thompson
  3. (defun c:SWC (/ _pac add ss i e temp it o a b pts tempC i3 ec)
  4. ;; Select Objects Within/Crossing Curve
  5. ;; Alan J. Thompson, 03.31.11
  6. ;; Slightly modified by Igal Averbuh 2017 (added option for splines)
  7. ;; Slightly modified by Jef! 2017 (erased spline + osmode restoration)
  8. (vl-load-com)
  9. (defun _pac (e / l v d lst)
  10.    (setq d (- (setq v (/ (setq l (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))) 100.))))
  11.    (while (< (setq d (+ d v)) l)
  12.      (setq lst (cons (vlax-curve-getPointAtDist e d) lst))
  13.    )
  14. )
  15. (initget 0 "Crossing Within")
  16. (setq *SWC:Opt*
  17.         (cond ((getkword (strcat "\nSpecify selection method witin curve [Crossing/Within] <"
  18.                                  (cond (*SWC:Opt*)
  19.                                        ((setq *SWC:Opt* "Crossing"))
  20.                                  )
  21.                                  ">: "
  22.                          )
  23.                )
  24.               )
  25.               (*SWC:Opt*)
  26.         )
  27. )
  28. (princ "\nSelect closed curves to select object(s) within: ")
  29. (if (setq add (ssadd)
  30.            ss  (ssget "L"
  31.                )
  32.      )
  33.    (progn (repeat (setq i (sslength ss))
  34.             (if (setq temp (ssget "_WP" (_pac (setq e (ssname ss (setq i (1- i)))))))
  35.               (repeat (setq i2 (sslength temp)) (ssadd (ssname temp (setq i2 (1- i2))) add))
  36.             )
  37.             (if (eq *SWC:Opt* "Crossing")
  38.               (progn (vla-getboundingbox (setq o (vlax-ename->vla-object e)) 'a 'b)
  39.                      (setq pts (mapcar 'vlax-safearray->list (list a b)))
  40.                      (if (setq tempC (ssget "_C"
  41.                                             (list (caar pts) (cadar pts) 0.)
  42.                                             (list (caadr pts) (cadadr pts) 0.)
  43.                                      )
  44.                          )
  45.                        (repeat (setq i3 (sslength tempC))
  46.                          (if (vlax-invoke
  47.                                o
  48.                                'Intersectwith
  49.                                (vlax-ename->vla-object (setq ec (ssname tempC (setq i3 (1- i3)))))
  50.                                acExtendNone
  51.                              )
  52.                            (ssadd ec add)
  53.                          )
  54.                        )
  55.                      )
  56.               )
  57.             )
  58.           )
  59.           [b][color=green](vla-delete (vlax-ename->vla-object e))[/color][/b]
  60.           (sssetfirst nil add)
  61.           (ssget "_I")
  62.    )
  63. )
  64. (princ)
  65. )
  66. (defun C:LAT ( / [b][color=red]oldosmode[/color][/b] )
  67. [b][color=red](setq oldosmode (getvar 'osmode))[/color][/b]
  68. (setvar "osmode" 16384)
  69. (command "_.spline")
  70. (while (> (getvar "CmdActive") 0)
  71.    (command pause)
  72. )
  73. (c:swc)
  74. [b][color=red](if oldosmode
  75.      (setvar 'osmode oldosmode)
  76. )[/color][/b]
  77. (princ)
  78. )

 
干杯
回复

使用道具 举报

22

主题

74

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
125
发表于 2022-7-5 17:37:46 | 显示全部楼层
谢谢你,杰夫!你的笔记和方法
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 17:47:08 | 显示全部楼层
不客气!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 14:01 , Processed in 0.531010 second(s), 71 queries .

© 2020-2025 乐筑天下

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