找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1901|回复: 22

[求助]:如何通过点取一条line,就将所有与之相连的line串成一条pline。

[复制链接]

已领礼包: 9个

财富等级: 恭喜发财

发表于 2003-5-11 18:53:35 | 显示全部楼层 |阅读模式

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

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

×
如何通过点取一条line,就将所有与之相连的line串成一条pline。
就是类似于天正标注房间面积时通过点取墙线搜索边界。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-11 18:55:33 | 显示全部楼层

Re: [求助]:如何通过点取一条line,就将所有与之相连的line串成一条pline。

最初由 hnfsf 发布
[B]如何通过点取一条line,就将所有与之相连的line串成一条pline。
就是类似于天正标注房间面积时通过点取墙线搜索边界。 [/B]


已经写过了,去:

晓东工具箱-曲线工具-线变复线

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

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

 楼主| 发表于 2003-5-11 19:00:03 | 显示全部楼层
晓东工具箱-曲线工具-线变复线
要采用窗口选择或者多选才能实现,我的意思是只要点选其中任一直线就能变成复线。
这可以用在布预制板的程序里面,比如我选中了承重墙线,就可以建立房间的边界并显亮,有了这个边界就可以进行后面的计算了。
而且这种做法可以解决墙线不在某特定图层和房间内部有实体存在的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-11 19:08:05 | 显示全部楼层
最初由 hnfsf 发布
[B]晓东工具箱-曲线工具-线变复线
要采用窗口选择或者多选才能实现,我的意思是只要点选其中任一直线就能变成复线。 [/B]


交互信息太少不好(对普通的对象工具而言),因为没有特定的过滤信息,如果顶点附近有多个线,就不好判别。

应该灵活用图层工具,孤立,保留,关闭等,让自己需要的实体暴露出来后,不想一个一个选,就输入ALL,或者窗口圈一下,不能连的是不会处理的。

如果到具体专业应用上,可以根据图层信息等,以后写个工具。

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

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

 楼主| 发表于 2003-5-11 19:18:22 | 显示全部楼层
这可以用在布预制板的程序里面,比如我选中了承重墙线,就可以建立房间的边界并显亮,有了这个边界就可以进行后面的计算了。不用通过在房间内部点取一点建立边界还要选取布板方向。
而且这种做法可以解决墙线不在某特定图层和房间内部有实体存在的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-15 00:46:28 | 显示全部楼层
最初由 hnfsf 发布
[B]这可以用在布预制板的程序里面,比如我选中了承重墙线,就可以建立房间的边界并显亮,有了这个边界就可以进行后面的计算了。不用通过在房间内部点取一点建立边界还要选取布板方向。
而且这种做法可以解决墙线不在某... [/B]

天正3的"房间面积",好象同你的想法一样.
我想无非是在line端点循环求下一个line.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

 楼主| 发表于 2003-5-15 01:06:55 | 显示全部楼层
