找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 828|回复: 14

[求助] [求助]:一条线在某点切断后怎样获得新的图元名

[复制链接]
发表于 2005-11-9 10:06:33 | 显示全部楼层 |阅读模式

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

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

×
如果一条线被切断,想以断点为中心,在线的左右各找距断点一定距离的两个点(比如距断点2cm),应该怎么实现呀?
我想用vlax-curve-getPointAtDist   可是新形成的两段线的端点怎么找?新形成的两段线的图元名怎么找?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-9 10:34:34 | 显示全部楼层
断开后的两个实体,一般说来一个是原来的实体,另一个是最后一个实体,用(entlast)可得到。
端点可在断开之前确定。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 13:05:29 | 显示全部楼层
好像不一定是这样,如果在编辑过程中有删除的实体,则系统内有实体名称是不连续的。新建成的实体名可不是位于最后。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-11-9 14:14:01 | 显示全部楼层
二楼的,怎么知道用entlast得到的实体是哪一个?断开后原来的实体的端点就变化了,实际上已经不是原来的实体,只是名称还是原来的,是这样理解吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 16:27:05 | 显示全部楼层
也许这样:
带相同起点的是原来的;
带相同终点的是后生成的。

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

使用道具 举报

发表于 2005-11-9 17:46:18 | 显示全部楼层
你可以先记下entlast,再entnext下一个实体,就是新生成的。
(Defun get-ss( e / ss ep) ;;;╚í╘┌╩╡╠σe║≤╔·│╔╡─╦∙╙╨╩╡╠σ╤í╘±╝»
  (setq ss (ssadd) ep e)
  (if (not ep) (setq ep (entnext)))
  (while (/= (setq ep (entnext ep)) nil)
    (ssadd ep ss)
  )
  ss
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 18:22:36 | 显示全部楼层

  1. (progn
  2. (setq bkss (ssadd)
  3.          elast (entlast))
  4. (command ".break" (e pt) pt)
  5. (if (eq elast(entlast))
  6.     nil
  7.    (ssadd (entlast) bkss))
  8. )
  9. (sssetfirst bkss bkss)
  10. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-11-9 18:29:02 | 显示全部楼层
(/= (setq ep (entnext ep)) nil)
不能进到 Vertex SEQEND ... ,wkai 贴过一个函数的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-9 20:41:42 | 显示全部楼层
不太明白,其实我想实现如下功能:在pt1处打断,使用vlax-curve-getPointAtDist  确定pt2 pt3点,断开后用(entlast) 可找到pt3 ,但pt2怎么找?还请各位大哥帮我编一个程序实现!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 21:09:28 | 显示全部楼层
最初由 eachy 发布
[B](/= (setq ep (entnext ep)) nil)
不能进到 Vertex SEQEND ... ,wkai 贴过一个函数的 [/B]



知道你想说的是

  1. (Defun get-ss1( e / ss ep en ty) ;;;取在实体e后生成的所有实体选择集, nil=全选,不包括子实体;;
  2.   (setq ss (ssadd) ep e)
  3.   (if (not ep) (setq ep (entnext)))
  4.   (while (/= (setq ep (entnext ep)) nil)
  5.     (setq en(entget ep)ty(dxf 0 en))
  6.     (if (not (member TY '("VERTEX" "SEQEND")))
  7.       (ssadd ep ss)
  8.     )
  9.   )
  10.   ss
  11. )


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

使用道具 举报

已领礼包: 7245个

财富等级: 富甲天下

发表于 2005-11-9 21:29:28 | 显示全部楼层
这样可行吗 ?
Copy 原实体 e1
(setq e2 (entlast))
再Change point 到 pt2 pt3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 21:55:58 | 显示全部楼层
设普通pt1 pt2之间距离为d

  1. (defun c:tt()
  2. (if(and
  3.   (setq el (entsel))
  4.   (setq e (car el)
  5.            pt1(cadr el)
  6.            d1 (vlax-curve-getdistatpoint e pt1))
  7.   (setq pt2 (vlax-curve-getpointatdist e (- d1 d)))
  8.   (setq  pt3 (valx-curve-getpointatdist e (+ d1 d)))
  9.   )
  10. (progn
  11.   (command ".break" (list e pt2) pt3)
  12.   (list e (entlast))
  13. )
  14. )

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

使用道具 举报

发表于 2005-11-10 09:10:56 | 显示全部楼层
最初由 WHGF 发布
[B]好像不一定是这样,如果在编辑过程中有删除的实体,则系统内有实体名称是不连续的。新建成的实体名可不是位于最后。 [/B]

你可以用"select" "l"试试,看是不是在最后。
先找点,后断开,这问题就变得根简单。楼上狂刀的程序已经解决问题了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-10 13:39:16 | 显示全部楼层
是的,解决了,换一个思路就好了,先找点,后断开
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 10:30 , Processed in 0.224201 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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