明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1719|回复: 4

Show一下刚做的动态标方位角度 有码

[复制链接]
发表于 2011-12-9 16:59 | 显示全部楼层 |阅读模式
本帖最后由 snddd2000 于 2011-12-19 09:38 编辑

和雷锋、cabinsummer、highflybir的帖子里学了下动态显示,特此感谢。
小秀一下,录制软件慢了点。望指导
主要用在化工设备的方位图,角度标注。模拟捕捉符号
  1. (defun c:qq ()
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3.   (setq r1 (/ (getvar "viewsize") 500))
  4.   (setq r1 (* (read (getenv "AutoSnapSize")) r1))
  5.   (setq pt1 '(0 0))
  6.   (setq        lst1  '()
  7.         setp0 (/ pi 10)
  8.   )
  9.   (repeat 5

  10.     (setq lst1 (cons (polar pt1 setp0 r1) lst1))
  11.     (setq setp0 (+ setp0 (/ (* 2 pi) 5)))

  12.   )
  13.   (setq        entlist00 (entmake
  14.                     (append
  15.                       (list
  16.                         (cons 0 "LWPOLYLINE")
  17.                         (cons 100 "AcDbEntity")
  18.                         (cons 100 "AcDbPolyline")
  19.                         (cons 90 (length lst1))
  20.                         (cons 70 1)
  21.                         (cons 62 (read (getenv "AutoSnapColor")))
  22.                         (cons 43 (/ r1 5))
  23.                       )
  24.                       (mapcar '(lambda (p) (cons 10 p)) lst1)
  25.                     )
  26.                   )
  27.   )
  28.   (setq        ent00 (entlast)
  29.         pd    t
  30.   )
  31.   (entdel ent00)
  32.   (setq pd00 nil) ;_起始图元,先挂起;标记pd00为nil则不显示

  33. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  34.   (prompt "\n选择圆或圆弧")
  35.   (while (null (setq ss01 (ssget ":S" '((0 . "CIRCLE,ARC"))))
  36.          )
  37.   )
  38.   (setq ent01 (ssname ss01 0))
  39.   (setq cpt01 (cdr (assoc 10 (entget ent01)))) ;_圆弧或圆的圆心坐标

  40.   (setq pt01 cpt01)
  41.   (setq        entlist0 (entmake (list        '(0 . "MTEXT")
  42.                                 '(100 . "AcDbEntity")
  43.                                 '(100 . "AcDbMText")
  44.                                 '(8 . "尺寸线")
  45.                                 (cons 10 pt01)
  46.                                 '(40 . 18.0)
  47.                                 '(41 . 0.0)
  48.                                 '(71 . 5)
  49.                                 '(72 . 1)
  50.                                 '(1 . "0%%D")
  51.                                 '(7 . "Simplex67")
  52.                                 '(210 0.0 0.0 1.0)
  53.                                 '(11 1.0 0.0 0.0)
  54.                                 '(42 . 32.16)
  55.                                 '(43 . 24.0)
  56.                                 '(50 . 0.0)
  57.                                 '(73 . 1)
  58.                                 '(44 . 1.0)
  59.                           )
  60.                  )
  61.   )
  62.   (setq        ent0 (entlast)
  63.         pd   t
  64.   )
  65.   (while pd
  66.     (setq mm (grread t 4))
  67.     (cond
  68.       ((= 25 (car mm)) (progn (entdel ent0) (setq pd nil)))
  69.       ((= 5 (car mm))
  70.        (progn
  71.          (setq pd t)
  72.          (setq pt0 (cadr mm))
  73.          (entdel ent0)

  74.          (if pd00
  75.            (progn (entdel ent00)
  76.                   (setq pd00 nil)
  77.            )
  78.          )
  79.          (setq pt1 (osnap pt0 "_end,_int,nea"))
  80.          (entdel ent0)
  81.          (if pt1
  82.            (setq pt0 pt1)
  83.          )
  84. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  85.          (if pt1
  86.            (progn
  87.              (setq r1 (/ (getvar "viewsize") 500))
  88.              (setq r1 (* (read (getenv "AutoSnapSize")) r1))
  89.              (setq lst1         '()
  90.                    setp0 (/ pi 10)
  91.              )
  92.              (if (null pd00)
  93.                (progn (entdel ent00)
  94.                       (setq pd00 t) ;_捕捉图元,显示,标记pd00为t则显示
  95.                )
  96.              ) ;_end if
  97.              (setq entlist00 (entget ent00))
  98.              (setq entlist00
  99.                     (mapcar
  100.                       '(lambda (e)
  101.                          (cond
  102.                            ((= 10 (car e))
  103.                             (progn
  104.                               (setq e (cons 10 (polar pt1 setp0 r1)))
  105.                               (setq setp0 (+ setp0 (/ (* 2 pi) 5)))
  106.                               (setq e e)
  107.                             ) ;_end progn
  108.                            )
  109.                            ((= 43 (car e)) (setq e (cons 43 (/ r1 5))))
  110.                            (t (setq e e))
  111.                          ) ;_end cond
  112.                        ) ;_end lambda
  113.                       entlist00
  114.                     ) ;_end mapcar
  115.              ) ;_end setq entlist00
  116.              (entmod entlist00)
  117.            )
  118.          )
  119. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;         

  120.          (setq txt0 (rtos (* 180 (/ (angle cpt01 pt0) pi)) 2 1))
  121.          (setq txt0 (strcat txt0 "%%d"))
  122.          (setq entlist0 (entget ent0))
  123.          (setq
  124.            entlist0 (subst (cons 10 pt0) (assoc 10 entlist0) entlist0)
  125.          )
  126.          (setq
  127.            entlist0 (subst (cons 1 txt0) (assoc 1 entlist0) entlist0)
  128.          )
  129.          (entmod entlist0)
  130. ;;;         (entupd ent0)
  131.        )
  132.       )
  133.       (t (setq pd nil))
  134.     )
  135.   )
  136.   (if pd00
  137.     (progn (entdel ent00) (setq pd00 nil)) ;_最后删除标记
  138.   ) ;_end if
  139. ) ;_end defun


评分

参与人数 1明经币 +1 收起 理由
cabinsummer + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-12-18 17:17 | 显示全部楼层
很好的应用实例
发表于 2011-12-18 20:14 | 显示全部楼层
不错,好程序!
发表于 2012-4-8 13:36 | 显示全部楼层
楼主,选择什么对象才可以?直线被过滤了

点评

(setq ss01 (ssget ":S" '((0 . "CIRCLE,ARC"))));;只能选圆或者圆弧。  发表于 2012-4-10 20:15
发表于 2012-4-12 13:29 | 显示全部楼层
skg123 发表于 2012-4-8 13:36
楼主,选择什么对象才可以?直线被过滤了

多谢,可以运行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-11 21:06 , Processed in 0.161478 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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