明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5078|回复: 19

如何获得boundary后的新生成的物体?

  [复制链接]
发表于 2009-12-22 00:15 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-12-22 9:10:29 编辑

怎么才能获得boundary后的所有物体或新生成的物体的选择集,然后转移到其它图层?下面的程序实现不了,问题出在哪?

(defun c:tt() 
  (setq ss1 (ssget "X"))
  (command "boundary")
  (setq ss2 (ssget "_P"))
  (command "select" SS2 "r" SS1 "")
)

发表于 2019-9-20 23:21 | 显示全部楼层
感谢楼主的问题,感谢版主的解答!谢谢!!!
发表于 2019-6-11 19:56 | 显示全部楼层
学习了,多谢
发表于 2009-12-22 08:39 | 显示全部楼层
(entlast)
 楼主| 发表于 2009-12-22 09:16 | 显示全部楼层

是这样么,还是不行啊

(defun c:tt() 
  (command "boundary")
  (setq ent (entlast))
  (command "change" ent "" "p" "la" "1" "")
)

发表于 2009-12-22 10:30 | 显示全部楼层
(defun c:tt() 
  (setq p (getpoint"\n拾取封闭线框内部点:"))
  (command "BOUNDARY" "A" "O" "P" "I" "N" "" ""  p "")
  (setq ent (entlast))
  (command "change" ent "" "p" "la" "图层1" "")
)
发表于 2009-12-22 11:26 | 显示全部楼层

先  entlast

然后 BOUNDARY

最后 entnext

这是老问题了,在论坛上搜一下

 楼主| 发表于 2009-12-22 11:47 | 显示全部楼层

 谢谢xhq1954425帮助,按照你的程序能够获得边界并转移到新图层。不过对于不是封闭的多边形,点内部点会选择到外面的封闭多边形。我想要的是:点某个多边形(不管是封闭与否)内部点时,会出现虚线框,以便确认是否是对该多边形执行boundary,如果不是封闭的,会在其外面的闭合多边形上出现虚线框,以便检查使之封闭,然后再boundary。

如果去掉(command "BOUNDARY" "A" "O" "P" "I" "N" "" ""  p "")最后的"",能够出现虚线框,但(setq ent (entlast)) 语句选不中boundary后新生成的边界,实现不了转移图层的目的,这是什么原因呢?如何才能实现?

 楼主| 发表于 2009-12-22 12:04 | 显示全部楼层

caoyin版主说的我也试了,

(defun c:tt() 
  (setq ent (entlast))
  (setq p (getpoint))
  (command "boundary" p "")
  (setq ss (ssadd))
  (while (setq ent (entnext ent))
    (ssadd ent ss)
  )
  (command "change" ss "" "p" "la" "图层1" "") 
)

但只要去掉(command "boundary" p "") 最后的" ",还是不能选中boundary后的边界,也就不能转移到新图层了

发表于 2009-12-22 23:56 | 显示全部楼层

;;;--------------------------------
(defun ttt (en / ss)
  (if en
    (progn
      (setq ss (ssadd))
      (while (setq en (entnext en))
        (if (not (member (cdr (assoc 0 (entget en)))
                         '("ATTRIB" "VERTEX" "SEQEND")
                 )
            )
          (ssadd en ss)
        )
      )
      (if (zerop (sslength ss)) (setq ss nil))
      ss
    )
    (ssget "_x")
  )
)


;;;--------------------------------
(defun c:tt (/ la p e ss)
(setq la (getvar 'clayer))
(setvar 'clayer "图层1")
(setq p(getpoint "\n指定内部点: "))
(setq e (entlast))
(vl-cmdf "_.bpoly" p "")
(or (setq ss (ttt e))
    (alert "* 错误 *\n\n未找到有限边界。\n\n边界不闭合,或边界对象不可访问。")
)
(setvar 'clayer la)
ss
)

 楼主| 发表于 2009-12-23 13:06 | 显示全部楼层
多谢caoyin版主
发表于 2009-12-24 05:10 | 显示全部楼层

问一下,下面有一个单独的SS(红色的)是什么意思?看不懂!帮忙给解释一下!谢谢!

(defun c:tt (/ la p e ss)
(setq la (getvar 'clayer))
(setvar 'clayer "图层1")
(setq p(getpoint "\n指定内部点: "))
(setq e (entlast))
(vl-cmdf "_.bpoly" p "")
(or (setq ss (ttt e))
    (alert "* 错误 *\n\n未找到有限边界。\n\n边界不闭合,或边界对象不可访问。")
)
(setvar 'clayer la)
ss
)

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 05:35 , Processed in 0.226889 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表