明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3680|回复: 12

[讨论] 自动标注程序求改进标注显示的位置

[复制链接]
发表于 2011-3-15 13:27:27 | 显示全部楼层 |阅读模式
本帖最后由 cumtjh 于 2011-3-15 13:31 编辑

程序当前实现的功能:标注直线、多段线、弧长、弦高
运行命令Z1

支持直线、圆弧、多段线

缺陷:标注显示的位置放置不知道如何确定,当前程序标注位置跟对象的绘图顺序有关,始终位于矢量对象的左侧。比如绘制从下至上的线,标注位于左侧;而从上往下绘制线,再标注则位于右侧。

问题提出:
能不能实现不根据对象的方向性来标注对象,而且通过指定的方式指定标注位于哪一侧。

求改进功能:支持指定标注与被标注对象的位置关系,指定位于对象的左侧还是右侧,现在标注
麻烦版主和高手们帮忙添加几条语句,实现指定标注位置的功能。

;源码如下
  1. ;求改进——支持指定标注与被标注对象的位置关系 麻烦版主和高手们帮忙添加几条语句,从而实现指定标注位置
  2. ;功能:标注直线、多段线、弧长、弦高

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




该贴已经同步到 cumtjh的微博

点评

CTC
希望加一个标注线到标注对象的距离。  发表于 2012-4-23 10:22
 楼主| 发表于 2011-3-15 20:18:20 | 显示全部楼层
版主 大虾都哪里去啦 放假休息吗
发表于 2011-11-18 20:49:28 | 显示全部楼层

感觉很不错的谢谢楼主啊
发表于 2011-11-19 09:48:25 | 显示全部楼层
谢谢楼主
发表于 2012-4-17 17:24:57 | 显示全部楼层
学习了..谢谢
发表于 2012-4-23 10:17:05 | 显示全部楼层
如能标注弧长,就完美咯,期待高手解决。
发表于 2012-12-6 16:08:14 | 显示全部楼层
为什么没有高手出手?
发表于 2012-12-7 22:03:36 | 显示全部楼层
为什么是贴着对象呢。。,有些还断开标的呢。
发表于 2013-12-30 23:58:42 | 显示全部楼层
都好的程序啊。能优化一下就完美了。
发表于 2015-4-27 13:36:43 | 显示全部楼层
自动标注程序标注显示位置的优化
增加了这几句,还是不能实现
(setvar "cmdecho" 0)
   (setq ts1 (getreal "\n-->请输入标注文字高<2.0>:"))
     (if (= ts1 nil) (setq ts1 2))   
     (command "dimtxt"  2 "dimasz"  0 "dimexo"  0 "dimexe"  0)
(command "dimasz"  0 )
(command "dimexo"  0 )
(command "dimexe"  0 )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 15:32 , Processed in 0.199315 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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