明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1064|回复: 2

点选标注 复制标注 按指定点移动标注并画线 ???→圆弧 符号的提取

[复制链接]
发表于 2013-1-15 11:29 | 显示全部楼层 |阅读模式
  1. (defun c:tbx()  (setvar "cmdecho" 0)  (setq oldos (getvar "osmode"))  (setvar "osmode" 0)  (setq e (entsel "\n**选择标注:"))  (setq en (car e))  (start_getss)  (command "copy" en "" "0,0" "0,0"           "explode" (entlast))  (setq ss (getdrawss))  (setq i 0)  (repeat (if ss (sslength ss) 0)    (setq en0 (ssname ss i))    (setq typ (cdr (assoc 0 (entget en0))))    (if (= "MTEXT" typ)              (setq mtext0 en0)      (entdel en0)    )    (setq i (+ i 1))  ) (setq pt (cdr (assoc 10 (entget mtext0)))       hh (cdr (assoc 40 (entget mtext0)))       ww (cdr (assoc 42 (entget mtext0)))       rot (cdr (assoc 50 (entget mtext0))) ) (setq p0 (polar pt (+ rot (* pi 1.5)) (* hh 0.5))) (setq p1 (polar p0 (+ rot pi) (* ww 0.5)))  (setq pt1 (getpoint "\n选择文字插入点:"))   (command "move" mtext0 "" p1 pt1)   ;(entdel en0)  (command "-layer" "m" "dim" "c" 3 "dim" "")   (setq pt2 (polar pt1 (+ rot(* pi 0.5)) (* hh 0.2))         pt3 (polar pt2 (+ rot pi) (* hh 0.1))         pt4 (polar pt2 rot (+ ww 0.7))   )   (command "line" pt3 pt4 "")   (setq pt5 (polar pt1 (+ rot(* pi 0.5)) (* hh 0.8))         pt6 (polar pt5 (+ rot pi) (* hh 0.1))         pt7 (polar pt5 rot (+ ww 0.7))   )   (command "line" pt6 pt7 "")  (command "layer" "s" "0" "")  (setvar "osmode" oldos)  (setvar "cmdecho" 0)  (princ)  )  (defun start_getss ()  (setq StartEnt (entlast)))(defun getdrawss ()  (if StartEnt    (progn      (setq Draw_SS (ssadd))      (setq ssss_en StartEnt)      (while (setq ssss_en (entnext ssss_en))        (setq Draw_entype (cdr (assoc 0 (entget ssss_en))))        (if (and (/= (strcase Draw_entype) "ATTRIB")                 (/= (strcase Draw_entype) "SEQEND")            )          (setq Draw_SS (ssadd ssss_en Draw_SS))        )      )    )    (setq Draw_SS (ssget "_x"))  )  Draw_SS)
这行代码是选择标注  炸开   原点复制 去提取标注文字根据指定点进行移动 并画线
但是碰到圆弧标注的时候 就提取不出来了 应为炸开圆弧标注 有两个  或者4个圆弧
怎样才能把用红圈框起来的圆弧提取出来  并移动到相应的位置
                    
想做出的效果图


烦请各位版主帮帮忙   更改一下代码  感激不敬

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-1-15 11:30 | 显示全部楼层
  1. (defun c:tbx()
  2.   (setvar "cmdecho" 0)
  3.   (setq oldos (getvar "osmode"))
  4.   (setvar "osmode" 0)
  5.   (setq e (entsel "\n**选择标注:"))
  6.   (setq en (car e))
  7.   (start_getss)
  8.   (command "copy" en "" "0,0" "0,0"
  9.            "explode" (entlast))
  10.   (setq ss (getdrawss))
  11.   (setq i 0)
  12.   (repeat (if ss (sslength ss) 0)
  13.     (setq en0 (ssname ss i))
  14.     (setq typ (cdr (assoc 0 (entget en0))))
  15.     (if (= "MTEXT" typ)       
  16.       (setq mtext0 en0)
  17.       (entdel en0)
  18.     )
  19.     (setq i (+ i 1))
  20.   )
  21. (setq pt (cdr (assoc 10 (entget mtext0)))
  22.        hh (cdr (assoc 40 (entget mtext0)))
  23.        ww (cdr (assoc 42 (entget mtext0)))
  24.        rot (cdr (assoc 50 (entget mtext0)))
  25. )
  26. (setq p0 (polar pt (+ rot (* pi 1.5)) (* hh 0.5)))
  27. (setq p1 (polar p0 (+ rot pi) (* ww 0.5)))
  28.   (setq pt1 (getpoint "\n选择文字插入点:"))
  29.    (command "move" mtext0 "" p1 pt1)
  30.    ;(entdel en0)
  31.   (command "-layer" "m" "dim" "c" 3 "dim" "")
  32.    (setq pt2 (polar pt1 (+ rot(* pi 0.5)) (* hh 0.2))
  33.          pt3 (polar pt2 (+ rot pi) (* hh 0.1))
  34.          pt4 (polar pt2 rot (+ ww 0.7))
  35.    )
  36.    (command "line" pt3 pt4 "")
  37.    (setq pt5 (polar pt1 (+ rot(* pi 0.5)) (* hh 0.8))
  38.          pt6 (polar pt5 (+ rot pi) (* hh 0.1))
  39.          pt7 (polar pt5 rot (+ ww 0.7))
  40.    )
  41.    (command "line" pt6 pt7 "")
  42.   (command "layer" "s" "0" "")
  43.   (setvar "osmode" oldos)
  44.   (setvar "cmdecho" 0)
  45.   (princ)
  46.   )
  47.   
  48. (defun start_getss ()
  49.   (setq StartEnt (entlast))
  50. )


  51. (defun getdrawss ()
  52.   (if StartEnt
  53.     (progn
  54.       (setq Draw_SS (ssadd))
  55.       (setq ssss_en StartEnt)
  56.       (while (setq ssss_en (entnext ssss_en))
  57.         (setq Draw_entype (cdr (assoc 0 (entget ssss_en))))
  58.         (if (and (/= (strcase Draw_entype) "ATTRIB")
  59.                  (/= (strcase Draw_entype) "SEQEND")
  60.             )
  61.           (setq Draw_SS (ssadd ssss_en Draw_SS))
  62.         )
  63.       )
  64.     )
  65.     (setq Draw_SS (ssget "_x"))
  66.   )
  67.   Draw_SS
  68. )
发表于 2013-1-15 13:02 | 显示全部楼层
楼历害哦,,,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 23:43 , Processed in 0.373921 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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