明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

帖子
查看: 1129|回复: 12

天正标注水平垂直免点鼠标

[复制链接]
发表于 2025-6-13 10:54:19 | 显示全部楼层 |阅读模式
直接附代码,不接受任何批评,老原则:
肯定有人会说这玩意,有啥鸟用!!!!



(defun C:DD (/ *error* pt1 pt2 choice input)
  (vl-load-com)

  ;; 定义错误处理函数
  (defun *error* (msg)
    (if (not (member msg '("Function cancelled" "quit / exit abort")))
      (princ "\n")
      (princ "\n操作已取消"))
    (princ)
  )

  ;; 初始化选项,允许 H V D
  (initget "H V D")
  ;; 获取起点或选项
  (setq input (getpoint "\n起点或 [水平标注H/垂直标注V/逐点标注D]<逐点标注D>: "))
  (cond
    ;; 返回点坐标,默认为 D
    ((listp input) (setq pt1 input choice "D"))
    ;; 返回选项字符串
    ((member input '("H" "V" "D")) (setq choice input))
    ;; 回车或取消,默认 D
    (t (setq choice "D"))
  )

  ;; 如果未获取 pt1,提示输入起点
  (while (not pt1)
    (setq pt1 (getpoint "\n起点: "))
    (if (not pt1) (princ "\n请选取起点或取消操作。"))
  )

  ;; 获取第二点
  (setq pt2 (getpoint pt1 "\n第二点: "))
  (while (not pt2)
    (setq pt2 (getpoint pt1 "\n第二点: "))
    (if (not pt2) (princ "\n请选取第二点或取消操作。"))
  )

  ;; 根据选项调整 pt2 坐标
  (cond
    ((= choice "H") (setq pt2 (list (car pt2) (cadr pt1) (caddr pt2))))
    ((= choice "V") (setq pt2 (list (car pt1) (cadr pt2) (caddr pt2))))
    ((= choice "D") pt2)
  )

  ;; 调用天正标注命令
  (command-s "TDIMMP" pt1 pt2)

  ;; 清理错误处理
  (*error* nil)
  (princ)
)

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-6-16 09:47:59 | 显示全部楼层
不接受任何批评?
不理解你为什么每个帖子都要来这么一句,是要立什么人设吗?

实际上就是大神,有时候也难免代码中有考虑不周的地方,需要不断的改进、去除bug,有的bug可能都需要在多年以后才暴露出来。

就你的上面的代码,实话实说,其中存在很多问题(自己去找,不提示了)。

虚心使人进步。
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2025-6-14 09:35:01 | 显示全部楼层
(defun C:DD (/ *error* pt1 pt2 choice input dx dy)
  (vl-load-com)

  ;; 定义错误处理函数
  (defun *error* (msg)
    (if (not (member msg '("Function cancelled" "quit / exit abort")))
      (if msg
      (princ (strcat "\n错误: " msg))
      (princ "\n操作已取消"))
    )
    (princ)
  )

  ;; 初始化选项,仅允许 D(逐点标注)
  (initget "D")
  ;; 获取起点或选项
  (setq input (getpoint "\n起点或 [逐点标注D]<自动水平/垂直>: "))
  (cond
    ;; 返回点坐标,默认自动水平/垂直
    ((listp input) (setq pt1 input choice nil))
    ;; 返回选项字符串
    ((= input "D") (setq choice "D"))
    ;; 回车或取消,默认自动水平/垂直
    (t (setq choice nil))
  )

  ;; 如果未获取 pt1,提示输入起点
  (while (not pt1)
    (setq pt1 (getpoint "\n起点: "))
    (if (not pt1) (princ "\n请选取起点或取消操作。"))
  )

  ;; 获取第二点
  (setq pt2 (getpoint pt1 "\n第二点: "))
  (while (not pt2)
    (setq pt2 (getpoint pt1 "\n第二点: "))
    (if (not pt2) (princ "\n请选取第二点或取消操作。"))
  )

  ;; 根据选项调整 pt2 坐标
  (cond
    ;; 逐点标注,直接使用 pt2
    ((= choice "D")
     (setq pt2 pt2))
    ;; 自动水平/垂直判断
    (t
     ;; 计算 X 和 Y 坐标差值
     (setq dx (abs (- (car pt2) (car pt1)))
           dy (abs (- (cadr pt2) (cadr pt1))))
     (if (> dx dy)
       ;; 水平标注,调整 pt2 的 Y 坐标与 pt1 相同
       (progn
         (setq pt2 (list (car pt2) (cadr pt1) (caddr pt2)))
         (princ "\n水平标注"))
       ;; 垂直标注,调整 pt2 的 X 坐标与 pt1 相同
       (progn
         (setq pt2 (list (car pt1) (cadr pt2) (caddr pt2)))
         (princ "\n垂直标注"))
     )
    )
  )

  ;; 调用天正标注命令
  (command-s "TDIMMP" pt1 pt2)

  ;; 清理错误处理
  (*error* nil)
  (princ)
)

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2025-6-18 09:47:43 | 显示全部楼层
forestgxc 发表于 2025-6-17 08:19
大神,我想请教下,现在的程序逻辑,是比较水平差和垂直点差,确定水平和垂直,
有没有可能像dimlinear ...

我可不是大神啊。

AlignedDimension 的尺寸延伸线长度显然是一致的,不需要调整。
只有 RotatedDimension 才有这个问题。

如果希望选择的一批 RotatedDimension 对象的尺寸延伸线调整为长度一致(可能就是追求整齐美观,有点强迫症吧),以前也写了这个调整尺寸线/尺寸延伸线位置的工具。
回复 支持 反对

使用道具 举报

发表于 2025-6-13 11:36:59 | 显示全部楼层
我弥陀佛,戒骄戒躁
回复 支持 反对

使用道具 举报

发表于 2025-6-13 13:37:58 | 显示全部楼层
TDIMMP天正的这个命令都非常好用了,还有必要这样吗
回复 支持 反对

使用道具 举报

发表于 2025-6-13 15:29:09 | 显示全部楼层
不接受批评
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-13 22:44:00 | 显示全部楼层

TDIMMP也就是因为必须用他,但他又连基本的水平垂直都还要手动,程序员也不知道干嘛想的

应该是可以自动水平垂直,再改改就是了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-16 16:59:20 | 显示全部楼层
只是简简单单的分享,而已,没有人设,只是好玩
看有没有可能遇到同样会感兴趣的人,而已
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-17 08:19:20 | 显示全部楼层
e2002 发表于 2025-6-16 09:47
不接受任何批评?
不理解你为什么每个帖子都要来这么一句,是要立什么人设吗?

大神,我想请教下,现在的程序逻辑,是比较水平差和垂直点差,确定水平和垂直,
有没有可能像dimlinear一样,真正的想水平就水平,想垂直就垂直,算法上现在有问题
我也只能再选两点后就调用标注程序,才能预览
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-10 04:24 , Processed in 0.179681 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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