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 "PEDIT" "m" ss "" "Y" "J" 0 "")
    63. (setq ssc(SWH-select-ss->ents(lt:ss-entnext lastent)))
    64. )