明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 29213|回复: 95

[源码] [原创]标注对齐源程序

    [复制链接]
发表于 2009-5-5 22:08 | 显示全部楼层 |阅读模式
本帖最后由 langjs 于 2014-2-8 01:16 编辑

根据网友建议修改更新于2010年12月31日。(网上有个某老大做的尺寸标注对齐的源程序,但是在对齐尺寸时,尺寸界线也发生移动。本人编写了一个尺寸标注对齐的程序,在对齐时候尺寸界线不移动,可能效果好一些,请大家试用。在明经里边学到很多东西,自己也献献丑,做的东西分享给大家。)
坐标的我已经发过一个,请参考http://bbs.mjtd.com/thread-78807-1-1.html

;;; _______________________________________________________;;; 标注对齐     langjs 2011.11.26
;;; (本程序仅适用于多个水平或垂直标注对齐)
;;; _______________________________________________________
(defun c:qq (/ ent i name np10 np11 np13 np14 p0 p00 p10 p11 p13 p14 ss ss1 ss2 u v)
  (defun ssgengxin (ss / ent i name p10 p14 ss1 ss2) ; 将误选的横纵标注(少数量)从选择集中删除?
    (setq ss1 (ssadd)  ss2 (ssadd))
    (repeat (setq i (sslength ss))
      (setq ent (entget (setq name (ssname ss (setq i (1- i)))))
            p10 (cdr (assoc 10 ent))  p14 (cdr (assoc 14 ent))
      )
      (cond
        ((= (fix (+ 0.5 (car p10))) (fix (+ 0.5 (car p14))))
          (setq ss1 (ssadd name ss1))
        )
        ((= (fix (+ 0.5 (cadr p10))) (fix (+ 0.5 (cadr p14))))
          (setq ss2 (ssadd name ss2))
        )
        (t )
      )
    )
    (if (>= (sslength ss1) (sslength ss2))  ss1  ss2 )
  )
  (defun jisuan (ent / p10 p11 p13 p14)        ; 计算坐标点子程序
    (setq p10 (cdr (assoc 10 ent))  p14 (cdr (assoc 14 ent))
          p11 (cdr (assoc 11 ent))  p13 (cdr (assoc 13 ent))
    )
    (cond
      ((= (fix (+ 0.5 (car p10))) (fix (+ 0.5 (car p14))))
        (setq np10 (list (car p10) (cadr p0))
              np11 (list (car p11) (+ (- (cadr p11) (cadr p10)) (cadr p0)))
              np13 (list (car p13) (cadr p00))
              np14 (list (car p14) (cadr p00))
        )
      )
      ((= (fix (+ 0.5 (cadr p10))) (fix (+ 0.5 (cadr p14))))
        (setq np10 (list (car p0) (cadr p10))
              np11 (list (+ (- (car p11) (car p10)) (car p0)) (cadr p11))
              np13 (list (car p00) (cadr p13))
              np14 (list (car p00) (cadr p14))
        )
      )
    )
   )
  (defun gengxin (ent u np10 v np11)
    (setq ent (subst(cons u np10)(assoc u ent) ent ))
    (entmod (subst  (cons v np11)(assoc v ent) ent ))
  )
  (setvar "cmdecho" 0)                       ; 关闭命令响应
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq ss (ssgengxin ss))
      (if (setq p0 (getpoint "\n指定标注线位置,或<不改变>:"))
        (repeat (setq i (sslength ss))
          (setq ent (entget (ssname ss (setq i (1- i)))))
          (jisuan ent)
          (gengxin ent 10 np10 11 np11)
        )
        (setq p0 '(0.0 0.0))
      )
      (if (setq p00 (getpoint "\n指定引出线位置,或<不改变>:"))
        (repeat (setq i (sslength ss))
          (setq ent (entget (ssname ss (setq i (1- i)))))
          (jisuan ent)
          (gengxin ent 13 np13 14 np14)
        )
      )
    )
  )
  (princ)
)

本帖子中包含更多资源

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

x

评分

参与人数 5威望 +1 明经币 +3 金钱 +40 收起 理由
断箭 + 1 很给力!
cabinsummer + 1 很给力!
T_T + 20 好用!谢谢
raimo + 20 好程序,感谢您的分享
mccad + 1 + 1 【好评】日常管理

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2010-12-8 07:46 | 显示全部楼层
真的很好用
回复 支持 1 反对 0

使用道具 举报

发表于 2017-10-28 12:53 | 显示全部楼层
射手座的牛 发表于 2013-1-24 22:30
(defun c:dd ()
(while
  (setq pt1 (getpoint "\n指定第一条尺寸界线原点:"))

解决我多年的角度标注的困惑,谢谢你!
发表于 2009-5-6 08:52 | 显示全部楼层

學習啦

好貼

发表于 2009-5-6 10:02 | 显示全部楼层

谢谢了。

发表于 2009-5-6 11:11 | 显示全部楼层
你好,能否开发一个坐标标注对齐的工具,谢谢
发表于 2009-5-15 16:15 | 显示全部楼层
好程序,谢谢
发表于 2009-5-18 00:45 | 显示全部楼层

不错,不用单个进行调整了

发表于 2009-10-19 19:37 | 显示全部楼层
这是好东西呀,高手呀楼主
发表于 2009-11-15 20:49 | 显示全部楼层
程序写得不错,顶一个,,
发表于 2009-11-16 20:23 | 显示全部楼层
真的很好用,如果有座标的就更好了。
发表于 2009-11-22 13:56 | 显示全部楼层

赞一个

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

本版积分规则

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

GMT+8, 2024-5-29 17:55 , Processed in 0.166864 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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