subodh_gis 发表于 2022-7-5 22:59:23

零选择集的条件

;; 如果可以获得选择集(txt),并且它包含多个项目;;然后我们将使用

(if (< 1 (sslength txt))

(do this)

)

 
;;如果选择集(txt)没有任何实体怎么办。
 

(if (= nil (sslength txt));;but it is not working plz suggest right way

(do this)

)

BIGAL 发表于 2022-7-5 23:05:29

试试这个
 
(if (/= txt nil)
(Progn ; if more than 1 line of code
(do this)
)
)

BIGAL 发表于 2022-7-5 23:07:47

看一下李的这篇文章,他在检查文章时出错了http://www.cadtutor.net/forum/showthread.php?86575-靠近文本实体的点绘制

Tharwat 发表于 2022-7-5 23:11:26

你想做什么?并张贴完整的示例,导致sslength函数出现条件通常不是正确的方法。

subodh_gis 发表于 2022-7-5 23:14:52

如果闭合多段线包含多个文本,则此代码将选择闭合多段线。
但是,如果我想选择没有文本的闭合多段线,内部是多行文字。
 

(defun c:mtpl ( / app ent grp idx lst mni mxa out sel tmp txt )
   (if (setq sel (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
       (progn
         (repeat (setq idx (sslength sel))
               (setq ent (ssname sel (setq idx (1- idx)))
                     lst (cons (cons ent (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget ent)))) lst)
               )
         )
         (setq tmp (apply 'append (mapcar 'cdr lst))
               mni (car tmp)
               mxa (car tmp)
         )
         (foreach pnt (cdr tmp)
               (setq mni (mapcar 'min mni pnt)
                     mxa (mapcar 'max mxa pnt)
               )
         )
         (setq app (vlax-get-acad-object)
               out (ssadd)
         )
         (vla-zoomwindow app (vlax-3D-point mni) (vlax-3D-point mxa))
         (foreach grp lst
               (if
                   (and
                     (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))
                     (< 1 (sslength txt))   
                   )
                   (ssadd (car grp) out)
               )
            (setq txt nil)
               (gc)
         )
         (sssetfirst nil out)
       )
   )

   (princ)
)
(vl-load-com) (princ)

Tharwat 发表于 2022-7-5 23:16:02

 
 
更换此零件。
 

(foreach grp lst
               (if (not (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))    )
                   (ssadd (car grp) out)
               )
            (setq txt nil)
               (gc)
         )

subodh_gis 发表于 2022-7-5 23:19:41

现在,它正在选择所有多段线
(defun c:mtpl ( / app ent grp idx lst mni mxa out sel tmp txt )
   (if (setq sel (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
       (progn
         (repeat (setq idx (sslength sel))
               (setq ent (ssname sel (setq idx (1- idx)))
                     lst (cons (cons ent (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget ent)))) lst)
               )
         )
         (setq tmp (apply 'append (mapcar 'cdr lst))
               mni (car tmp)
               mxa (car tmp)
         )
         (foreach pnt (cdr tmp)
               (setq mni (mapcar 'min mni pnt)
                     mxa (mapcar 'max mxa pnt)
               )
         )
         (setq app (vlax-get-acad-object)
               out (ssadd)
         )
         (vla-zoomwindow app (vlax-3D-point mni) (vlax-3D-point mxa))
         (foreach grp lst
               (if (not (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))
                     
                   )
                   (ssadd (car grp) out)
               )
            (setq txt nil)
               (gc)
         )
         (sssetfirst nil out)
       )
   )

   (princ)
)
(vl-load-com) (princ)

Tharwat 发表于 2022-7-5 23:23:13

 
 
首先确定你的目标,然后发布你的问题

subodh_gis 发表于 2022-7-5 23:25:38

我只喜欢选择内部没有文本的多段线。就是这样。

Tharwat 发表于 2022-7-5 23:30:10

因此,我对例程的修改和您对例程的重新安排应该在第6和第7篇文章中完成,否则请上传您正在测试代码的图形。
页: [1] 2
查看完整版本: 零选择集的条件