明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 963|回复: 8

[已解答] 连续画直线自动在直线上标注长度,求高手帮忙

[复制链接]
发表于 2016-5-24 09:12 | 显示全部楼层 |阅读模式
本帖最后由 717957265 于 2016-5-24 09:44 编辑

像图片里的效果,能改自高,最终效果一样就行,求大大们帮忙,小弟感激不尽
cad2008
达到图片效果就可以,谢谢大大们了



本帖子中包含更多资源

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

x
 楼主| 发表于 2016-5-28 10:16 | 显示全部楼层
自己顶一顶
发表于 2016-5-29 08:59 | 显示全部楼层
本帖最后由 danxingpen 于 2016-5-30 11:18 编辑

试一下,文字大小取默认,文字样式取默认,错误处理没有添加。

本帖子中包含更多资源

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

x
 楼主| 发表于 2016-5-30 08:37 | 显示全部楼层
本帖最后由 717957265 于 2016-5-30 08:38 编辑
danxingpen 发表于 2016-5-29 08:59
试一下,文字大小取默认,文字样式取默认,错误处理没有添加。

直线从右往左画,文字是倒着的,还在线的下边。能改成和从左往右画一样的文字在线的上边,正着的文字吗?

本帖子中包含更多资源

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

x
发表于 2016-5-30 11:19 | 显示全部楼层
717957265 发表于 2016-5-30 08:37
直线从右往左画,文字是倒着的,还在线的下边。能改成和从左往右画一样的文字在线的上边,正着的文字吗?

三楼已改,,,,,,,,,,,,,
 楼主| 发表于 2016-5-31 13:22 | 显示全部楼层
本帖最后由 717957265 于 2016-5-31 13:24 编辑
danxingpen 发表于 2016-5-30 11:19
三楼已改,,,,,,,,,,,,,

发现一个小问题,麻烦您看看怎么回事。
如果标注样式改为宋体,直线从左往右画 和从右边往做画,会有标注压线的情况。
文字距离我改成了0.5,0.2也是这种情况。

本帖子中包含更多资源

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

x
 楼主| 发表于 2016-6-1 14:44 | 显示全部楼层
danxingpen 发表于 2016-5-30 11:19
三楼已改,,,,,,,,,,,,,

自己顶一顶
发表于 2016-6-3 09:50 | 显示全部楼层
717957265 发表于 2016-6-1 14:44
自己顶一顶

(defun c:1111( / rlastent ss n lent ps pe ang dist midp textdist bsang)
  (setq rlastent(entlast))
  (command "._line")
  (while (/= 0 (getvar "CMDACTIVE"))
    (command pause)
  )
  (if rlastent
    (progn
    (setq ss (ssadd))
    (while (setq rlastent(entnext rlastent))
        (ssadd rlastent ss)
    ))
    (setq ss(ssget "x"))
  )
  (setq textdist(* 0.2 (getvar "textsize"));文字距离线取默认字体高度的0.2,这个高度可自己调整--
        bsang(angle  '(0 0 0) (getvar "ucsxdir"));考虑UCS--------------------------------------
        bsang(* 180.0 (/ bsang pi))
        )
  (repeat (setq n(sslength ss))
    (setq n(1- n)
          rlastent(ssname ss n)
          lent(entget rlastent)
          ps(cdr(assoc 10 lent))
          pe(cdr(assoc 11 lent))
          ang(angle ps pe)
          dist(distance ps pe)
          midp(mapcar '+ pe ps)
          midp(mapcar '* midp '(0.5 0.5 0.5))
          )
    (cond
      ((>= (* 0.5 pi) ang 0);第一象限,
       (setq textinp(trans (polar midp (+ ang (* pi 0.5)) textdist) 0 1))
      )
      ((>= pi ang (* 0.5 pi));第二象限,
       (setq textinp(trans (polar midp (- ang (* pi 0.5)) textdist) 0 1))
       (setq ang(- ang pi))      
      )
      ((>= (* 1.5 pi) ang pi);第三象限,
       (setq textinp(trans (polar midp (- ang (* pi 0.5)) textdist) 0 1))
       (setq ang(- ang pi))
      )
      (t;第四象限,
       (setq textinp(trans (polar midp (+ ang (* pi 0.5)) textdist) 0 1))
       )
    )
    (setq ang(* 180.0 (/ ang pi)))
    (command ".-text" "j" "bc" "non" textinp "" (- ang bsang) (rtos dist));文字高度就是这一行的"",这个可以自己调整,或者干脆和线长度相关--
    (princ (rtos ang))
  )
  (princ)
)
 楼主| 发表于 2016-6-4 09:15 | 显示全部楼层
danxingpen 发表于 2016-6-3 09:50
(defun c:1111( / rlastent ss n lent ps pe ang dist midp textdist bsang)
  (setq rlastent(entlast) ...

(defun c:1111( / rlastent ss n lent ps pe ang dist midp textdist bsang)
  (setq rlastent(entlast))
  (command "._line")
  (while (/= 0 (getvar "CMDACTIVE"))
    (command pause)
  )
  (if rlastent
    (progn
    (setq ss (ssadd))
    (while (setq rlastent(entnext rlastent))
        (ssadd rlastent ss)
    ))
    (setq ss(ssget "x"))
  )
  (setq textdist(* 0.2 (getvar "textsize"));文字距离线取默认字体高度的0.2,这个高度可自己调整--
        bsang(angle  '(0 0 0) (getvar "ucsxdir"));考虑UCS--------------------------------------
        bsang(* 180.0 (/ bsang pi))
        )
  (repeat (setq n(sslength ss))
    (setq n(1- n)
          rlastent(ssname ss n)
          lent(entget rlastent)
          ps(cdr(assoc 10 lent))
          pe(cdr(assoc 11 lent))
          ang(angle ps pe)
          dist(distance ps pe)
          midp(mapcar '+ pe ps)
          midp(mapcar '* midp '(0.5 0.5 0.5))
          textinp(trans (polar midp (+ ang (* pi 0.5)) textdist) 0 1)
          ang(* 180.0 (/ ang pi))
          )
    (if (>= 270 ang 90)(setq  textinp(trans (polar midp (+ ang (* pi -0.5)) textdist) 0 1) ang(- ang 180)));保证文字向上----------------
    (command ".-text" "j" "bc" "non" textinp "" (- ang bsang) (rtos dist));文字高度就是这一行的"",这个可以自己调整,或者干脆和线长度相关--
    (princ (rtos ang))
  )
  (princ)
)

这是其他人改的 非常感谢你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 00:42 , Processed in 0.215631 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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