明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1417|回复: 9

[提问] 打断后归入特定图层

[复制链接]
发表于 2014-8-28 17:32:08 | 显示全部楼层 |阅读模式
本帖最后由 夜未眠 于 2014-8-28 17:35 编辑


如图,两条多义线被一条直线打断,如何使之像右边那样打断后的线移动到特定图层中,试过用以下代码来实现“倒数第一个图元入2层,倒数第二个图元入3层”,可惜产生的4条线哪个是倒数第一,哪个是倒数第二似乎也不确定
  1. ;;+++++++++++++++++++++++++++++++++++++++++
  2. ;;          倒数第i个图元                  
  3. ;;+++++++++++++++++++++++++++++++++++++++++
  4. (DEFUN daoshu (i / acdocument acspace ent_name)
  5.   (SETQ acdocument (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT)))
  6.   (IF (= (VLA-GET-ACTIVESPACE acdocument) ACMODELSPACE)
  7.     (SETQ acspace (VLA-GET-MODELSPACE acdocument))
  8.     (SETQ acspace (VLA-GET-PAPERSPACE acdocument))
  9.   )
  10.   (IF (AND (= (TYPE i) 'int)
  11.            (>= (- (VLA-GET-COUNT acspace) i) 0)
  12.            (>= i 1)
  13.       )
  14.     (SETQ ent_name (VLAX-VLA-OBJECT->ENAME
  15.                      (VLA-ITEM acspace (- (VLA-GET-COUNT acspace) i))
  16.                    )
  17.     )
  18.     (SETQ ent_name nil)
  19.   )
  20. )
复制代码

本帖子中包含更多资源

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

x
发表于 2014-8-29 10:30:33 | 显示全部楼层
顶点重排....
发表于 2014-8-29 11:07:50 | 显示全部楼层
全选
过滤二竖直线 (2) + 一横直线 (1)
余下(3)
 楼主| 发表于 2014-8-29 11:49:31 | 显示全部楼层
Andyhon 发表于 2014-8-29 11:07
全选
过滤二竖直线 (2) + 一横直线 (1)
余下(3)

余下哪还有3?
发表于 2014-8-29 13:20:16 | 显示全部楼层
余下哪还有3?
您图示的黄色线 <--- 3
 楼主| 发表于 2014-8-29 13:58:23 | 显示全部楼层
Andyhon 发表于 2014-8-29 13:20
余下哪还有3?
您图示的黄色线

晕,左边是原图,右边是想要的结果,都已经变成右边那样的了,还过滤啥啊
发表于 2014-8-29 14:43:30 | 显示全部楼层
...打断后的线移动到特定图层中...

打断之后不都是全白?

点评

打断后自动移动到特定层,如图示,1、2、3层各有不同的颜色,线条颜色随层,就各有各的颜色了,这样看起来比较醒目  发表于 2014-9-1 11:59
发表于 2014-8-29 17:38:06 | 显示全部楼层
本帖最后由 q3_2006 于 2014-8-29 17:39 编辑

只是图示这样...好解决...
  1. (defun ebox (e / pa pb)
  2.    (Vlax-Invoke-Method (Vlax-Ename->Vla-Object e ) 'GetBoundingBox 'pa 'pb )
  3.              (setq pa (trans (vlax-safearray->list pa) 0 1)
  4.                    pb (trans (vlax-safearray->list pb) 0 1)
  5.              )
  6.              (list pa pb)
  7. )
  8. (defun c:tt ( / a box e odlst p1 p2 pa pb ss)
  9. (vl-load-com)
  10. (setq odlst (mapcar 'getvar '("cmdecho" "osmode")))
  11. (mapcar 'setvar '("cmdecho" "osmode") '(0 0))
  12.   (setq a (car (entsel "选择打断两多段线的直线:"))
  13.     p1 (cdr (assoc 10 (entget a)))
  14.     p2 (cdr (assoc 11 (entget a)))
  15.     ss (ssget "f" (list p1 p2) '((0 . "LWPOLYLINE") (70 . 1)))
  16.     e (ssname ss 0)
  17.     box (ebox e)
  18.     pa (car box)
  19.     pb (cadr box)
  20.   )
  21.   (vl-cmdf "rectang" (list (car pa) (cadr pb)) (list (car pb) (cadr pa)))
  22.   (entdel e)
  23.   (setq e (entlast))
  24.   (vl-cmdf "_.break" (list e p1) "F" p1 "@")
  25.   (Vlax-Put-Property (Vlax-Ename->Vla-Object (entlast)) 'Color 1)
  26.   (Vlax-Put-Property (Vlax-Ename->Vla-Object e) 'Color 2)
  27.   (setq e (ssname ss 1)
  28.     box (ebox e)
  29.     pa (car box)
  30.     pb (cadr box)
  31.   )
  32.   (vl-cmdf "rectang" (list (car pa) (cadr pb)) (list (car pb) (cadr pa)))
  33.   (entdel e)
  34.   (setq e (entlast))
  35.   (vl-cmdf "_.break" (list e p2) "F" p2 "@")
  36.   (Vlax-Put-Property (Vlax-Ename->Vla-Object (entlast)) 'Color 1)
  37.   (Vlax-Put-Property (Vlax-Ename->Vla-Object e) 'Color 2)
  38. (mapcar 'setvar '("cmdecho" "osmode") odlst)
  39. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2014-9-9 09:55:14 | 显示全部楼层
q3_2006 发表于 2014-8-29 17:38
只是图示这样...好解决...
  1. vl-cmdf "rectang"
复制代码
貌似把原本的删了,重新画了一个矩形,万一不是矩形呢,复杂图形怎么办?
发表于 2014-9-9 11:07:00 | 显示全部楼层
夜未眠 发表于 2014-9-9 09:55
貌似把原本的删了,重新画了一个矩形,万一不是矩形呢,复杂图形怎么办?

只针对你给的图...没考虑其他情况....

点评

兄弟....你,太实在了。我再研究研究吧  发表于 2014-9-9 14:01
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 04:18 , Processed in 0.151066 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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