明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xj6019

[讨论] 求制作多级标注工具

[复制链接]
 楼主| 发表于 2020-9-4 20:49 | 显示全部楼层
start4444 发表于 2020-9-4 18:08
一样的,斜的自己搞过去就行
(defun c:tt5 (/ dim n d i lastdim  p1 p11 p2 p22 p3 p33 p4 plst px);正 ...

不好意思,抱歉,考虑不周,如果是定义第一个点为准,有时候会不理想,参照图片:
我想了一下,定义第一个点和定义第二个点,好像都有意外的情况吧,能增加个判断吗,以离得最近的点为基准点,可以吗?
麻烦你也帮我考虑一下好吗,怎么最合适。劳驾代码再稍做优化一下吧。谢谢了。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2020-9-5 00:10 | 显示全部楼层
xj6019 发表于 2020-9-4 20:49
不好意思,抱歉,考虑不周,如果是定义第一个点为准,有时候会不理想,参照图片:
我想了一下,定义第一 ...

想要程序自动检测是不可靠的,因为你选的点有可能不包含你说的最近点,唯有靠你自己判断才稳妥,建议你加一段选参考点的码就可靠了
回复

使用道具 举报

 楼主| 发表于 2020-9-5 07:21 | 显示全部楼层
start4444 发表于 2020-9-5 00:10
想要程序自动检测是不可靠的,因为你选的点有可能不包含你说的最近点,唯有靠你自己判断才稳妥,建议你加 ...

我的感觉是第一排的间距肯定是在头两个点的时候确定,所以只判断头两个点的位置关系就好吧。能麻烦你再改改代码吗,如果这个方式真行不通的话,改的那一段,怎么改成以第二个点为准呀,我各用段时间,实际当中看看哪种情况最多,以后就固定到一种最常见的方式。(自己试着改了改,又没成)
回复

使用道具 举报

发表于 2020-9-5 10:13 来自手机 | 显示全部楼层
你上面那个截图第二个点如果选上面的就不对了,或者右边还有往下的线就更不对了
回复

使用道具 举报

发表于 2020-9-5 10:19 来自手机 | 显示全部楼层
要第二点就把(ptper p1 p2 p3)改为p2就行了
回复

使用道具 举报

发表于 2020-9-7 06:37 | 显示全部楼层
如何实现第一排标注的基点都在同一水平线线上
回复

使用道具 举报

 楼主| 发表于 2020-9-7 08:13 | 显示全部楼层
depgfdepgf 发表于 2020-9-7 06:37
如何实现第一排标注的基点都在同一水平线线上

这个你要问问写代码的老师,@一下问问就行。
回复

使用道具 举报

发表于 2020-9-7 09:30 | 显示全部楼层
  • (defun c:tt8 (/  dim i lastdim  p1 p11 p2 p22 p3 p33 p4 plst px)
  •   (if (not nbiaozhu) (setq nbiaozhu 3)) (if (not Dbiaozhu) (setq Dbiaozhu 1))
  •   (setq  nbiaozhu (if (setq n (getint (strcat "\n>>>标注排数<" (itoa nbiaozhu) ">:"))) n nbiaozhu) Dbiaozhu (if (setq d  (getreal (strcat "\n>>>标注比例<" (rtos Dbiaozhu 2 2) ">:"))) d Dbiaozhu) i 0 plst '())
  • (SETQ P1 (GETPOINT "\n指定第一点 :"))
  • (SETQ P2 (GETPOINT P1 "\n指定第二点 :"))
  • (COMMAND "_DIMLINEAR" P1 P2 PAUSE)
  • (SETQ ANG (CDR (ASSOC 50 (ENTGET (ENTLAST)))))
  • (COMMAND "_DIMCONTINUE")
  • (WHILE (SETQ P3 (GETPOINT "\n指定下一点 :"))
  •    (IF (EQUAL ANG 0.0 1E-3)
  •     (SETQ P3 (LIST (CAR P3) (CADR P2) 0.0))
  •     (SETQ P3 (LIST (CAR P2) (CADR P3) 0.0))
  •    )
  •    (COMMAND P3)
  • )  ;到这里不会实现多级尺寸了,请老师实现下,谢谢
  •   (setq dim (entlast) p1 (cdr (assoc 13 (entget dim))) p2 (cdr (assoc 14 (entget dim))) p3 (cdr (assoc 10 (entget dim))) px (getpoint))
  •   (command  "DIMCONTINUE" dim )
  •   (while px
  •     (command px)
  •     (setq px (getpoint"\n>>>选取下一点:") plst (cons px plst))
  •   )
  •   (command)
  •   (setq lastdim (entlast) p11 (cdr (assoc 13 (entget lastdim))) p22 (cdr (assoc 14 (entget lastdim))) p33 (cdr (assoc 10 (entget lastdim)))  p4 (inters p3 p33 p1 (polar p1 (angle p2 p3) 5) nil))
  •   (repeat (1- nbiaozhu)
  •     (command "DIMALIGNED" "non" (polar p4 (angle p2 p3) (* i (* 8 Dbiaozhu))) "non" (polar p33 (angle p2 p3) (* i (* 8 Dbiaozhu)))  "non" (polar p3 (angle p2 p3) (* (* 8 Dbiaozhu) (setq i (1+ i)))))
  •   )
  •   (c:ddr2)
  •   (princ)
  • )
回复

使用道具 举报

发表于 2020-9-14 22:20 | 显示全部楼层
xj6019 发表于 2019-12-9 18:38
这个代码是明经上的,出自哪里忘了 ,先对作者表示感谢和抱歉!挪用一下!
其中命令ddr可以断开标注,合 ...

很好的程序
回复

使用道具 举报

发表于 2020-9-14 22:28 | 显示全部楼层
xj6019 发表于 2019-12-14 12:56
你好,再麻烦一下,这几天用下来,每次尺寸线之间的距离每次都脑子算一遍有点不方便,我说个思路您看看好 ...

我有,怎么发你
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 07:07 , Processed in 0.246965 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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