feelg 发表于 2014-1-14 10:53:33

多边形批量快速标注LSP

本帖最后由 feelg 于 2014-1-14 10:56 编辑

多边形批量快标注LSP,此程序还有一个不足之处,标注时与标注对象距离不能设置,造成,标注不美观,还要后期调整,求高手进行升级优化。谢谢。

qjg_77 发表于 2019-1-13 21:28:28

大家试试,这个行不行

菜卷鱼 发表于 2014-1-16 08:38:35

我不是版主,不知道我能不能改(defun c:z1 ()
   (prompt "此程序根据当前标注样式进行标注,设置textsize变量可修改与标注线的距离!")
(setq dic (* 7 (getvar "dimscale")))
(setq ss (ssget))
(setq n 0)
(repeat (sslength ss)
    (setq en (ssname ss n))
    (setq endata (entget en))
    (if (= (cdr (assoc 0 endata)) "LWPOLYLINE")
      (mmh_3 en)
      (if (= (cdr (assoc 0 endata)) "ARC")
(mmh_1 en)
(mmh_2 endata)
      )
    )
    (setq n (1+ n))
)
(princ)
)
(prompt "<<z1>>快速标注")
(defun mmh_1 (en)
(setvar "osmode" 0)
(setq po_1 (vlax-curve-getstartPoint en))
(setq po_2 (vlax-curve-getendPoint en))
(setq po_1_x (car po_1))
(setq po_1_y (cadr po_1))
(setq po_2_x (car po_2))
(setq po_2_y (cadr po_2))
(command "dimaligned" po_1 po_2 po_1)
(setvar "osmode" 16383)
)
(defun mmh_2 (endata)
(setvar "osmode" 0)
(setq p_1 (cdr (assoc 10 endata)))
(setq p_2 (cdr (assoc 11 endata)))
(setq p3 (polar p_1 (+ (angle p_1 p_2) (/ pi 2)) dic))
(command "dimaligned" p_1 p_2 p3)
(setvar "osmode" 16383)
)
(defun mmh_3 (en)
(setq m 0)
(command "explode" en "")
(setq ssl (ssget "p"))
(repeat (sslength ssl)
    (setq enl (ssname ssl m))
    (setq enldata (entget enl))
    (if (= (cdr (assoc 0 enldata)) "ARC")
      (mmh_1 enl)
      (mmh_2 enldata)
    )
    (setq m (1+ m))
)
(command "pedit" "m" ssl "" "y" "j" "" "")
)

Linhay 发表于 2015-1-29 18:47:26

菜卷鱼 发表于 2014-1-16 08:38 static/image/common/back.gif
我不是版主,不知道我能不能改


呃.麻烦问一下不想要左边这样的,怎么破?谢谢

feelg 发表于 2014-1-14 10:54:32

(defun c:z1 ()
   (prompt "此程序根据当前标注样式进行标注,设置textsize变量可修改与标注线的距离!")
(setq ss (ssget))
(setq n 0)
(repeat (sslength ss)
    (setq en (ssname ss n))
    (setq endata (entget en))
    (if (= (cdr (assoc 0 endata)) "LWPOLYLINE")
      (mmh_3 en)
      (if (= (cdr (assoc 0 endata)) "ARC")
(mmh_1 en)
(mmh_2 endata)
      )
    )
    (setq n (1+ n))
)
(princ)
)
(prompt "<<z1>>快速标注")
(defun mmh_1 (en)
(setvar "osmode" 0)
(setq po_1 (vlax-curve-getstartPoint en))
(setq po_2 (vlax-curve-getendPoint en))
(setq po_1_x (car po_1))
(setq po_1_y (cadr po_1))
(setq po_2_x (car po_2))
(setq po_2_y (cadr po_2))
(command "dimaligned" po_1 po_2 po_1)
(setvar "osmode" 16383)
)
(defun mmh_2 (endata)
(setvar "osmode" 0)
(setq p_1 (cdr (assoc 10 endata)))
(setq p_2 (cdr (assoc 11 endata)))
(setq p3 (polar p_1 (+ (angle p_1 p_2) (/ pi 2)) 10))
(command "dimaligned" p_1 p_2 p3)
(setvar "osmode" 16383)
)
(defun mmh_3 (en)
(setq m 0)
(command "explode" en "")
(setq ssl (ssget "p"))
(repeat (sslength ssl)
    (setq enl (ssname ssl m))
    (setq enldata (entget enl))
    (if (= (cdr (assoc 0 enldata)) "ARC")
      (mmh_1 enl)
      (mmh_2 enldata)
    )
    (setq m (1+ m))
)
(command "pedit" "m" ssl "" "y" "j" "" "")
)

feelg 发表于 2014-1-14 10:55:34

代码如上,很好的一个程度,大家帮忙优化下。标注位置的控制。

feelg 发表于 2014-1-15 15:39:22

各路,版主,帮帮忙。。。

feelg 发表于 2014-1-17 17:35:57

菜卷鱼 发表于 2014-1-16 08:38 static/image/common/back.gif
我不是版主,不知道我能不能改

呵呵 ,好像还不行呢。

yoyoho 发表于 2014-1-18 14:02:08

感谢 "菜卷鱼" 修改程序,程序o.k.
在autocad2011下需修正一下
(command "pedit" "m" ssl "" "y" "j" "" "")
==>(command "pedit" "m" ssl "" "j" "" "")    ;;;autocad 2011

feelg 发表于 2014-1-18 21:20:00

菜卷鱼 发表于 2014-1-16 08:38 static/image/common/back.gif
我不是版主,不知道我能不能改

谢谢。厉害

xliuliang 发表于 2015-1-29 17:21:00

好用,太感谢了
页: [1] 2 3 4
查看完整版本: 多边形批量快速标注LSP