明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2521|回复: 8

[求助]标注打断

[复制链接]
发表于 2012-7-3 11:17:14 | 显示全部楼层 |阅读模式
本帖最后由 头大无恼 于 2012-7-3 11:18 编辑

有时候标注对象修改了,再修改标注很繁琐要两三个步骤,有没有可能打断重标。

见图示:只要重新选择标注点就自动改标注

懒人先行谢过

本帖子中包含更多资源

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

x
发表于 2012-7-3 12:39:10 | 显示全部楼层
  1. ;;; |标注合并和断开程序
  2. ;;; |断开dimbreak,合并dimcombine
  3. ;;; |snsj 2004.4.8
  4. (defun zm (et x /)
  5.         (cdr (assoc x (entget et)))
  6. )
  7. (defun pzm (nwzm y obj /)
  8.         (entmod (subst
  9.                                                 (cons y nwzm)
  10.                                                 (assoc y (entget obj))
  11.                                                 (entget obj)
  12.                                         )
  13.         )
  14. )
  15. (defun objnm (ent)
  16.         (vla-get-objectname (vlax-ename->vla-object ent))
  17. )
  18. (defun maxlst (pts / js i x tt jl ds)
  19.         (setq js 0
  20.                                 i 0
  21.         )
  22.         (repeat (length pts)
  23.                 (setq tt (nth i pts))
  24.                 (mapcar
  25.                         '(lambda (x)
  26.                                  (if (> (setq ds (distance tt x))
  27.                                                                 js
  28.                                                  )
  29.                                          (setq js ds
  30.                                                                  jl (list x tt)
  31.                                          )
  32.                                  )
  33.                          )
  34.                         pts
  35.                 )
  36.                 (setq i (1+ i))
  37.         )
  38.         jl
  39. )
  40. ;;; |标注断开
  41. (defun c:dd (/ ENT ENT1 GETPT JPT PT1 PT2 XL)
  42.         (vl-load-com)
  43.         (vl-cmdf "undo" "be")
  44.         (if (setq ent (car (entsel "\n选择要断开的标注<退出>:")))
  45.                 (progn
  46.                         (redraw ent 3)
  47.                         (setq getpt (getpoint "\n点取断开点:"))
  48.                         (redraw ent 4)
  49.                         (vl-cmdf ".copy" ent "" '(0 0) "@")
  50.                         (setq ent1 (entlast))
  51.                         (setq pt1 (zm ent 13)
  52.                                                 pt2 (zm ent 14)
  53.                         )
  54.                         (if (= (objnm ent) "AcDbAlignedDimension")
  55.                                 (vl-cmdf ".xline" pt1 pt2 "")
  56.                                 (vl-cmdf ".xline" "a" (angtos (zm ent 50) 0 4) pt1 "")
  57.                         )
  58.                         (setq xl (entlast))
  59.                         (pzm (setq jpt (vlax-curve-getClosestPointTo xl getpt))
  60.                                          13 ent
  61.                         )
  62.                         (pzm jpt 14 ent1)
  63.                         (vl-cmdf ".erase" xl "")
  64.                 )
  65.         )
  66.         (vl-cmdf "undo" "e")
  67.         (princ)
  68. )
  69. ;;; |标注合并
  70. (defun c:bb (/ ANG1 ANG2 ENT ENT1 MAXPT PT1 PT2 PT3 PT4 PT5 PT6 PT7
  71.                                                                                          XL
  72.                                                                                 )
  73.         (vl-load-com)
  74.         (vl-cmdf "undo" "be")
  75.         (if (setq ent (car (entsel "\n选择要合并对标注<退出>:")))
  76.                 (progn
  77.                         (redraw ent 3)
  78.                         (setq ent1 (car (entsel "\n选择另一个标注对象<退出>:")))
  79.                         (redraw ent 4)
  80.                         (setq pt1 (zm ent 13)
  81.                                                 pt2 (zm ent 14)
  82.                                                 pt3 (zm ent1 13)
  83.                                                 pt4 (zm ent1 14)
  84.                         )
  85.                         (if (= (objnm ent) "AcDbAlignedDimension")
  86.                                 (setq ang1 (angle pt1 pt2))
  87.                                 (setq ang1 (zm ent 50))
  88.                         )
  89.                         (if (= (objnm ent1) "AcDbAlignedDimension")
  90.                                 (setq ang2 (angle pt3 pt4))
  91.                                 (setq ang2 (zm ent1 50))
  92.                         )
  93.                         (if (or
  94.                                                 (or
  95.                                                         (equal ang2 ang1 0.00001)
  96.                                                         (equal (+ pi ang2) ang1 0.00001)
  97.                                                 )
  98.                                                 (equal (- ang2 pi) ang1 0.00001)
  99.                                         )
  100.                                 (progn
  101.                                         (vl-cmdf ".xline" "a" (angtos ang1 0 4) pt1 "")
  102.                                         (setq xl (entlast))
  103.                                         (setq pt5 (vlax-curve-getClosestPointTo xl pt2)
  104.                                                                 pt6 (vlax-curve-getClosestPointTo xl pt3)
  105.                                                                 pt7 (vlax-curve-getClosestPointTo xl pt4)
  106.                                         )
  107.                                         (setq maxpt (maxlst (list pt1 pt5 pt6 pt7)))
  108.                                         (pzm (car maxpt) 13 ent)
  109.                                         (pzm (cadr maxpt) 14 ent)
  110.                                         (vl-cmdf ".erase" xl ent1 "")
  111.                                 )
  112.                         )
  113.                 )
  114.         )
  115.         (vl-cmdf "undo" "e")
  116.         (princ)
  117. )

评分

参与人数 1明经币 +1 收起 理由
头大无恼 + 1 赞一个!

查看全部评分

发表于 2012-7-3 13:17:57 | 显示全部楼层
楼上的谢了!!!!!!!!!
 楼主| 发表于 2012-7-4 09:04:18 | 显示全部楼层
能加个循环就好可以连续打断
发表于 2012-7-4 09:39:42 | 显示全部楼层
(if (setq ent (car (entsel "\n选择要断开的标注<退出>:")))
    (progn
      (redraw ent 3)
      (setq getpt (getpoint "\n点取断开点:"))
      
===>      

(while (and
          (princ "\n选择要断开的标注<退出>:")
          (setq ent (ssget ":E:S" '((0 . "DIMENSION"))))
       )   
    (setq ent (ssname ent 0))
    (redraw ent 3)
    (setq getpt (getpoint "\n点取断开点:"))

评分

参与人数 1明经币 +1 收起 理由
头大无恼 + 1 赞一个!

查看全部评分

发表于 2012-7-4 13:45:26 | 显示全部楼层
Andyhon 发表于 2012-7-4 09:39
(if (setq ent (car (entsel "\n选择要断开的标注:")))
    (progn
      (redraw ent 3)

请教这个怎样改为连续打断,谢谢【】、
(defun c:DimBreak (/ ent ent1 getpt jpt pt1 pt2)
  (setq ent (car (entsel "\n选择要断开的标注<退出>:")))
  (or ent (fsxm-silenceexit))
  (setq getpt (getpoint "\n点取断开点:"))
  (or getpt (fsxm-silenceexit))
  (setvar "cmdecho" 0)
  (vl-cmdf "undo" "be")
  (vl-cmdf ".copy" ent "" '(0 0) "@")
  (setq ent1 (entlast))
  (setq pt1 (fsxm-getendxf ent 13))
  (if (= (vla-get-objectname (vlax-ename->vla-object ent))
         "AcDbAlignedDimension"
      )
    (setq pt2 (fsxm-getendxf ent 14))
    (setq pt2 (polar pt1 (fsxm-getendxf ent 50) 1))
  )
  (setq jpt (fsxm-pt-prj (trans getpt 1 0) pt1 pt2))
  (fsxm-setendxf ent 13 jpt)
  (fsxm-setendxf ent1 14 jpt)
  (vl-cmdf "undo" "e")
  (princ)
)
 楼主| 发表于 2012-7-6 12:43:14 | 显示全部楼层
(if (setq ent (car (entsel "\n选择要断开的标注<退出>:")))
   (progn
      (redraw ent 3)
     (setq getpt (getpoint "\n点取断开点:"))
===========>改为
(while (and
         (princ "\n选择要断开的标注<退出>:")
         (setq ent (ssget ":E:S" '((0 . "DIMENSION"))))
       )   
         (setq ent (ssname ent 0))
      (progn
      (redraw ent 3)
      (setq getpt (getpoint "\n点取断开点:"))
发表于 2015-11-9 15:02:39 | 显示全部楼层
hao3ren 发表于 2012-7-3 12:39

为什么断开后,标注会跑很远??
发表于 2015-12-15 13:00:28 | 显示全部楼层
是直接复制代码,然后直接新建一个TEXT,然后改后缀名嘛(LSP)    但是为什么你们讨论的这些代码,我都没成功啊,我用的是AUTOCAD2010   求解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 01:25 , Processed in 0.194740 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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