找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1336|回复: 15

[求助] [求助]:把一个块用一条线切开成为两个块,谁

[复制链接]
发表于 2002-5-17 03:21:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
把一个块用一条线切开成为两个块,哪位高手有办法,或者有程序
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-5-17 05:10:59 | 显示全部楼层

Re: [求助]:把一个块用一条线切开成为两个块,谁

最初由 dwjnet 发布
[B]把一个块用一条线切开成为两个块,哪位高手有办法,或者有程序
谢谢 [/B]


这个问题真难哪?感觉理论上有可能解决,但实际上好象没有人做出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2002-5-18 09:12:47 | 显示全部楼层
呵呵,是啊。盼望有高手
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-19 01:15:09 | 显示全部楼层
一个思路:

1。用explode把块彻底炸开(循环,炸出的新实体中如果包含块等,接着炸);
如果用计算的方式求,恐怕只有请玩c的dx出手。:)
2。所有新实体加入选择集s1;
3。ssget-f方式得选择集s2;
4。s1和s2交集得s3;
5。开始分开。
如果碰上文字,分出1/n的字,恐怕不好玩了;
碰上ellipse,spline,hatch,恐怕惨了;
碰上3d实体,恐怕要玩完了。:))

二思路:
先把选中的物体plot-dxb+插入,这样都是线可能还好办些,
不过丢失原来的信息,精度也受损。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2002-5-19 01:17:15 | 显示全部楼层
我想对曲线能够分开也就够了,不用考虑那么多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-5-19 01:35:17 | 显示全部楼层
如果需要块裁减,那么以前写过这个程序,可以裁减(显示上)任何块内的任何实体,需要时候可以恢复。

见下面的帖子。

http://www.xdcad.net/forum/showthread.php?postid=822#post822



                               
登录/注册后可看大图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-19 09:49:56 | 显示全部楼层
我目前只要考虑ellipse,spline,hatch以外的实体,所以 非常感谢cy956
对于炸开后的处理,求交,切开,形成新的块似乎还是不容易搞得明白,
能否谈的清楚一些,我用vc写arx程序.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-5-19 09:59:28 | 显示全部楼层
最初由 dwjnet 发布
[B]我目前只要考虑ellipse,spline,hatch以外的实体,所以 非常感谢cy956
对于炸开后的处理,求交,切开,形成新的块似乎还是不容易搞得明白,
能否谈的清楚一些,我用vc写arx程序. [/B]


求交,可以用AcDbEntity::intersectWith(....)
曲线裁减可以用 AcDbCurve::getSplitCurves(...)

对于INSERT,你需要先得到BLOCK->INSERT的转换矩阵,然后遍历BLOCK,求其中的实体(曲线)和你的边界的交点,然后用AcDbCurve::getSplitCurves(...)

用遍历BLOCK(AcDbBlockTableRecord)的方法,你不需要炸开块。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-19 11:08:50 | 显示全部楼层
谢谢站长
如何判断切开后的实体归属呢,一半归到一个块中,另一半归到另一个块中,如何做呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-5-19 11:57:49 | 显示全部楼层
最初由 dwjnet 发布
[B]谢谢站长
如何判断切开后的实体归属呢,一半归到一个块中,另一半归到另一个块中,如何做呢? [/B]


你先用AcDbEntity::getGeomExtents得到块的包围盒,你的裁减的线肯定要和这个包围盒相交,这样就出来了两个区域,然后你可以判断切开后的实体是那个区域的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-20 10:54:56 | 显示全部楼层
一个思路:

1。用explode把块彻底炸开(循环,炸出的新实体中如果包含块等,接着炸);
如果用计算的方式求,恐怕只有请玩c的dx出手。:)
2。所有新实体加入选择集s1;

这些新实体如何获取 我一直不知道怎么办
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-20 10:57:13 | 显示全部楼层
如果只是要在显示上分开块拷贝一份后 用CAD命令XCLIP就可以胜任了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-20 12:29:45 | 显示全部楼层
最初由 fylinwater 发布
这些新实体如何获取 我一直不知?..


xd前几天刚刚解答过,
就是先定义一个e0=entlast,
操作其他.....
然后针对e0进行entnext直到结束,所有的实体
入表。下面是abd的几个函数,你抄着用用:


  1. (Defun get-last-en( / enlast )  ;;;取当前图中最后实体名
  2.   (setq enlast nil enlast (entlast))
  3.   (if (and (/= enlast nil)
  4.            (or (= "POLYLINE" (dxf 0 (entget enlast)))
  5.                (and (= "INSERT" (dxf 0 (entget enlast)))
  6.                     (entnext enlast)
  7.                     (= "ATTRIB" (dxf 0 (entget (entnext enlast))))
  8.            )   )
  9.       )
  10.     (while (/= "SEQEND" (dxf 0 (entget enlast)))
  11.       (setq enlast (entnext enlast)))
  12.   )
  13.   enlast
  14. )

  15. (Defun get-ss( e / ss ep) ;;;取在实体e后生成的所有实体选择集
  16.   (setq ss (ssadd) ep e)
  17.   (if (not ep) (setq ep (entnext)))
  18.   (while (/= (setq ep (entnext ep)) nil)
  19.     (ssadd ep ss)
  20.   )
  21.   ss
  22. )
  23. (Defun get-ss1( e / ss ep en ty) ;;;取在实体e后生成的所有实体选择集, nil=全选,不包括子实体
  24.   (setq ss (ssadd) ep e)
  25.   (if (not ep) (setq ep (entnext)))
  26.   (while (/= (setq ep (entnext ep)) nil)
  27.     (setq en(entget ep)ty(dxf 0 en))
  28.     (if (not (member TY '("VERTEX" "SEQEND")))
  29.       (ssadd ep ss)
  30.     )
  31.   )
  32.   ss
  33. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-5-20 12:35:43 | 显示全部楼层
最初由 fylinwater 发布
[B]如果只是要在显示上分开块拷贝一份后 用CAD命令XCLIP就可以胜任了 [/B]


对,我写的那个块裁减的程序,就是用ARX的方法实现的XCLIP命令,现在可以在LISP里面使用这个功能的函数了,功能上比XCLIP强很多,可以任意曲线边界,可以顶点表....功能都在那个LISP程序里面演示了。

372. xdrx_block_clip

功能:裁减BLOCK和XREF

调用格式:

373. xdrx_block_removeClip

功能:恢复裁减的BLOCK和XREF

调用格式:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-20 21:22:36 | 显示全部楼层
我的问题是真实地split一个块,形成两个块。不是剪掉不要,是还要的。
现在大家给了我许多的资料,我去试试。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 21:13 , Processed in 0.426328 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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