明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2229|回复: 9

[已解答] 点击长方形内部,自动标注

[复制链接]
发表于 2014-8-27 07:38 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 Gu_xl 于 2014-8-27 09:19 编辑

求大神帮忙看看,谢谢大神啊!
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

;为测试 (defun c:test () (setq pt (getpoint)) (setq en1 (entlast)) (vl-cmdf "boundary" "a" "o" "p" "" pt "") (setq en (entlast)) (if (not (equal en1 en)) (progn (setq enlst (entget en)) (setq pts (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlst))) (setq dis1 (distance (nth 0 pts) (nth 1 pts))) (setq dis2 (distance (nth 1 pts) (nth 2 pt ...
发表于 2014-8-27 07:38 | 显示全部楼层
;为测试
(defun c:test ()
  (setq pt (getpoint))
  (setq en1 (entlast))
  (vl-cmdf "boundary" "a" "o" "p" "" pt "")
  (setq en (entlast))
  (if (not (equal en1 en))
    (progn
      (setq enlst (entget en))
      (setq pts (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlst)))
      (setq dis1 (distance (nth 0 pts) (nth 1 pts)))
      (setq dis2 (distance (nth 1 pts) (nth 2 pts)))
      (setq pt1 (mapcar '* (mapcar '+ (nth 0 pts) (nth 1 pts)) '(0.5 0.5 0.5)))
      (setq pt2 (mapcar '* (mapcar '+ (nth 1 pts) (nth 2 pts)) '(0.5 0.5 0.5)))
      (entmakex
        (list (cons 0 "text")
          (cons 1 (rtos dis1 2 2))
          (cons 7 (getvar "textstyle"))
          (cons 40 3);字高
          (cons 10 pt1)
          (cons 11 pt1)
          (cons 72 1)
          (cons 73 2)
          (cons 8 "0")
        )
      )
      (entmakex
        (list (cons 0 "text")
          (cons 1 (rtos dis2 2 2))
          (cons 7 (getvar "textstyle"))
          (cons 40 3);字高
          (cons 10 pt2)
          (cons 11 pt2)
          (cons 72 1)
          (cons 73 2)
          (cons 8 "0")
        )
      )
      (entdel en)
    )
  )
)
回复

使用道具 举报

 楼主| 发表于 2014-8-27 12:24 | 显示全部楼层
duotu007 发表于 2014-8-27 07:38
;为测试
(defun c:test ()
  (setq pt (getpoint))

大神 你真厉害啊!!!还有两个问题 能再帮我看看不?
http://bbs.mjtd.com/forum.php?mo ... mp;page=1#pid650054
http://bbs.mjtd.com/thread-111203-1-1.html
回复

使用道具 举报

发表于 2014-8-27 12:43 | 显示全部楼层
思路一样的,上面代码修改下就可以了。
回复

使用道具 举报

 楼主| 发表于 2014-8-27 12:50 | 显示全部楼层
duotu007 发表于 2014-8-27 12:43
思路一样的,上面代码修改下就可以了。

本人愚昧 不知道大神可有时间帮忙修改下呢?谢谢啊!
回复

使用道具 举报

发表于 2014-8-27 13:17 | 显示全部楼层
(defun c:test ()
  (setq pt (getpoint))
  (setq en1 (entlast))
  (vl-cmdf "boundary" "a" "o" "p" "" pt "")
  (setq en (entlast))
  (if (not (equal en1 en))
    (progn
      (setq enlst (entget en))
      (setq pts (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlst)))
      (setq i 0)
      (repeat (length pts)
        (setq j (+ i 1))
        (if (> j (- (length pts) 1)) (setq j 0))
        (setq dis (distance (nth i pts) (nth j pts)))
        (setq pt1 (mapcar '* (mapcar '+ (nth i pts) (nth j pts)) '(0.5 0.5 0.5)))
        (entmakex
          (list (cons 0 "text")
            (cons 1 (rtos dis 2 2))
            (cons 7 (getvar "textstyle"))
            (cons 40 3);字高
            (cons 10 pt1)
            (cons 11 pt1)
            (cons 72 1)
            (cons 73 2)
            (cons 8 "0")
          )
        )
        (setq i (+ i 1))
      )
      (entdel en)
    )
  )
)
;把所有的边长都写出来了

评分

参与人数 1明经币 +1 收起 理由
hhaoma + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-8-27 13:34 | 显示全部楼层
duotu007 发表于 2014-8-27 13:17
(defun c:test ()
  (setq pt (getpoint))
  (setq en1 (entlast))

请问大神 能把边长的文本格式改成dim标注的形式不?
我想把标注标在下边和右边的内部(如图所示) 有办法修改不?

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-8-27 14:08 | 显示全部楼层
(defun c:test ()
  (setq pt (getpoint))
  (setq en1 (entlast))
  (vl-cmdf "boundary" "a" "o" "p" "" pt "")
  (setq en (entlast))
  (setq cdim (tblsearch "dimstyle" (getvar "dimstyle")))
  (setq txthi (* (cdr (assoc 140 cdim)) (cdr (assoc 40 cdim))))
  (if (not (equal en1 en))
    (progn
      (setq enlst (entget en))
      (setq pts (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlst)))
      (setq i 0)
      (repeat (length pts)
        (setq j (+ i 1))
        (if (> j (- (length pts) 1)) (setq j 0))
        (setq pt (polar (nth j pts) (- (angle (nth i pts) (nth j pts)) (/ pi 2)) (* txthi 2)))
        (entmakex
          (list
            '(0 . "DIMENSION") '(100 . "AcDbEntity") '(100 . "AcDbDimension")
            (cons 10 pt) (cons 3 (getvar "dimstyle")) (cons 8 "0") '(70 . 33) '(1 . "") '(100 . "AcDbAlignedDimension")
            (cons 13 (nth i pts)) (cons 14 (nth j pts))
          )
        )
        (setq i (+ i 1))
      )
      (entdel en)
    )
  )
)
回复

使用道具 举报

发表于 2014-8-27 15:33 | 显示全部楼层
duotu007 发表于 2014-8-26 20:08
(defun c:test ()
  (setq pt (getpoint))
  (setq en1 (entlast))

高手
回复

使用道具 举报

发表于 2014-8-27 16:55 | 显示全部楼层
本帖最后由 bai2000 于 2014-8-27 16:58 编辑

能不能改改,能控制字体高度?还能连续标注?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 19:29 , Processed in 0.915083 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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