天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 20|回复: 0

样条曲线转多线.lsp

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    99

    主题

    11

    回帖

    1234

    积分

    管理员

    积分
    1234
    QQ
    发表于 2024-10-6 19:47:16 | 显示全部楼层 |阅读模式
    1. (defun c:tt1 ()
    2.   (defun *error* (msg)
    3.     (setq *error* nil)                    ;;设置空错误信息
    4.     ;(princ msg)                          ;;打印错误信息
    5.     (setvar "osmode" _lch_old_os)         ;;恢复捕捉
    6.     (setvar "blipmode" _lch_old_bmd)      ;;恢复光标
    7.     (setvar "clayer" _lch_old_clayer)     ;;恢复线型
    8.     (setvar "textstyle" _lch_old_text)    ;;恢复字体
    9.     (setvar "highlight" _lch_old_hlt)     ;;恢复对象亮显
    10.     (setvar "elevation" _lch_old_elev)    ;;恢复当前UCS的当前标高
    11.     (setvar "plinewid" _lch_old_plwid)    ;;恢复多段线宽度
    12.     (setvar "cecolor" _lch_old_cecolor)   ;;恢复颜色
    13.     (command "_.undo" "end")              ;;编程结束
    14.     (setvar "cmdecho" _lch_old_cmd)       ;;恢复普通命令提示
    15.     (princ)
    16.   );end_de
    17.   (lch_cxks) ;程序开始
    18.   
    19.   (setvar "osmode" _lch_old_os)         ;;恢复捕捉
    20.   (setvar "osmode" 0)            ;;关闭捕捉
    21.   
    22.         (setq ss (ssget '((0 . "SPLINE"))))
    23.         (setq n 0)
    24.         (repeat (sslength ss)
    25.                 (setq ptlst (lch:Massoc 11 (entget (ssname ss n))))
    26.                 (lch:lwpolyline ptlst nil nil nil nil nil)
    27.                 (setq n (1+ n))
    28.         )
    29.        
    30.   (lch_cxjs) ;程序结束
    31. );end_de

    32. ;;[功能] 多段线各顶点
    33. ;;示例 (lch:Massoc 10 (entget (car (entsel))))
    34. ;; 特别适合多段线各顶点
    35. (defun lch:Massoc (key alist)
    36.   (apply
    37.     'append
    38.     (mapcar '(lambda (x)
    39.          (if (eq (car x) key)
    40.      (list (cdr x))
    41.          )
    42.        )
    43.       alist
    44.     )
    45.   )
    46. )

    47. ;点表生成多段线
    48. ;线宽=nil,线宽为0
    49. ;是否闭合=nil,不闭合
    50. ;图层=nil,为当前图层
    51. ;颜色=nil,为当前图层颜色
    52. ;线型比例=nil,为1
    53. ;(lch:lwpolyline 点表 是否闭合 线宽 图层 颜色 线型比例)
    54. ;(lch:lwpolyline (list (1 2) (2 3)) T 2 "中心线" 6 5)
    55. (defun lch:lwpolyline (lst dxf70 plwid lay lwplint lwplbili)
    56.   (entmake
    57.     (append
    58.       (list
    59.         '(0 . "LWPOLYLINE")
    60.         '(100 . "AcDbEntity")
    61.         '(100 . "AcDbPolyline")
    62.         (cons 90 (length lst)) ;点表
    63.         (if (= dxf70 T)
    64.           (cons 70 1)          ;闭合与不闭合
    65.           (cons 70 0)
    66.         );if
    67.         (if plwid
    68.           (cons 43 plwid)      ;线宽
    69.           (cons 43 0)
    70.         );if
    71.         (if lay
    72.           (cons 8 lay)         ;图层
    73.           (cons 8 (getvar "clayer"))
    74.         );if
    75.         (if lwplint
    76.           (cons 62 lwplint)    ;颜色
    77.           (cons 62 256)
    78.         );if
    79.         (if lwplbili
    80.           (cons 48 lwplbili)   ;线型比例
    81.           (cons 48 1.0)
    82.         );if
    83.       );end_list
    84.       (mapcar '(lambda (pt) (cons 10 pt)) lst )
    85.     );end_append
    86.   );end_entmake
    87. );end_de

    88. ;;;通用程序开始
    89. (defun lch_cxks ()
    90.   (setq _lch_old_cmd (getvar "cmdecho")      ;;保存普通命令提示
    91.     _lch_old_os (getvar "osmode")            ;;保存捕捉
    92.     _lch_old_bmd (getvar "blipmode")         ;;保存光标
    93.     _lch_old_hlt (getvar "highlight")        ;;保存对象亮显
    94.     _lch_old_elev (getvar "elevation")       ;;保存当前UCS的当前标高
    95.     _lch_old_plwid (getvar "plinewid")       ;;保存多段线宽度
    96.     _lch_old_ucsicon (getvar "ucsicon")
    97.     _lch_old_cecolor (getvar "cecolor")      ;;保存颜色
    98.     _lch_old_clayer (getvar "clayer")        ;;保存线型
    99.     _lch_old_text (getvar "textstyle")       ;;保存字体
    100.   );end_setq
    101.   (setvar "cmdecho" 0)           ;;设置普通命令不提示
    102.   (command "_.undo" "_be")       ;;编程开始
    103.   (setvar "osmode" 0)            ;;关闭捕捉
    104.   (setvar "blipmode" 0)          ;;关闭光标
    105.   (setvar "elevation" 0)         ;;关闭当前UCS的当前标高
    106.   (setvar "plinewid" 0)          ;;设置多段线宽度
    107.   (setvar "pickstyle" 0)
    108.   (setvar "cecolor" "bylayer")
    109. );end_de

    110. ;;通用程序结束
    111. (defun lch_cxjs ()
    112.   (setvar "osmode" _lch_old_os)         ;;恢复捕捉
    113.   (setvar "blipmode" _lch_old_bmd)      ;;恢复光标
    114.   (setvar "clayer" _lch_old_clayer)     ;;恢复线型
    115.   (setvar "textstyle" _lch_old_text)    ;;恢复字体
    116.   (setvar "highlight" _lch_old_hlt)     ;;恢复对象亮显
    117.   (setvar "elevation" _lch_old_elev)    ;;恢复当前UCS的当前标高
    118.   (setvar "plinewid" _lch_old_plwid)    ;;恢复多段线宽度
    119.   (setvar "cecolor" _lch_old_cecolor)   ;;恢复颜色
    120.   (command "_.undo" "_end")             ;;编程结束
    121.   (setvar "cmdecho" _lch_old_cmd)       ;;恢复普通命令提示
    122.   (princ)
    123. );end_de
    复制代码

     

     

     

     

    样条曲线转多线.lsp
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-10-27 08:36 , Processed in 0.150127 second(s), 24 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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