找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 28|回复: 0

样条曲线转多线.lsp

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 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
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-27 10:35 , Processed in 0.138862 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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