明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5331|回复: 12

面域转多段线

[复制链接]
发表于 2017-8-16 15:25:47 | 显示全部楼层 |阅读模式
本帖最后由 jpg102329 于 2017-8-21 08:11 编辑

  1. ;除spline转的面域
  2. ;16:39 2017/7/28
  3. 【唐僧】晗子轩(515357067) 16:38:49
  4. ;;;函数名称:SWH-ent-region->curve
  5. ;;;函数说明:面域转多段线
  6. ;;;参    数:lst:面域选择集(可以是多个面域模式)
  7. ;;;返 回 值:转换后的图元名lst
  8. ;;;示    例setq bbb(SWH-ent-region->curve (setq lst(ssget))))
  9. (defun SWH-ent-region->curve (lst / cl lastent lste lt:ss-entnext objl ss ss->ents ssc swh-select-ss->ents)
  10. ;;125.2 [功能] 获取在图元 en 之后产生的图元的选择集--by黄大师
  11. (defun lt:ss-entnext (en / ss)
  12. (if en
  13. (progn
  14. (setq ss (ssadd))
  15. (while (setq en (entnext en))
  16. (if (not (member (cdr (assoc 0 (entget en)))
  17. '("ATTRIB"
  18. "VERTEX"
  19. "SEQEND"
  20. )
  21. )
  22. )
  23. (ssadd en ss)
  24. )
  25. )
  26. (cond((zerop (sslength ss)) (setq ss nil)))
  27. ss
  28. )
  29. (ssget "_x")
  30. )
  31. )
  32.   (defun SWH-select-ss->ents (ss / el i sl)
  33.     (setq
  34. sl (sslength ss)
  35. i  -1
  36.     )
  37.     (repeat sl
  38.       (setq el (cons (ssname ss (setq i (1+ i))) el))
  39.     )
  40.     el
  41.   )
  42. (setq lastent(entlast))
  43.   (setq ss (ssadd))
  44. (setq ssc(ssadd))
  45.   (if (= (type lst) 'PICKSET)
  46.     (setq lste (SWH-select-ss->ents lst))
  47.   )
  48.   (setq
  49.     cl (mapcar
  50.          '(lambda (a)
  51.             (mapcar 'vlax-vla-object->ename(safearray-value (variant-value a)))
  52.           )
  53.          (mapcar'vla-explode
  54.            (mapcar
  55.              'vlax-ename->vla-object
  56.              (vl-remove-if'(lambda (x) (/= (cdr (assoc 0 (entget x))) "REGION"))lste)
  57.            )
  58.          )
  59.        )
  60.   )
  61.   (foreach x cl(foreach y x (ssadd y ss)))
  62. (vl-cmdf "EDIT" "m" ss "" "Y" "J" 0 "")
  63. (setq ssc(SWH-select-ss->ents(lt:ss-entnext lastent)))
  64. )

<以上内容出自《大海语录》不代表本人观点>

欢迎加入通信管线设计技术交流群655280537,通信管线规划设计技术、资源交流群,CAD底图交换、付费教程免费获取、交流经验、互相学习,共同进步!





发表于 2018-3-5 14:16:43 | 显示全部楼层
改成这样
(defun C:RTP()
(setq S0 (entsel "\n请点选目标对象:"))
(COMMAND "layer" "n" "defpoints" "c" "7" "defpoints" "s" "defpoints" "p" "p" "defpoints" "" "chprop" S0 "" "la" "defpoints" "")
(COMMAND "EXPLODE" S0 "")
(setq RSS (ssget "x" '((0 . "LINE,ARC,*POLYLINE")(8 . "defpoints"))))
(COMMAND "PEDIT" "M" RSS "" "Y" "J" "0" ""))
发表于 2018-2-7 15:31:34 | 显示全部楼层
(defun C:RTP()
(setq S0 (entsel "\n请点选目标对象:"))
(COMMAND "layer" "n" "defpoints" "c" "7" "defpoints" "s" "defpoints" "p" "p" "defpoints" "" "chprop" S0 "" "la" "defpoints" "")
(COMMAND "EXPLODE" S0 "")
(setq RSS (ssget "x" '((0 . "LINE,ARC,*POLYLINE")(8 . "defpoints"))))
(COMMAND "PEDIT" "M" RSS "" "Y" "J" "0" ""))
发表于 2018-2-9 14:43:51 | 显示全部楼层
win8.1,64位cad2012楼上的两个程序都提示 命令: ; 错误: 输入的列表有缺陷
发表于 2017-8-26 20:25:48 | 显示全部楼层
大师怎么2007运行炸开了
发表于 2017-8-27 15:47:57 | 显示全部楼层
谢谢楼主,支持下
发表于 2017-9-23 17:57:40 | 显示全部楼层
真的有用处啊
发表于 2017-11-25 23:59:20 | 显示全部楼层
好东西,谢谢
发表于 2017-11-26 19:09:36 | 显示全部楼层
路过,顶顶顶
发表于 2018-2-4 11:16:05 | 显示全部楼层
怎么出错了啊
发表于 2018-2-6 21:10:21 来自手机 | 显示全部楼层
太长了,明天把我的发来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:27 , Processed in 0.177979 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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