乐筑天下

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

[编程交流] 零选择集的条件

[复制链接]

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 22:59:23 | 显示全部楼层 |阅读模式
;; 如果可以获得选择集(txt),并且它包含多个项目;;然后我们将使用
  1. (if (< 1 (sslength txt))
  2. (do this)
  3. )

 
;;如果选择集(txt)没有任何实体怎么办。
 
  1. (if (= nil (sslength txt))  ;;but it is not working plz suggest right way
  2. (do this)
  3. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:05:29 | 显示全部楼层
试试这个
 
  1. (if (/= txt nil)
  2. (Progn ; if more than 1 line of code
  3. (do this)
  4. )
  5. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:07:47 | 显示全部楼层
看一下李的这篇文章,他在检查文章时出错了http://www.cadtutor.net/forum/showthread.php?86575-靠近文本实体的点绘制
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:11:26 | 显示全部楼层
你想做什么?并张贴完整的示例,导致sslength函数出现条件通常不是正确的方法。
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 23:14:52 | 显示全部楼层
如果闭合多段线包含多个文本,则此代码将选择闭合多段线。
但是,如果我想选择没有文本的闭合多段线,内部是多行文字。
 
  1. (defun c:mtpl ( / app ent grp idx lst mni mxa out sel tmp txt )
  2.    (if (setq sel (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
  3.        (progn
  4.            (repeat (setq idx (sslength sel))
  5.                (setq ent (ssname sel (setq idx (1- idx)))
  6.                      lst (cons (cons ent (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget ent)))) lst)
  7.                )
  8.            )
  9.            (setq tmp (apply 'append (mapcar 'cdr lst))
  10.                  mni (car tmp)
  11.                  mxa (car tmp)
  12.            )
  13.            (foreach pnt (cdr tmp)
  14.                (setq mni (mapcar 'min mni pnt)
  15.                      mxa (mapcar 'max mxa pnt)
  16.                )
  17.            )
  18.            (setq app (vlax-get-acad-object)
  19.                  out (ssadd)
  20.            )
  21.            (vla-zoomwindow app (vlax-3D-point mni) (vlax-3D-point mxa))
  22.            (foreach grp lst
  23.                (if
  24.                    (and
  25.                        (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))
  26.                        (< 1 (sslength txt))     
  27.                    )
  28.                    (ssadd (car grp) out)
  29.                )
  30.               (setq txt nil)
  31.                (gc)
  32.            )
  33.            (sssetfirst nil out)
  34.        )
  35.    )
  36.    (princ)
  37. )
  38. (vl-load-com) (princ)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:16:02 | 显示全部楼层
 
 
更换此零件。
 
  1. (foreach grp lst
  2.                (if (not (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))    )
  3.                    (ssadd (car grp) out)
  4.                )
  5.               (setq txt nil)
  6.                (gc)
  7.            )
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 23:19:41 | 显示全部楼层
现在,它正在选择所有多段线
  1. (defun c:mtpl ( / app ent grp idx lst mni mxa out sel tmp txt )
  2.    (if (setq sel (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
  3.        (progn
  4.            (repeat (setq idx (sslength sel))
  5.                (setq ent (ssname sel (setq idx (1- idx)))
  6.                      lst (cons (cons ent (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget ent)))) lst)
  7.                )
  8.            )
  9.            (setq tmp (apply 'append (mapcar 'cdr lst))
  10.                  mni (car tmp)
  11.                  mxa (car tmp)
  12.            )
  13.            (foreach pnt (cdr tmp)
  14.                (setq mni (mapcar 'min mni pnt)
  15.                      mxa (mapcar 'max mxa pnt)
  16.                )
  17.            )
  18.            (setq app (vlax-get-acad-object)
  19.                  out (ssadd)
  20.            )
  21.            (vla-zoomwindow app (vlax-3D-point mni) (vlax-3D-point mxa))
  22.            (foreach grp lst
  23.                (if (not (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))
  24.                        
  25.                    )
  26.                    (ssadd (car grp) out)
  27.                )
  28.               (setq txt nil)
  29.                (gc)
  30.            )
  31.            (sssetfirst nil out)
  32.        )
  33.    )
  34.    (princ)
  35. )
  36. (vl-load-com) (princ)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:23:13 | 显示全部楼层
 
 
首先确定你的目标,然后发布你的问题
回复

使用道具 举报

27

主题

72

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 23:25:38 | 显示全部楼层
我只喜欢选择内部没有文本的多段线。就是这样。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:30:10 | 显示全部楼层
因此,我对例程的修改和您对例程的重新安排应该在第6和第7篇文章中完成,否则请上传您正在测试代码的图形。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:03 , Processed in 0.539387 second(s), 72 queries .

© 2020-2025 乐筑天下

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