找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1930|回复: 2

[求助] 请给增加直线方位角显示

[复制链接]
发表于 2015-1-3 15:27:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请给增加显示直线的方位角
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2015-1-3 15:29:05 | 显示全部楼层
  1. ;---------------------------------------------------------------------------------------------------------------------
  2. ; ★动态信息查询(精简+注释版)
  3. ; ★版权归原作者所有,精简目的只是让初学者更容易看懂
  4. ;---------------------------------------------------------------------------------------------------------------------
  5. (defun C:xxcx (/ myerr fx add_solid add_tex dis olderr oldos oldfill ss pd gr pt ent entold)
  6. (defun myerr (msg)
  7.     (setq *error* olderr)
  8.     (command "_.undo" "_b")
  9.     (princ)
  10.    )
  11. ;画矩形提示框
  12. (defun add_solid (p1 p2 p3 p4)
  13.     (entmakex (list (cons 0 "SOLID")
  14.         (cons 100 "AcDbEntity")
  15.         (cons 62 8);提示框背景颜色
  16.         (cons 100 "AcDbTrace")
  17.         (cons 10 p1)
  18.         (cons 11 p2)
  19.         (cons 12 p3)
  20.         (cons 13 p4)
  21.         )
  22.     )
  23.   )
  24. ;写列表文本
  25. (defun add_text (pt h ang txt style jus)
  26.     (entmakex (list
  27.         (cons 0 "TEXT")
  28.         (cons 100 "AcDbEntity")
  29.         (cons 62 7);提示框字体颜色
  30.         (cons 100 "AcDbText")
  31.         (cons 10 pt)
  32.         (cons 40 h)
  33.         (cons 1 txt)
  34.         (cons 7 style)
  35.         )
  36.     )
  37.   )
  38. ;处理子程序
  39. (defun dis (ent / obj laynm name lst h n)
  40.     (setq obj (vlax-ename->vla-object ent)
  41.           laynm  (strcat "图层:" (vlax-get obj 'Layer))
  42.           name  (vlax-get obj 'ObjectName)
  43.           )
  44.     (cond
  45.       ((= name "AcDbLine");图元为直线时执行,若使用者需要增加功能,在cond里面添加即可~
  46.        (setq lst (list
  47.                     "【直线】"
  48.                     laynm
  49.                     (strcat "长度:" (rtos (vlax-get obj 'Length) 2 2));后面的2为小数点位数
  50.                   )
  51.           )
  52.       )
  53.       ((= name "AcDbPolyline");图元为多段线执行
  54.        (setq lst (list
  55.                     "【多段线】"
  56.                     laynm
  57.                     (strcat "多段线:"
  58.                         (if (= (vla-get-Closed obj) :vlax-false)
  59.                         "不闭合"
  60.                         "闭合"
  61.                         )
  62.                       )
  63.                     (strcat "面积:" (rtos (vlax-get obj 'Area) 2 2))
  64.                   )
  65.            )
  66.       )
  67.       (T
  68.        (setq lst (list "【暂不支持】" laynm))
  69.       )
  70.     );cond
  71.     (setq ss (ssadd)
  72.           h (/ (getvar "viewsize") 60);视图大小,修改"60"可以调整提示框大小
  73.           n (* 1.4 (1+ (/ (apply 'max (mapcar 'strlen lst)) 2.0)));最长字符串决定提示框最大宽度
  74.         )
  75.     (ssadd
  76.       (add_solid
  77.          pt
  78.          (polar pt 0 (* n h))
  79.          (setq pt1 (polar pt (* pi 1.5) (+ h (* 1.6 h (length lst)))));表长度决定提示框高度
  80.          (polar pt1 0 (* n h))
  81.          )
  82.       ss
  83.     )
  84.     (setq pt (polar pt 0 (* n h 0.1)))
  85.     (setq n -1)
  86.     (repeat (length lst);repeat
  87.       (ssadd
  88.         (add_text
  89.           (setq pt (polar pt (* pi 1.5) (* 1.6 h)))
  90.            h
  91.            0
  92.            (nth (setq n (1+ n)) lst)
  93.            "新宋体"
  94.            1
  95.        )
  96.        ss
  97.       )
  98.     );repeat
  99.   )
  100. ;开始程序=======================================================================*
  101.   (vl-load-com)
  102.   (command "_.undo" "_m")
  103.   (prompt "\n***移动鼠标掠过对象查看信息!***")
  104.   (setq  olderr  *error*
  105.   *error*  myerr
  106.   )
  107.   (setq oldos (getvar "osmode"))
  108.   (setq oldfill (getvar "fillmode"))
  109.   (setvar "osmode" 0)
  110.   (setvar "fillmode" 1)
  111.   (setvar "cmdecho" 0)
  112.   (if (not (tblsearch "style" "新宋体"))
  113.     (command "_.style" "新宋体" "新宋体" "" "" "" "" "")
  114.   )
  115. ;-------------(开始)前处理完毕--------------------------------------------
  116.   (setq ss (ssadd))
  117.   (while (not pd);while1
  118.     (while ;while
  119.     (not (progn
  120.       (setq gr (grread T 1));鼠标动作
  121.       (if (= (car gr) 5)
  122.         (setq pt  (cadr gr);鼠标坐标
  123.              ent (nentselp pt);选择物件
  124.              ent (if (and ent (= (type (last (last ent))) 'ename))
  125.                      (last (last ent))
  126.                      (car ent)
  127.                    )
  128.               )
  129.         (setq pd T)
  130.       );if
  131.     )
  132.      )
  133.     );while2
  134.     (if (and (not pd) (not (equal ent entold)) (not (ssmemb ent ss)))
  135.       (progn
  136.           (if entold (redraw entold 4))
  137.           (if ss (command "_.erase" ss ""))
  138.           (redraw ent 3)
  139.           (dis ent)
  140.           (setq entold ent)
  141.       )
  142.     )
  143.   );while1
  144.   (if entold (redraw entold 4))
  145.   (if ss (command "_.erase" ss ""))
  146.   (setvar "osmode" oldos)
  147.   (setvar "fillmode" oldfill)
  148.   (setq *error* olderr)
  149.   (princ)
  150. );defun
  151. (prompt "\n ★★★★动态信息查询(精简+注释版)\n ★★★★版权归原作者所有,精简目的只是让初学者更容易看懂 \n")
  152. (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2015-1-3 17:17:50 | 显示全部楼层
能不能多提供点信息? 截取个图什么的,说下还哪个地方需要完善。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-19 06:43 , Processed in 0.378561 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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