明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1098|回复: 4

[求助]请教高手,如何做到框选这些标注后就生成下面红色的标注?

[复制链接]
发表于 2009-3-22 19:22 | 显示全部楼层 |阅读模式
如何做到框选这些标注后就生成下面红色的标注?

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-3-22 21:02 | 显示全部楼层
本帖最后由 作者 于 2009-3-22 21:05:12 编辑

红色的直应是6170吧

(defun bZ (/ ss_dim dxf_dim code_13_lst code_14_lst al_point_lst n)
  (prompt "\n选择尺寸:")
  (setq ss_dim (ssget (list (cons 0 "dimension"))) n 0)
  (if ss_dim
    (repeat (sslength ss_dim)
      (setq dxf_dim (entget (ssname ss_dim n))
     code_13_lst (cdr (assoc 13 dxf_dim))
     code_14_lst (cdr (assoc 14 dxf_dim))
     al_point_lst (append al_point_lst (list code_13_lst) (list code_14_lst))
     n (1+ n))
      )
    )
  ;只处理水平坐标,垂直坐标把排序改一下
  (if al_point_lst (setq al_point_lst (vl-sort al_point_lst (function (lambda (e1 e2) (> (car e1 ) (car e2)))))))
  (command "DIMLINEAR" (nth 0 al_point_lst) (last al_point_lst) (getpoint "\n选取尺寸定位点:"))
  )

自己再改一下应可以实现你要的效果。。。

 楼主| 发表于 2009-3-22 23:45 | 显示全部楼层
DeLiN001,那如何判断是垂直还是水平的呢?
 楼主| 发表于 2009-3-23 00:15 | 显示全部楼层
本帖最后由 作者 于 2009-3-23 0:17:16 编辑

在晓东上,热心的高手kmdz已经完成得差不多了:

思路:复制选集中的一个标注,提取选集的13,14成表,移除13和14相同的项,得到新标注的两个端点,修改复制的那个标注定义数据。标注位置可以自己指定,也可由程序自行计算位置。

代码:
(defun c:t1 ()
  (defun *error* (msg)
    (print msg)
    (print "\n检查标注是否都在一条线上或有重合?")
    (entdel (entlast))
    (setq *error* nil
   dim-dxf-lst
    nil
    )
  )
  (while (and
    (not (prompt "\n选择需要累加的标注:"))
    (setq dim-ss (ssget '((0 . "DIMENSION") (1 . ""))))
    (> (setq dim-ss-n (sslength dim-ss)) 1)
    (vl-cmdf "copy" (ssname dim-ss 0) "" '(0 0) '(0 0))
    (setq
      dim-dxf-14   (cdr (assoc 14 (entget (ssname dim-ss 0))))
      dim-dxf-10   (cdr (assoc 10 (entget (ssname dim-ss 0))))
      dim-dis-1410 (distance dim-dxf-14 dim-dxf-10)
      dim-ang-1410 (angle dim-dxf-14 dim-dxf-10)
      dim-dxf-10   (polar dim-dxf-10
     dim-ang-1410
     (* dim-dis-1410 (1- dim-ss-n))
     )
    )
  )
    (if (setq tmp (getpoint "\n指定尺寸标注位置:"))
      (setq dim-dxf-10 tmp)
    )
    (setq dim-dxf-lst nil)
    (repeat dim-ss-n
      (setq dim-dxf-lst
      (append
        (list
   (cdr
     (assoc
       13
       (entget (ssname dim-ss (setq dim-ss-n (1- dim-ss-n))))
     )
   )
   (cdr (assoc 14 (entget (ssname dim-ss dim-ss-n))))
        )
        dim-dxf-lst
      )
      )
    )
    (foreach m dim-dxf-lst
      (setq i 0)
      (foreach n dim-dxf-lst
 (if (equal m n)
   (if (> (setq i (1+ i)) 1)
     (setq dim-dxf-lst (vl-remove m dim-dxf-lst))
   )
 )
      )
    )
    (setq dim-ent (entget (entlast))
   dim-ent (subst (cons 13 (nth 0 dim-dxf-lst))
    (assoc 13 dim-ent)
    dim-ent
    )
   dim-ent (subst (cons 14 (nth 1 dim-dxf-lst))
    (assoc 14 dim-ent)
    dim-ent
    )
   dim-ent (subst (cons 10 dim-dxf-10) (assoc 10 dim-ent) dim-ent)
    )
    (entmod dim-ent)
  )
)

但有个问题,标注线是在一条直线上,但首尾标注点不对齐的话,好像就处理不了。

而且,可不可以改成只需要确定偏移的方向,就可以自动在离标注线500的位置进行标注呢?

本帖子中包含更多资源

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

x
发表于 2009-3-23 13:57 | 显示全部楼层
我觉得标注跟图层最好!用change就可以改成什么色都可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-2 10:39 , Processed in 0.135182 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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