明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 17438|回复: 38

[讨论] 多边形批量快速标注LSP

[复制链接]
发表于 2014-1-14 10:53:33 | 显示全部楼层 |阅读模式
本帖最后由 feelg 于 2014-1-14 10:56 编辑

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

本帖子中包含更多资源

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

x
发表于 2014-1-16 08:38:35 | 显示全部楼层
我不是版主,不知道我能不能改
  1. (defun c:z1 ()
  2.    (prompt "此程序根据当前标注样式进行标注,设置textsize变量可修改与标注线的距离!")
  3. (setq dic (* 7 (getvar "dimscale")))
  4.   (setq ss (ssget))
  5.   (setq n 0)
  6.   (repeat (sslength ss)
  7.     (setq en (ssname ss n))
  8.     (setq endata (entget en))
  9.     (if (= (cdr (assoc 0 endata)) "LWPOLYLINE")
  10.       (mmh_3 en)
  11.       (if (= (cdr (assoc 0 endata)) "ARC")
  12. (mmh_1 en)
  13. (mmh_2 endata)
  14.       )
  15.     )
  16.     (setq n (1+ n))
  17.   )
  18.   (princ)
  19. )
  20. (prompt "<<z1>>快速标注")
  21. (defun mmh_1 (en)
  22.   (setvar "osmode" 0)
  23.   (setq po_1 (vlax-curve-getstartPoint en))
  24.   (setq po_2 (vlax-curve-getendPoint en))
  25.   (setq po_1_x (car po_1))
  26.   (setq po_1_y (cadr po_1))
  27.   (setq po_2_x (car po_2))
  28.   (setq po_2_y (cadr po_2))
  29.   (command "dimaligned" po_1 po_2 po_1)
  30.   (setvar "osmode" 16383)
  31. )
  32. (defun mmh_2 (endata)
  33.   (setvar "osmode" 0)
  34.   (setq p_1 (cdr (assoc 10 endata)))
  35.   (setq p_2 (cdr (assoc 11 endata)))
  36.   (setq p3 (polar p_1 (+ (angle p_1 p_2) (/ pi 2)) dic))
  37.   (command "dimaligned" p_1 p_2 p3)
  38.   (setvar "osmode" 16383)
  39. )
  40. (defun mmh_3 (en)
  41.   (setq m 0)
  42.   (command "explode" en "")
  43.   (setq ssl (ssget "p"))
  44.   (repeat (sslength ssl)
  45.     (setq enl (ssname ssl m))
  46.     (setq enldata (entget enl))
  47.     (if (= (cdr (assoc 0 enldata)) "ARC")
  48.       (mmh_1 enl)
  49.       (mmh_2 enldata)
  50.     )
  51.     (setq m (1+ m))
  52.   )
  53.   (command "pedit" "m" ssl "" "y" "j" "" "")
  54. )

回复 支持 2 反对 0

使用道具 举报

发表于 2015-1-29 18:47:26 | 显示全部楼层
菜卷鱼 发表于 2014-1-16 08:38
我不是版主,不知道我能不能改


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

本帖子中包含更多资源

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

x

点评

程序不变,多段线反向就可以达到右边的效果  发表于 2015-2-4 12:44
需要判断点是否封闭区间内,本论坛有代码  发表于 2015-2-3 22:56
回复 支持 1 反对 1

使用道具 举报

发表于 2019-1-13 21:28:28 | 显示全部楼层
大家试试,这个行不行

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-1-14 10:54:32 | 显示全部楼层
  1. (defun c:z1 ()
  2.    (prompt "此程序根据当前标注样式进行标注,设置textsize变量可修改与标注线的距离!")
  3.   (setq ss (ssget))
  4.   (setq n 0)
  5.   (repeat (sslength ss)
  6.     (setq en (ssname ss n))
  7.     (setq endata (entget en))
  8.     (if (= (cdr (assoc 0 endata)) "LWPOLYLINE")
  9.       (mmh_3 en)
  10.       (if (= (cdr (assoc 0 endata)) "ARC")
  11. (mmh_1 en)
  12. (mmh_2 endata)
  13.       )
  14.     )
  15.     (setq n (1+ n))
  16.   )
  17.   (princ)
  18. )
  19. (prompt "<<z1>>快速标注")
  20. (defun mmh_1 (en)
  21.   (setvar "osmode" 0)
  22.   (setq po_1 (vlax-curve-getstartPoint en))
  23.   (setq po_2 (vlax-curve-getendPoint en))
  24.   (setq po_1_x (car po_1))
  25.   (setq po_1_y (cadr po_1))
  26.   (setq po_2_x (car po_2))
  27.   (setq po_2_y (cadr po_2))
  28.   (command "dimaligned" po_1 po_2 po_1)
  29.   (setvar "osmode" 16383)
  30. )
  31. (defun mmh_2 (endata)
  32.   (setvar "osmode" 0)
  33.   (setq p_1 (cdr (assoc 10 endata)))
  34.   (setq p_2 (cdr (assoc 11 endata)))
  35.   (setq p3 (polar p_1 (+ (angle p_1 p_2) (/ pi 2)) 10))
  36.   (command "dimaligned" p_1 p_2 p3)
  37.   (setvar "osmode" 16383)
  38. )
  39. (defun mmh_3 (en)
  40.   (setq m 0)
  41.   (command "explode" en "")
  42.   (setq ssl (ssget "p"))
  43.   (repeat (sslength ssl)
  44.     (setq enl (ssname ssl m))
  45.     (setq enldata (entget enl))
  46.     (if (= (cdr (assoc 0 enldata)) "ARC")
  47.       (mmh_1 enl)
  48.       (mmh_2 enldata)
  49.     )
  50.     (setq m (1+ m))
  51.   )
  52.   (command "pedit" "m" ssl "" "y" "j" "" "")
  53. )
 楼主| 发表于 2014-1-14 10:55:34 | 显示全部楼层
代码如上,很好的一个程度,大家帮忙优化下。标注位置的控制。
 楼主| 发表于 2014-1-15 15:39:22 | 显示全部楼层
各路,版主,帮帮忙。。。
 楼主| 发表于 2014-1-17 17:35:57 | 显示全部楼层
菜卷鱼 发表于 2014-1-16 08:38
我不是版主,不知道我能不能改

呵呵 ,好像还不行呢。
发表于 2014-1-18 14:02:08 | 显示全部楼层
感谢 "菜卷鱼" 修改程序,程序o.k.
在autocad2011下需修正一下
(command "pedit" "m" ssl "" "y" "j" "" "")
==>(command "pedit" "m" ssl "" "j" "" "")    ;;;autocad 2011
 楼主| 发表于 2014-1-18 21:20:00 | 显示全部楼层
菜卷鱼 发表于 2014-1-16 08:38
我不是版主,不知道我能不能改

谢谢。厉害
发表于 2015-1-29 17:21:00 | 显示全部楼层
好用,太感谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 12:58 , Processed in 0.204273 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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