找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3334|回复: 16

[求助] (完成)[求助]:关于“对齐标注”的快速处理!

[复制链接]
发表于 2003-1-10 13:50:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
不好意思,我这个菜鸟又来麻烦高手们了。
因为要赶春节前做万这几百张图纸,我不能不拜托大家帮我简化重复操作了。

图纸部分是这样的

                               
登录/注册后可看大图



很多不同长度的线段组成,我要对每根线段用“对齐标注”来标注它的长度,标注的对齐以当前线段的任意一个端点对齐。效果就是图中已经标注的两条线段那样。一张图就有N多这样的线段,这些线段都在同一个图层。

我需要一段代码实现:自动用当前标注格式,用“对齐标注”的方式对所有线段标注出来,每个标注以被标注线段的任意一个端点对齐,达到我图中的那种效果就可以了。注,这些线段都在同一图层,标注格式是我自定义的。

谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-1-10 14:00:48 | 显示全部楼层
其实不需要用标注来实现,可以对每条线段求其长度,再将结果写在线段的上方就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-1-10 18:01:57 | 显示全部楼层
也好,只要能有上面那种输出效果就行。
楼上的朋友帮帮忙,谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-1-10 21:37:28 | 显示全部楼层

  1. (defun C:BZ( / ss j len p1 p2 pmid ang)
  2. (if(setq ss(ssget '((0 . "LINE"))))
  3. (progn(setq len(sslength ss) j 0)
  4.   (while(< j len)(setq e(ssname ss j)en(entget e)p1(cdr(assoc 10 en))p2(cdr(assoc 11 en)))
  5. (setq pmid(list(/(+(car p1)(car p2))2.0)(/(+(cadr p1)(cadr p2))2.0)))
  6. (setq ang(angle p1 p2))
  7. (if(> ang pi)(setq ang(- ang pi)))
  8. (if(> ang (/ pi 2))(setq ang(- ang pi )))
  9. (setq pmid(polar pmid(+(/ pi 2)ang)100))
  10. (setq txt(rtos(distance p1 p2)2 2))
  11. (setq ang(* 180.0(/ ang pi)))
  12. (command"text""j""c" pmid ang txt """")
  13. (setq j(1+ j))
  14. )))
  15. )

可以用了,cad2002下的,要先设好字型的高度.
线上100标,不对自己改上面的"100"

14.0下的话改
(command"text""j""c" pmid ang txt """")
为 (command"text""j""c" pmid ang txt "")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-1-11 00:01:23 | 显示全部楼层
出错了

命令: bz
选择对象: 找到 1 个
选择对象:
text
当前文字样式:  Standard  文字高度:  33.7533
指定文字的起点或 [对正(J)/样式(S)]: j 输入选项
[对齐(A)/调整(F)/中心(C)/中间(M)/右(R)/左上(TL)/中上(TC)/右上(TR)/左中(ML)/正中(
MC)/右中(MR)/左下(BL)/中下(BC)/右下(BR)]: c
指定文字的中心点:
指定高度 <10.0000>: -43.17207628492286
值必须为 正且非零。
; 错误: 函数被取消

》》》》》》》》》》》》》》》》》》
补充:

我刚刚尝试修改了一下


  1. 我把 (command"text""j""c" pmid ang txt """")
  2. 修改为 (command"text""j""c" pmid 10 ang txt """")


hoho 好像能标注,但是还不能更好的控制它,我再试试。


》》》》》》》》》》》》》》》》》》
再补充:
现在基本知道怎么控制使用了。

有一点问题,标注的过程中需要关了“对象捕捉”不然标注不到中心位置。不过这个问题影响不大。


非常喜欢这个论坛和这里的朋友,给我很及时的帮助也让我学习不少东西,衷心的谢谢你们。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-1-11 02:01:14 | 显示全部楼层
【更新】
写了个在晓东工具箱下应用的。
标注单段线、弧长,需要断开的可以使用工具箱的交点断开。(CAD2002下测试通过)

  1. ;|线长标注|;
  2. (;|线长标注|;
  3. ($xdrx_load "xdlsp.lsp")
  4. (defun c:dim_curve_len (/ e ss e1 pmid ang ang1 pt txtang str)
  5.   (xdrx_begin)
  6.   (xdrx_ucson)
  7.   (xdrx_sysvar_push "osmode")
  8.   (setq e (xdrx_entsel "\n拾取典型图元: "))
  9.   (if e
  10.     (progn
  11.       (setq ss (ssget (list (assoc 8 (entget (car e)))
  12.                             '(0 . "*line,arc,ellipse")
  13.                       )
  14.                )
  15.       )
  16.       (xdrx_setsstodb ss 0)
  17.       (while (setq e1 (xdrx_getentdata 0))
  18.         (setq len    (last (xdrx_getarea e1)) ;线长度
  19.               pmid   (xdrx_curve_getpointatdist e1 (/ len 2)) ;中点;
  20.               anglst (xdrx_getperpline e1 pmid)
  21.               ang1   (if (> (last anglst) pi)
  22.                        (- (last anglst) pi)
  23.                        (last anglst)
  24.                      )                        ;法线角度;
  25.               pt     (polar pmid
  26.                             (if        (= ang1 0.0)
  27.                               pi
  28.                               ang1
  29.                             )
  30.                             (/ (getvar "textsize") 3)
  31.                      )
  32.         )
  33.         (if (<= ang1 (* 1.5 pi))         
  34.           (setq str "bC")
  35.           (setq str "tc")
  36.         )
  37.         (setvar "osmode" 0)
  38.         (command ".text"
  39.                  "j"
  40.                  str
  41.                  pt
  42.                  (getvar "textsize")
  43.                  ($xdlsp_rtd ($xdlsp_angle_format (car anglst)))
  44.                  (rtos len 2 2)
  45.         )
  46.       )
  47.     )
  48.   )
  49.   (xdrx_sysvar_pop)
  50.   (xdrx_ucsoff)
  51.   (xdrx_end)
  52.   (princ)
  53. )


[dwf]http://www.xdcad.net/modrator/file_upload/14/20030111020051_drawing1.dwf">
[/dwf]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-1-11 21:08:55 | 显示全部楼层
  1. hoho 好像能标注,但是还不能更好的控制它,我再试试。
复制代码

我不知道你的图的要求,是花了两分钟,在回复筐里现写的,有些东西是没考虑.
不过一张图就一下子,没什么好考虑的.
还有我说过要设好字高的,你改的也行,不设字高就这样.

斑竹的也有这问题,应该要看看有没字高的.
有个字还在线下

还有写字的方向,我研究过很长时间的.
最方便还是:   1. 大于pi  ---> -pi  --->
                        2. 大于0.5pi 再-pi
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-1-11 23:24:17 | 显示全部楼层
最初由 aeo 发布
[B]
  1. hoho 好像能标注,但是还不能更好的控制它,我再试试。
复制代码

我不知道你的图的要求,是花了两分钟,在回复筐里现写的,有些东西是没考虑.
不过一张图就一下子,没什么好考虑的.
还有我说过要设好字高的,你改?.. [/B]

已修改,角度解决了。字高用系统变量 TEXTSIZE 。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-12 04:37:20 | 显示全部楼层
但我看图中好像还有相交的线段,是不是要分别求相交线段两边的长度呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-1-12 18:17:55 | 显示全部楼层
最初由 zhynt 发布
[B]但我看图中好像还有相交的线段,是不是要分别求相交线段两边的长度呢? [/B]


你看到的“相交的线段”其实是三条线段的端点在一点。就是说,所有的线段是首尾相接的。
上面两位的代码已经大大简化我的操作了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-1-14 09:38:55 | 显示全部楼层
其实可以设置一种标注形式,将基线、端线等都设为空,然后对齐标注就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-1-14 13:12:17 | 显示全部楼层
最初由 ll_j 发布
[B]其实可以设置一种标注形式,将基线、端线等都设为空,然后对齐标注就可以了。 [/B]

高!我怎么没想到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-1-14 13:49:57 | 显示全部楼层
其实我贴出来的图就是用的对齐标注。怎么到后来误会我的意思了?

我是说,需要大量的标注线段,寻求快速标注“对齐标注”。

有朋友就说,用代码就不一定要用“对齐标注”,写“单行文本”也可以达到标注的目的。所以就有人写了这些程序了。

我需要的是“快速的给大量线段标注尺寸”,而不是“给线段标注某个格式的尺寸”。

还是谢谢提示修改尺寸格式的朋友。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-1-14 14:13:23 | 显示全部楼层
因为用写字的方式标尺寸比用标注的方式标尺寸所生成的文件小,因为没有了许多的无用的尺寸线和尺寸界线,实际有用的是尺寸数,而不是尺寸本身。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-1-14 14:14:01 | 显示全部楼层
最初由 鼠标右键 发布
[B]其实我贴出来的图就是用的对齐标注。怎么到后来误会我的意思了?

我是说,需要大量的标注线段,寻求快速标注“对齐标注”。

有朋友就说,用代码就不一定要用“对齐标注”,写“单行文本”也可以达到标注的目?.. [/B]

用对齐标注代码原来这样简单,使用前标注样式要先换好呀。

  1. (defun c:ddd (/ ss e)
  2.   (setq ss (ssget '((0 . "line"))))
  3.   (xdrx_setsstodb ss 0)
  4.   (while (setq e (xdrx_getentdata 0))
  5.     (command ".dimaligned" "" (list e (xdrx_getentdxf 10)) p)
  6.   )
  7.   (princ)
  8. )

对比下Lisp代码

  1. (defun c:ddd (/ ss e p n)
  2.   (setq ss (ssget '((0 . "line"))))
  3.   (setq n -1)
  4.   (repeat (sslength ss)
  5.     (setq n (1+ n))
  6.     (setq e (ssname ss n))
  7.     (setq p (cdr (assoc 10 (entget e))))
  8.     (command ".dimaligned" "" (list e p) p)
  9.   )
  10.   (princ)
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 17:06 , Processed in 0.381607 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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