明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2795|回复: 11

[源码] 列表显示文字

[复制链接]
发表于 2016-1-22 19:54:18 | 显示全部楼层 |阅读模式



  1. (princ "\n文字列表显示,命令TT:\n")
  2. (defun c:tt (/ )
  3.   ;;文字列表
  4.   ;;20160122wkq004
  5.   (while (not
  6.      (setq e (car (entsel "\n选择要列表显示的文字所在的图层:")))
  7.    )
  8.   )
  9.   (setq lst '())
  10.   (if (setq
  11.   ss (ssget
  12.        "x"
  13.        (list (cons 0 "TEXT") (cons 8 (cdr (assoc 8 (entget e)))))
  14.      )
  15.       )
  16.     (progn
  17.       (repeat (setq n (sslength ss))
  18.   (setq e (ssname ss (setq n (1- n))))
  19.   (setq str (cdr (assoc 1 (entget e))))
  20.   (if (not (member str lst))
  21.     (setq lst (cons str lst))
  22.   )
  23.       )
  24.       (princ "\n拾取定位点,表格左上角-->>")
  25. ;;;      

  26.       (setq n (length lst))
  27.       (setq strNum "")
  28.       (setq h 2.0)
  29.       (setq xh t)
  30.       (while xh
  31.   (setq tmp (grread t 15 1))
  32.   (setq mode (car tmp))
  33.   (setq val (cadr tmp))
  34.   (redraw)
  35.   (cond
  36.     ((= mode 5)
  37.      (setq
  38.        a (* h 5 3)
  39.        b (* (* h 1.5) n)
  40.      )
  41.      (setq pt1 val
  42.      pt2 (mapcar '+ val (list a 0))
  43.      pt3 (mapcar '+ val (list a (- b)))
  44.      pt4 (mapcar '+ val (list 0 (- b)))
  45.      )
  46.      (grdraw pt1 pt2 1)
  47.      (grdraw pt2 pt3 1)
  48.      (grdraw pt3 pt4 1)
  49.      (grdraw pt4 pt1 1)
  50.      (setq aa
  51.       (* 20 (/ (getvar "VIEWSIZE") (cadr (getvar "SCREENSIZE"))))
  52.      )
  53.      (setq pt1 (mapcar '- val (list aa aa)))
  54.      (setq pt3 (mapcar '+ val (list aa aa)))
  55.      (setq pt2 (mapcar '+ val (list aa (- aa))))
  56.      (setq pt4 (mapcar '+ val (list (- aa) aa)))
  57.      (grdraw pt1 pt3 3)
  58.      (grdraw pt4 pt2 3)
  59.     )
  60.     ((= mode 3)
  61.      (setq pt val)
  62.      (princ "\n输入字高默认<2.0>或点取两点指定列表长:")
  63.       (setq xh2 t)
  64.       (while xh2
  65.         (setq tmp (grread t 15 1))
  66.         (setq mode2 (car tmp))
  67.         (setq val2 (cadr tmp))
  68.         (redraw)
  69.         (cond
  70.     ((= mode2 5)
  71.      (setq val2 (list (car val) (cadr val2)))
  72.      (setq dist (distance val val2))
  73.      (setq hh (/ dist (length lst)))
  74.      (setq
  75.        a (* hh 5 3)
  76.        b (* (* hh 1.5) n)
  77.      )
  78.      (setq pt1 val
  79.            pt2 (mapcar '+ val (list a 0))
  80.            pt3 (mapcar '+ val (list a (- b)))
  81.            pt4 (mapcar '+ val (list 0 (- b)))
  82.      )
  83.      (grdraw pt1 pt2 1)
  84.      (grdraw pt2 pt3 1)
  85.      (grdraw pt3 pt4 1)
  86.      (grdraw pt4 pt1 1)
  87.     )
  88.     ((= mode2 3)
  89.      (setq h hh)
  90.      (princ "\n表格高度:")
  91.      (princ dist)
  92.      (princ "    字高:")
  93.      (princ h)
  94.      (princ "  ")
  95.      (setq xh2 nil)
  96.      (setq xh nil)
  97.     )
  98.     ((and (= mode2 2) (<= 48 val2 57))
  99.      (princ (chr val2))
  100.      (setq strNum (strcat strNum (chr val2)))
  101.      (setq h 2.0)
  102.      (setq a (* h 5)
  103.            b (* (* h 1.5) (length lst))
  104.      )
  105.     )
  106.     ((and (= mode2 2) (= 8 val2))
  107.      (setq strNum (substr strNum 1 (1- (strlen strNum))))
  108.      (princ "\n字高:")
  109.      (princ strNum)
  110.     )
  111.     ((and (= mode2 2) (or (= 13 val2) (= 32 val2)))
  112.      (if (distof strNum)
  113.        (setq h (atoi strNum))
  114.        (setq h 2.0)
  115.      )
  116.      (setq xh2 nil)
  117.      (setq xh nil)
  118.     )
  119.     ((= mode 25)
  120.      (if (distof strNum)
  121.        (setq h (atoi strNum))
  122.        (setq h 2.0)
  123.      )
  124.      (setq xh2 nil)
  125.      (setq xh nil)
  126.     )
  127.     (t
  128.      (princ "\n")
  129.      (princ mode)
  130.      (princ "   ")
  131.      (princ val)
  132.      (princ "\n")
  133.     )
  134.         )
  135.       )
  136.     )
  137.   )
  138.       )

  139. ;;;      (setq tmp (getvar "lastpoint"))      
  140. ;;;      (if (and (setq
  141. ;;;     h (getdist "\n输入字高默认<2.0>或点取两点指定列表长:")
  142. ;;;         )
  143. ;;;         (not (equal tmp (getvar "lastpoint")))
  144. ;;;    )
  145. ;;;  (progn
  146. ;;;    ;;列表长
  147. ;;;    (setq h (/ h (length lst)))
  148. ;;;    (princ "\n字高:")
  149. ;;;    (princ h)
  150. ;;;  )
  151. ;;;  (if h
  152. ;;;    ;;输入了字高
  153. ;;;    (progn (princ "\n字高:")
  154. ;;;     (princ h)
  155. ;;;    )
  156. ;;;    ;;未输入距离或用鼠标拾取距离,但仅点取了一点
  157. ;;;    (setq h 2.0)
  158. ;;;  )  
  159. ;;;      )

  160. ;;;      (if (and (not pt)
  161. ;;;         (not (setq pt (getpoint "\n点取放置列表的左上角:")))
  162. ;;;    )
  163. ;;;  (progn
  164. ;;;    (command "zoom" "e")
  165. ;;;    ;;117.3 [功能] 返回当前视窗左下角和右上角 坐标
  166. ;;;    (setq  b (getvar "viewsize")
  167. ;;;    c (car (getvar "screensize"))
  168. ;;;    d (cadr (getvar "screensize"))
  169. ;;;    a (* b (/ c d))
  170. ;;;    x (setq x (getvar "viewctr"))
  171. ;;;    x (trans x 1 2)
  172. ;;;    c (list (- (car x) (/ a 2.0)) (- (cadr x) (/ b 2.0)) 0.0)
  173. ;;;    d (list (+ (car x) (/ a 2.0)) (+ (cadr x) (/ b 2.0)) 0.0)
  174. ;;;    c (trans c 2 1)
  175. ;;;    d (trans d 2 1)
  176. ;;;    )
  177. ;;;    (setq zoom t)
  178. ;;;    (setq pt d)
  179. ;;;  )
  180. ;;;      )
  181.       (setq lst (vl-sort lst '<))
  182.       (setq i -1)
  183.       (setq a (car pt))
  184.       (setq b (+ a (* h 5 3)))
  185.       (entmake
  186.   (list
  187.     (cons 0 "LINE")
  188.     (cons 8 "表格")
  189.     (cons 62 256)
  190.     (list  10
  191.     a
  192.     (setq y (- (cadr pt) (* (setq i (1+ i)) (* h 1.5))))
  193.     )
  194.     (list 11 b y)
  195.   )
  196.       )
  197.       (repeat (length lst)
  198.   (entmake
  199.     (list
  200.       (cons 0 "LINE")
  201.       (cons 8 "表格")
  202.       (cons 62 256)
  203.       (list 10
  204.       a
  205.       (setq y (- (cadr pt) (* (setq i (1+ i)) (* h 1.5))))
  206.       )
  207.       (list 11 b y)
  208.     )
  209.   )
  210.   (entmake
  211.     (list
  212.       (cons 0 "TEXT")
  213.       (cons 8 "表格")
  214.       (cons 62 256)
  215.       (cons 1 (itoa i))
  216.       (cons 40 h)
  217.       (list 10
  218.       (+ a (* h 5 0.5))
  219.       (+ y (* h 1.5 0.5))
  220.       )
  221.       (list 11
  222.       (+ a (* h 5 0.5))
  223.       (+ y (* h 1.5 0.5))
  224.       )
  225.       (cons 72 1)
  226.       (cons 73 2)
  227.     )
  228.   )
  229.   (entmake
  230.     (list
  231.       (cons 0 "TEXT")
  232.       (cons 8 "表格")
  233.       (cons 62 256)
  234.       (cons 1 (nth (1- i) lst))
  235.       (cons 40 h)
  236.       (list 10
  237.       (+ a (* h 5 0.5 3))
  238.       (+ y (* h 1.5 0.5))
  239.       )
  240.       (list 11
  241.       (+ a (* h 5 0.5 3))
  242.       (+ y (* h 1.5 0.5))
  243.       )
  244.       (cons 72 1)
  245.       (cons 73 2)
  246.     )
  247.   )
  248.       )
  249.       (setq i -1)
  250.       (setq a (cadr pt))
  251.       (setq b (- a (* (length lst) (* h 1.5))))
  252.       (repeat 4
  253.   (entmake
  254.     (list  (cons 0 "LINE")
  255.     (cons 8 "表格")
  256.     (cons 62 256)
  257.     (list 10
  258.           (setq x (+ (car pt) (* (setq i (1+ i)) (* h 5))))
  259.           a
  260.     )
  261.     (list 11 x b)
  262.     )
  263.   )
  264.       )
  265.     )
  266.     (princ "\n在选定的图层未找到文字.")
  267.   )
  268.   (princ "\n完成")
  269. ;;;  (and zoom (command "zoom" "e"))
  270.   (princ)
  271. )



本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
USER2128 + 1 赞一个!
tryhi + 1 赞一个!

查看全部评分

 楼主| 发表于 2019-4-23 14:21:44 | 显示全部楼层
664571221 发表于 2018-9-25 20:12
能否加一个范围选择

范围选择,能下源码的都会改,个数统计已经有计数了.
发表于 2018-9-25 20:12:39 | 显示全部楼层

能否加一个范围选择
发表于 2016-1-22 20:56:16 | 显示全部楼层
试用了一下,很不错。把TEXT改为*TEXT可统计多行文字。能不能加一项统计数量?
 楼主| 发表于 2016-1-24 23:06:47 | 显示全部楼层
  1. (princ "\n文字列表显示,命令TT:\n")
  2. (defun c:tt (/ delSS)
  3.   ;;文字列表
  4.   ;;20160122wkq004
  5.   (while (not
  6.            (setq e (car (entsel "\n选择要列表显示的文字所在的图层:")))
  7.          )
  8.   )
  9.   (setq lst '())
  10.   (if (setq
  11.         ss (ssget
  12.              "x"
  13.              (list (cons 0 "TEXT") (cons 8 (cdr (assoc 8 (entget e)))))
  14.            )
  15.       )
  16.     (progn
  17.       (repeat (setq n (sslength ss))
  18.         (setq e (ssname ss (setq n (1- n))))
  19.         (setq str (cdr (assoc 1 (entget e))))
  20.         (if (not (member str lst))
  21.           (setq lst (cons str lst))
  22.         )
  23.       )
  24.       (princ "\n拾取表格角点-->>")
  25.       (setq n (length lst))
  26.       (setq numLst '())
  27.       (setq strNum "")
  28.       (setq h 2.0)
  29.       (setq go t)
  30.       (while go
  31.         (setq tmp (grread t 15 1))
  32.         (setq mode (car tmp))
  33.         (setq val (cadr tmp))
  34.         (redraw)
  35.         (cond
  36.           ((= mode 5)
  37.            (setq
  38.              a (* (/ h 1.5) 5 3)
  39.              b (* h n)
  40.            )
  41.            (setq zspt (mapcar '+ val (list (- a) b)))
  42.            (FUNredraw zspt a b)
  43.            (FUNredrawMouse zspt)
  44.           )
  45.           ((= mode 3)
  46.            (setq pto zspt)
  47.            (princ "\n输入行高如<2.0>或点取两点指定列表长:")
  48.            (setq go2 t)
  49.            (while go2
  50.              (setq tmp (grread t 15 1))
  51.              (setq mode2 (car tmp))
  52.              (setq val2 (cadr tmp))
  53.              (redraw)
  54.              (cond
  55.                ((= mode2 5)
  56.                 (setq h
  57.                        (/ (abs (- (cadr pto) (cadr val2))) (length lst))
  58.                 )
  59.                 (setq
  60.                   a (* (/ h 1.5) 5 3)
  61.                   b (* h n)
  62.                 )
  63.                 (setq tmp (FUNxiangXian pto val2))
  64.                 (FUNredraw
  65.                   (setq
  66.                     pt
  67.                      (mapcar '+
  68.                              pto
  69.                              (list (* a (car tmp)) (* b (cadr tmp)))
  70.                      )
  71.                   )
  72.                   a
  73.                   b
  74.                 )
  75.                 (FUNredrawMouse val2)
  76.                )
  77.                ((= mode2 3)
  78.                 (setq go2 nil)
  79.                 (setq go nil)
  80.                )
  81.                ((and (= mode2 2) (<= 46 val2 57) (/= 47 val2))
  82.                 ;;46小数点,47"/"(ascii ".")46  (chr 47)"/"
  83.                 (setq tmp (FUNinputReal
  84.                             "行高:"
  85.                             "输入行高如<2.0>或点取两点指定列表长:"
  86.                             (list val2)
  87.                             pto
  88.                             n
  89.                           )
  90.                 )
  91.                 (if tmp
  92.                   (setq
  93.                     pt        (cadr tmp)
  94.                     h        (car tmp)
  95.                     a        (* (/ h 1.5) 5 3)
  96.                     b        (* h n)
  97.                     go2        nil
  98.                     go        nil
  99.                   )
  100.                   (setq h 2.0)
  101.                 )
  102.                )
  103.                ((= mode2 25)
  104.                 (setq lst nil)
  105.                 (setq go2 nil)
  106.                 (setq go nil)
  107.                )
  108.              )
  109.            )
  110.           )
  111.           ((= mode 25)
  112.            (setq lst nil)
  113.            (setq go nil)
  114.           )
  115.         )
  116.       )
  117.       (if lst
  118.         (progn
  119.           (setq lst (vl-sort lst '<))
  120.           (FUNtable pt n 3 a b nil "表格")
  121.           (princ "\n完成")
  122.         )
  123.         (princ "\n放弃")
  124.       )
  125.       (redraw)
  126.     )
  127.     (princ "\n在选定的图层未找到文字.")
  128.   )
  129.   (princ)
  130. )
  131. (defun FUNtableText (lst pt row column aa bb cell lay /)
  132.   (setq i 0)
  133.   (repeat row
  134.     (entmake
  135.       (list
  136.         (cons 0 "TEXT")
  137.         (cons 8 lay)
  138.         (cons 62 256)
  139.         (cons 1 (itoa (1+ i)))
  140.         (cons 40 (/ h 1.5))
  141.         (cons 10
  142.               (setq
  143.                 tmp
  144.                  (list (+ x (* w 0.5))
  145.                        (setq yy (- y (* (setq i (1+ i)) h) (* h -0.5)))
  146.                  )
  147.               )
  148.         )
  149.         (cons 11 tmp)
  150.         (cons 72 1)
  151.         (cons 73 2)
  152.       )
  153.     )
  154.     (entmake
  155.       (list
  156.         (cons 0 "TEXT")
  157.         (cons 8 lay)
  158.         (cons 62 256)
  159.         (cons 1 (nth (1- i) lst))
  160.         (cons 40 h)
  161.         (cons 40 (/ h 1.5))
  162.         (cons 10
  163.               (setq tmp        (list (+ x (* w 1.5))
  164.                               yy
  165.                         )
  166.               )
  167.         )
  168.         (cons 11 tmp)
  169.         (cons 72 1)
  170.         (cons 73 2)
  171.       )
  172.     )
  173.   )
  174. )
  175. (defun FUNxiangXian (pto pt / ang a b)
  176.   ;;以pto为参照原点,返回pt所在的象限,及以pto在左上角时符号是正为参照,将pto改成左上角时xy的改正值
  177.   (setq ang (angle pto pt))
  178.   (cond
  179.     ((<= 0 ang (/ pi 2))
  180.      (setq
  181.        a 0
  182.        b 1
  183.        c 1
  184.      )
  185.     ) ;_1象限
  186.     ((<= (/ pi 2) ang pi)
  187.      (setq
  188.        a -1
  189.        b 1
  190.        c 2
  191.      )
  192.     ) ;_2象限
  193.     ((<= pi ang (* pi 1.5))
  194.      (setq
  195.        a -1
  196.        b 0
  197.        c 3
  198.      )
  199.     ) ;_3象限
  200.     ((<= (* pi 1.5) ang (* pi 2))
  201.      (setq
  202.        a 0
  203.        b 0
  204.        c 4
  205.      )
  206.     ) ;_4象限
  207.   )
  208.   (list a b c)
  209. )
  210. (defun FUNtable        (pt row column aa bb cell lay /)
  211.   ;;绘制直线表格
  212.   (progn
  213.     (if        cell
  214.       (setq w (abs aa)
  215.             h (abs bb)
  216.             a (* w column)
  217.             b (* h row)
  218.       )
  219.       (setq a (abs aa)
  220.             b (abs bb)
  221.             w (/ a column)
  222.             h (/ b row)
  223.       )
  224.     )
  225.     (setq x (car pt))
  226.     (setq y (cadr pt))
  227.     (cond ((and (> aa 0) (< bb 0)) ;_1象限
  228.            (setq pt (list x (+ y b)))
  229.           )
  230.           ((and (< aa 0) (< bb 0)) ;_2象限
  231.            (setq pt (list (- x a) (+ y b)))
  232.           )
  233.           ((and (< aa 0) (> bb 0)) ;_3象限
  234.            (setq pt (list (- x a) y))
  235.           )
  236.           ((and (> aa 0) (> bb 0)) ;_4象限
  237.            (setq pt pt)
  238.           )
  239.     )
  240.     (setq x (car pt))
  241.     (setq y (cadr pt))
  242.     (setq xx (+ x a))
  243.     (setq i -1)
  244.     (repeat (1+ row)
  245.       (entmake
  246.         (list
  247.           (cons 0 "LINE")
  248.           (cons 8 lay)
  249.           (cons 62 256)
  250.           (list        10
  251.                 x
  252.                 (setq yy (- y (* (setq i (1+ i)) h)))
  253.           )
  254.           (list 11 xx yy)
  255.         )
  256.       )
  257.     )
  258.     (setq i 0)
  259.     (repeat row
  260.       (entmake
  261.         (list
  262.           (cons 0 "TEXT")
  263.           (cons 8 lay)
  264.           (cons 62 256)
  265.           (cons 1 (itoa (1+ i)))
  266.           (cons 40 (/ h 1.5))
  267.           (cons        10
  268.                 (setq
  269.                   tmp
  270.                    (list (+ x (* w 0.5))
  271.                          (setq yy (- y (* (setq i (1+ i)) h) (* h -0.5)))
  272.                    )
  273.                 )
  274.           )
  275.           (cons 11 tmp)
  276.           (cons 72 1)
  277.           (cons 73 2)
  278.         )
  279.       )
  280.       (entmake
  281.         (list
  282.           (cons 0 "TEXT")
  283.           (cons 8 lay)
  284.           (cons 62 256)
  285.           (cons 1 (nth (1- i) lst))
  286.           (cons 40 h)
  287.           (cons 40 (/ h 1.5))
  288.           (cons        10
  289.                 (setq tmp (list        (+ x (* w 1.5))
  290.                                 yy
  291.                           )
  292.                 )
  293.           )
  294.           (cons 11 tmp)
  295.           (cons 72 1)
  296.           (cons 73 2)
  297.         )
  298.       )
  299.     )
  300.     (setq i -1)
  301.     (setq yy (- y b))
  302.     (repeat (1+ column)
  303.       (entmake
  304.         (list
  305.           (cons 0 "LINE")
  306.           (cons 8 lay)
  307.           (cons 62 256)
  308.           (list        10
  309.                 (setq xx (+ x (* (setq i (1+ i)) w)))
  310.                 y
  311.           )
  312.           (list 11 xx yy)
  313.         )
  314.       )
  315.     )
  316.   )
  317. )
  318. (defun FUNinputReal (str  restr            lst         pto  n           /        A    AA          B
  319.                      GO          H    MODE PT1         PT2  PT3  PT4        REAL TMP  VAL
  320.                      ptxx
  321.                     )
  322.   ;;输入实数20081128zml84
  323.   ;;http://bbs.mjtd.com/thread-72167-1-1.html
  324.   (vl-load-com)
  325.   (setvar "CMDECHO" 0)
  326.   (princ "\n")
  327.   (princ (strcat "\r" str))
  328.   (princ (vl-list->string (reverse lst)))
  329.   (defun FUNtmp        ()
  330.     ;;
  331.     (setq h (read (vl-list->string (reverse lst))))

  332.     (setq
  333.       a        (* (/ h 1.5) 5 3)
  334.       b        (* h n)
  335.     )
  336.     (setq ptxx (FUNxiangXian pto pt2))
  337.     (FunRedrawRectang
  338.       (setq
  339.         pt
  340.          (mapcar '+
  341.                  pto
  342.                  (list (* a (car ptxx)) (* b (cadr ptxx)))
  343.          )
  344.       )
  345.       a
  346.       b
  347.     )
  348.     (FUNredrawMouse pt2)
  349. ;;;    (FUNredrawMouse (mapcar '+ pt (list a (- b))))
  350.   )
  351. ;;;  (if lst
  352. ;;;    (progn
  353. ;;;      (princ (vl-list->string (reverse lst)))
  354. ;;;      (setq val (cadr (grread t 1 1)))
  355. ;;;      (FUNtmp)
  356. ;;;    )
  357. ;;;  )
  358.   (setq real nil)
  359.   (setq window (getvar "VIEWSIZE"))
  360.   (setq go T)
  361.   (while go
  362.     (setq tmp  (grread t 15 1)
  363.           mode (car tmp)
  364.           val  (cadr tmp)
  365.     )
  366.     (redraw)
  367.     (cond ((and        (= mode 5)
  368.                 (setq pt2 val)
  369.                 (or
  370.                   (FUNredrawMouse pt2)
  371.                   (not (equal ptxx (setq ptxx (FUNxiangXian pto pt2))))
  372.                   (not (equal window (setq window (getvar "VIEWSIZE"))))
  373.                 )
  374.            )
  375.            (FUNtmp)
  376.           )
  377.           ((and        (= mode 2)
  378.                 (/= val 47)
  379.                 (<= 46 val 57)
  380.            )
  381.            (setq lst (cons val lst))
  382.            (princ (strcat "\r"
  383.                           str
  384.                           (vl-list->string (reverse lst))
  385.                           "               "
  386.                   )
  387.            )
  388.            (FUNtmp)
  389.           )
  390.           ((or
  391.              (and (= mode 2)
  392.                   (or (= val 13) ;_回车键
  393.                       (= val 32) ;_空格
  394.                   )
  395.              )
  396.              (= mode 3) ;_左键
  397.            )
  398.            (if lst
  399.              (progn
  400.                (setq real (read (vl-list->string (reverse lst))))
  401. ;;;               (princ (strcat "\n" str (vl-list->string (reverse lst))))
  402.                (setq lst '())
  403.              )
  404.            )
  405.            (setq go nil)
  406.           )
  407.           ((and        (= mode 2)
  408.                 (= val 8) ;_退格键
  409.            )
  410.            (setq lst (cdr lst))
  411.            (princ (strcat "\r"
  412.                           str
  413.                           (vl-list->string (reverse lst))
  414.                           "               "
  415.                   )
  416.            )
  417.            (if lst
  418.              (FUNtmp)
  419.              (progn
  420.                (princ "\n")
  421.                (princ restr)
  422.                (setq go nil)
  423.              )
  424.            )
  425.           )
  426.           ((= mode 25)
  427.            (princ "\n")
  428.            (princ restr)
  429.            (setq go nil)
  430.           )
  431.     )
  432.   )
  433.   (if (and delSS (> (setq n (sslength delSS)) 0))
  434. ;;;    (command "erase" delSS "")
  435.     (progn (repeat n
  436.              (if (not (vlax-erased-p
  437.                         (vlax-ename->vla-object
  438.                           (setq tmp (ssname delSS (setq n (1- n))))
  439.                         )
  440.                       )
  441.                  )
  442.                (entdel tmp)
  443.              )
  444.            )
  445.            (setq
  446.              delSS (ssadd)
  447.            )
  448.     )
  449.     (setq delSS (ssadd))
  450.   )
  451.   (if real
  452.     (list real pt)
  453.     nil
  454.   )
  455. )

  456. (defun FunRedrawRectang        (pt a b / n A B tmp PT1 PT2 PT3 PT4)
  457.   ;;以左上角为基点绘制矩形
  458.   (if (and delSS (> (setq n (sslength delSS)) 0))
  459. ;;;    (command "erase" delSS "")
  460.     (progn (repeat n
  461.              (if (not (vlax-erased-p
  462.                         (vlax-ename->vla-object
  463.                           (setq tmp (ssname delSS (setq n (1- n))))
  464.                         )
  465.                       )
  466.                  )
  467.                (entdel tmp)
  468.              )
  469.            )
  470.            (setq delSS (ssadd))
  471.     )
  472.     (setq delSS (ssadd))
  473.   )
  474.   (setq        pt1 pt
  475.         pt2 (mapcar '+ pt (list a 0))
  476.         pt3 (mapcar '+ pt (list a (- b)))
  477.         pt4 (mapcar '+ pt (list 0 (- b)))
  478.   )
  479.   (ssadd (FunEntmakeLine pt1 pt2 "外框") delSS)
  480.   (ssadd (FunEntmakeLine pt2 pt3 "外框") delSS)
  481.   (ssadd (FunEntmakeLine pt3 pt4 "外框") delSS)
  482.   (ssadd (FunEntmakeLine pt4 pt1 "外框") delSS)
  483. )

  484. (defun FunEntmakeLine (a b lay /)
  485.   (if (entmake
  486.         (list (cons 0 "LINE")
  487.               (cons 8 lay)
  488.               (cons 62 1)
  489.               (cons 10 a)
  490.               (cons 11 b)
  491.         )
  492.       )
  493.     (entlast)
  494.     nil
  495.   )
  496. )

  497. (defun FUNredraw (pt a b / A B tmp PT1 PT2 PT3 PT4)
  498.   ;;以左上角为基点绘制矩形
  499.   (redraw)
  500.   (setq        pt1 pt
  501.         pt2 (mapcar '+ pt (list a 0))
  502.         pt3 (mapcar '+ pt (list a (- b)))
  503.         pt4 (mapcar '+ pt (list 0 (- b)))
  504.   )
  505.   (grdraw pt1 pt2 1)
  506.   (grdraw pt2 pt3 1)
  507.   (grdraw pt3 pt4 1)
  508.   (grdraw pt4 pt1 1)
  509. )

  510. (defun FUNredrawMouse (pt / A B tmp PT1 PT2 PT3 PT4)
  511.   (setq        tmp
  512.          (* 20 (/ (getvar "VIEWSIZE") (cadr (getvar "SCREENSIZE"))))
  513.   )
  514.   (setq pt1 (mapcar '- pt (list tmp tmp)))
  515.   (setq pt3 (mapcar '+ pt (list tmp tmp)))
  516.   (setq pt2 (mapcar '+ pt (list tmp (- tmp))))
  517.   (setq pt4 (mapcar '+ pt (list (- tmp) tmp)))
  518.   (grdraw pt1 pt3 3)
  519.   (grdraw pt4 pt2 3)
  520. )

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1 赞一个!

查看全部评分

发表于 2016-1-25 10:38:48 | 显示全部楼层
建议文字之间连线,容易查找
发表于 2016-10-23 13:56:21 | 显示全部楼层
非常实用的程序,谢谢楼主分享。
发表于 2018-8-28 15:59:53 | 显示全部楼层
你好能否价格个数统计和范围选择
发表于 2018-8-28 16:00:58 | 显示全部楼层
感谢楼主分享
发表于 2018-8-28 16:01:04 | 显示全部楼层
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-15 13:12 , Processed in 0.214735 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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