就是,但是她用了自定义的函数,不知道是怎么实现的。所以就在此讨教了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-15 20:43:28 | 显示全部楼层
今天写了一下,>r2000 要xd_api
只支持首尾相连的.
和你选中的物体 同样的图层.

  1. (defun c:pj (/ e ss dxf get-line)
  2.   (defun get-line (e0 / li-e get-line1 ss sel2lst)
  3.     (defun sel2lst (sel / n l)
  4.       (if sel
  5.         (repeat (setq n (sslength sel))
  6.           (setq n (1- n)
  7.                 l (cons (ssname sel n) l)
  8.           )
  9.         )
  10.         nil
  11.       )
  12.     )
  13.     (setq li-e (list e0))
  14.     (defun get-line1 (e0 / en en1 lay li-ss li-ss-del p1 p2 p3 p4 ss ss1 ss2)
  15.       (setq en (vlax-ename->vla-object e0))
  16.       (setq p2 (vlax-curve-getEndPoint en)
  17.             p1 (vlax-curve-getstartPoint en)
  18.             lay (vlax-get-property en "layer")
  19.       )
  20.       (setq ss1 (ssget "c" (polar p1 (* pi 1.25) 40) (polar p1 (* pi 0.25)
  21.                                                             40
  22.                                                      ) (list (cons 8 lay))
  23.                 )
  24.       )
  25.       (setq ss2 (ssget "c" (polar p2 (* pi 1.25) 40) (polar p2 (* pi 0.25)
  26.                                                             40
  27.                                                      ) (list (cons 8 lay))
  28.                 )
  29.       )
  30.       (cond
  31.         ((and
  32.            ss1
  33.            ss2
  34.          )
  35.           (setq ss (xdrx_PickSet_Union ss1 ss2))
  36.         )
  37.         ((and
  38.            ss1
  39.            (not ss2)
  40.          )
  41.           (setq ss ss1)
  42.         )
  43.         ((and
  44.            ss2
  45.            (not ss1)
  46.          )
  47.           (setq ss ss2)
  48.         )
  49.         (t
  50.           nil
  51.         )
  52.       )
  53.       (setq ss (sel2lst ss)
  54.             li-ss '()
  55.       )
  56.       (foreach e ss
  57.         (setq en1 (vlax-ename->vla-object e))
  58.         (setq p3 (vlax-curve-getEndPoint en1)
  59.               p4 (vlax-curve-getstartPoint en1)
  60.         )
  61.         (if (or
  62.               (< (distance p3 p1) 1e-3)
  63.               (< (distance p4 p1) 1e-3)
  64.               (< (distance p3 p2) 1e-3)
  65.               (< (distance p4 p2) 1e-3)
  66.             )
  67.           (setq li-ss (cons e li-ss))
  68.         )
  69.       )
  70.       (setq li-ss-del '())
  71.       (foreach x li-ss
  72.         (if (not (member x li-e))
  73.           (setq li-e (cons x li-e)
  74.                 li-ss-del (cons x li-ss-del)
  75.           )
  76.         )
  77.       )
  78.       (if (> (length li-ss-del) 0)
  79.         (foreach x li-ss-del
  80.           (get-line1 x)
  81.         )
  82.       )
  83.       li-e
  84.     )
  85.     (get-line1 e0)
  86.     (setq ss (ssadd))
  87.     (foreach x li-e
  88.       (ssadd x ss)
  89.     )
  90.   )
  91.   (defun dxf (a b)
  92.     (cdr (assoc a b))
  93.   )
  94.   (if (setq e (xdrx_entsel "\n选多义线,直线,弧线:" '((0 . "*polyline,line,arc"))))
  95.     (progn
  96.       (setq e (car e)
  97.             ss (get-line e)
  98.       )
  99.       (cond
  100.         ((and
  101.            (wcmatch (dxf 0 (entget e)) "*POLYLINE")
  102.            (/= 1 (dxf 70 (entget e)))
  103.          )
  104.           (command "pedit" e "j" ss "" "")
  105.           (princ "\n连上了.")
  106.         )
  107.         ((and
  108.            (wcmatch (dxf 0 (entget e)) "*POLYLINE")
  109.            (= 1 (dxf 70 (entget e)))
  110.          )
  111.           (princ "\n闭合的多义线")
  112.         )
  113.         (t
  114.           (command "pedit" e "y" "j" ss "" "")
  115.           (princ "\n连上了.")
  116.         )
  117.       )
  118.     )
  119.   )
  120.   (prin1)
  121. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-5-15 21:30:34 | 显示全部楼层
(defun dxf (a b)
    (cdr (assoc a b))
  )

可以用 (xdrx_setenttodb e) 然后用 xdrx_getentdxf
另 (dxf 0 (entget e)) "*POLYLINE")
在API中还有
xdrx_object_classname

功    能:获得对象的DXF名和类名

调用格式:(xdrx_object_classname <对象名>)

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-15 21:49:45 | 显示全部楼层
最初由 eachy 发布
[B](defun dxf (a b)
    (cdr (assoc a b))
  )

可以用 (xdrx_setenttodb e) 然后用 xdrx_getentdxf
另 (dxf 0 (entget e)) "*POLYLINE")
在API中还有
xdrx_object_classname

功    能:获得对象的DXF名和... [/B]


一样一样的:)

问个问题:
xdrx_GetPtSs
假定已知  p1 p2两点

(setq ss1(xdrx_GetPtSs  p1 "" 10 "WALL"...)
(setq ss2(xdrx_GetPtSs  p2 "" 10 "WALL"...)
两句分别用,好的,放一起时,ss2好的,ss1就是错误的选择集.

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

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-15 22:02:32 | 显示全部楼层
最初由 hnfsf 发布
[B]不错,很好用。 [/B]

2003年05月15日 21:41 编辑过,刚有个地方错了.不知你什么时候看的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-15 22:09:28 | 显示全部楼层
最初由 aeo 发布
[B][QUOTE]最初由 eachy 发布
[B](defun dxf (a b)
    (cdr (assoc a b))
  )

可以用 (xdrx_setenttodb e) 然后用 xdrx_getentdxf
另 (dxf 0 (entget e)) "*POLYLINE")
在API中还有
xdrx_object_clas... [/B]


为了防止选择集超过ACAD的限制,所以XDRX_API凡是生成选择集的函数,都会返回一个,以前得到的释放。

如果要用多个选择集,可以用

(xdrx_setsstodb ss 0)
(xdrx_setsstodb ss1 1)
......
可以在循环里面嵌套,(xdrx_getentdata 0) (xdrx_getentdata 1)分别得到不同选择集SS,SS1的下一个实体,互相不冲突。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-15 22:19:44 | 显示全部楼层

  1. (cond((and ss1   ss2 )  (setq ss (xdrx_PickSet_Union ss1 ss2)))
  2.         ((and  ss1(not ss2) )(setq ss ss1))
  3.         ((and ss2 (not ss1) )(setq ss ss2))
  4.                      (t  nil)
  5. )

你看,我只想合并ss1 ss2,压入后怎么合并?????

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 17:56 , Processed in 0.573558 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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