明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1847|回复: 11

[提问] 做法标注,遇到瓶颈,怎样实现引线无限增加间距

[复制链接]
发表于 2020-12-13 20:50:13 | 显示全部楼层 |阅读模式
本帖最后由 yfywk 于 2020-12-14 21:09 编辑

论坛里一直找做法标注,但不是我想要的,于是自己做一个,苦于半瓶水,不能实现无线间距增加,第二行就重叠了,求助
(defun c:test ()         
                (setvar "ORTHOMODE" 1)
                (setq n2 (getvar "DIMSCALE"))
                (setq pt1 (getpoint "\n指定做法层第一点:"))
                (setq pt3 (getpoint pt1 "\n指定做法标注点:"))
                (setq pt4 (getpoint pt3 "\n指定标注方向点:"))
                (setq BNO (getstring  "\n输入做法"))
                (command ".qleader" pt1 pt3 pt4 "" BNO nil)
                (while (setq pt2 (getpoint pt1 "\n指定做法层下一点:<退出>:"))
                         (vl-cmdf pt2 "")
                         (setq pt1 pt2)
                         (setq kang (angle pt1 pt3))
                         (setq len1 (* 5 n2));间距1
                         (setq len2 (* 5 n2));间距2
                         (setq p3 (polar pt3 kang len1));
                         (setq p4 (polar pt4 kang len2))
                          (command ".qleader" pt1 p3 p4 "" "" nil)
                    )
               (vl-cmdf "")
)

再次循环就出现重叠了

实现如图样子
程序目前执行后这样子




本帖子中包含更多资源

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

x

点评

贴个图会更清楚  发表于 2020-12-14 20:17
 楼主| 发表于 2020-12-14 21:07:13 | 显示全部楼层
本帖最后由 yfywk 于 2020-12-14 21:08 编辑

用笨办法实现了5层标注,因为大多情况下也就差不多5层
(defun c:test4 ()         
         ;(progn   
              ;  (QleaderSet)
                (setvar "ORTHOMODE" 1)
                (setq n2 (getvar "DIMSCALE"))
        (setq pt1 (getpoint "\n指定做法层第一点:"))
        (if (= pt1 nil)
            (setq pt1 (getpoint "\n*错误*,指定做法层第一点:或按ESC键结束命令:"))
        )
                (setq pt2 (getpoint pt1 "\n指定做法层下一点:<退出>:"))
                (if (= pt2 nil)
                    (progn
                      (setq ptx (getpoint pt1 "\n指定做法标注点:"))
                      (setq pty (getpoint ptx "\n指定标注方向点:"))
                    )
                        (progn
                          (setq pt3 (getpoint pt2 "\n指定做法层下一点:<退出>:"))
                          (if (= pt3 nil)
                              (progn
                               (setq ptx (getpoint pt1 "\n指定做法标注点:"))
                           (setq pty (getpoint ptx "\n指定标注方向点:"))
                               (setq BNO1 (getstring  "\n输入做法一:"))
                               (setq BNO2 (getstring  "\n输入做法二:"))
                               (setq kang (angle pt1 ptx));角度
                               (setq len1 (* 5 n2));间距
                               (setq p1 (polar ptx kang len1));
                   (setq p2 (polar pty kang len1))
                               (command ".qleader" pt1 ptx pty "" BNO1 nil)
                               (command ".qleader" pt2 p1 p2 "" BNO2 nil)
                               )
                              (progn
                                  (setq pt4 (getpoint pt2 "\n指定做法层下一点:<退出>:"))
                                  (if (= pt4 nil)
                                      (progn
                                    (setq ptx (getpoint pt1 "\n指定做法标注点:"))
                                (setq pty (getpoint ptx "\n指定标注方向点:"))
                                    (setq BNO1 (getstring  "\n输入做法一:"))
                                    (setq BNO2 (getstring  "\n输入做法二:"))
                                                (setq BNO3 (getstring  "\n输入做法三:"))
                                    (setq kang (angle pt1 ptx));角度
                                    (setq len1 (* 5 n2));间距
                                                (setq len2 (* 10 n2));间距
                                    (setq p1 (polar ptx kang len1));
                        (setq p2 (polar pty kang len1))
                                                (setq p3 (polar ptx kang len2));
                        (setq p4 (polar pty kang len2))
                                    (command ".qleader" pt1 ptx pty "" BNO1 nil)
                                    (command ".qleader" pt2 p1 p2 "" BNO2 nil)
                                                (command ".qleader" pt3 p3 p4 "" BNO3 nil)
                                   )
                                           (progn
                                           (setq pt5 (getpoint pt2 "\n指定做法层下一点:<退出>:"))
                                           (if (= pt5 nil)
                                                           (progn
                                          (setq ptx (getpoint pt1 "\n指定做法标注点:"))
                                      (setq pty (getpoint ptx "\n指定标注方向点:"))
                                          (setq BNO1 (getstring  "\n输入做法一:"))
                                          (setq BNO2 (getstring  "\n输入做法二:"))
                                                      (setq BNO3 (getstring  "\n输入做法三:"))
                                                          (setq BNO4 (getstring  "\n输入做法四:"))
                                          (setq kang (angle pt1 ptx));角度
                                          (setq len1 (* 5 n2));间距
                                                      (setq len2 (* 10 n2));间距
                                                          (setq len3 (* 15 n2));间距
                                          (setq p1 (polar ptx kang len1));
                              (setq p2 (polar pty kang len1))
                                                      (setq p3 (polar ptx kang len2));
                              (setq p4 (polar pty kang len2))
                                                          (setq p5 (polar ptx kang len3))
                                                          (setq p6 (polar pty kang len3))
                                          (command ".qleader" pt1 ptx pty "" BNO1 nil)
                                          (command ".qleader" pt2 p1 p2 "" BNO2 nil)
                                                      (command ".qleader" pt3 p3 p4 "" BNO3 nil)
                                                          (command ".qleader" pt4 p5 p6 "" BNO4 nil)
                                        )
                                                        (progn
                                          (setq ptx (getpoint pt1 "\n指定做法标注点:"))
                                      (setq pty (getpoint ptx "\n指定标注方向点:"))
                                          (setq BNO1 (getstring  "\n输入做法一:"))
                                          (setq BNO2 (getstring  "\n输入做法二:"))
                                                      (setq BNO3 (getstring  "\n输入做法三:"))
                                                          (setq BNO4 (getstring  "\n输入做法四:"))
                                                          (setq BNO5 (getstring  "\n输入做法五:"))
                                          (setq kang (angle pt1 ptx));角度
                                          (setq len1 (* 5 n2));间距
                                                      (setq len2 (* 10 n2));间距
                                                          (setq len3 (* 15 n2));间距
                                                          (setq len4 (* 20 n2));间距
                                          (setq p1 (polar ptx kang len1));
                              (setq p2 (polar pty kang len1))
                                                      (setq p3 (polar ptx kang len2));
                              (setq p4 (polar pty kang len2))
                                                          (setq p5 (polar ptx kang len3))
                                                          (setq p6 (polar pty kang len3))
                                                          (setq p7 (polar ptx kang len4))
                                                          (setq p8 (polar pty kang len4))
                                          (command ".qleader" pt1 ptx pty "" BNO1 nil)
                                          (command ".qleader" pt2 p1 p2 "" BNO2 nil)
                                                      (command ".qleader" pt3 p3 p4 "" BNO3 nil)
                                                          (command ".qleader" pt4 p5 p6 "" BNO4 nil)
                                                          (command ".qleader" pt5 p7 p8 "" BNO4 nil)
                                        )
                                           )
                                           )
                                  )
                                  )
                           )
                    )
                )
               
)
发表于 2020-12-15 00:25:56 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq n2 (getvar "DIMSCALE"))
  3.   (setq pt1 (getpoint "\n指定做法层第一点: "))
  4.   (setq pt3 (getpoint pt1 "\n指定做法标注点: "))
  5.   (setq pt4 (getpoint pt3 "\n指定标注方向点: "))
  6.   (setq BNO (getstring "\n输入做法: "))
  7.   (setq rad (angle pt3 pt1))
  8.   (setq len (* 5 n2))
  9.   (setvar "osmode" 0)
  10.   (command "qleader" pt1 pt3 pt4 "" BNO nil)
  11.   (while (setq pt2 (getpoint pt1 "\n指定做法层下一点<退出>: "))
  12.     (setq tx (getstring "\n输入做法: "))
  13.     (setq pt1 pt2)
  14.     (setq pt3 (polar pt3 rad len))
  15.     (setq pt4 (polar pt4 rad len))
  16.     (command ".qleader" pt1 pt3 pt4 "" tx nil)
  17.   )
  18.   (princ)
  19. )
发表于 2020-12-15 00:35:23 | 显示全部楼层
  1. (defun c:tt () ;tt(做法标注) 全自动方式
  2.   (setq lst '("A" "B" "C" "D" "E")) ;做法表
  3.   (setq n2 (getvar "DIMSCALE"))
  4.   (setvar "orthomode" 1)
  5.   (setq pt1 (getpoint "\n指定做法层第一点: "))
  6.   (setq pt3 (getpoint pt1 "\n指定做法标注点: "))
  7.   (setq pt4 (getpoint pt3 "\n指定标注方向点: "))
  8.   (setq rad (angle pt3 pt1))
  9.   (setq len (* 5 n2))
  10.   (setvar "osmode" 0)
  11.   (command "qleader" pt1 pt3 pt4 "" (car lst) nil)
  12.   (setq lst (cdr lst))
  13.   (foreach tx lst
  14.     (setq pt3 (polar pt3 rad len))
  15.     (setq pt4 (polar pt4 rad len))
  16.     (command ".qleader" pt1 pt3 pt4 "" tx nil)
  17.   )
  18.   (princ)
  19. )

点评

代码怎么使用呢?  发表于 2020-12-18 15:12
 楼主| 发表于 2020-12-15 07:23:20 | 显示全部楼层

非常感谢,这两个都很好,第二个可以做成对话框,适用于5个内的做法,后面再加工一下,会更加适合我使用

点评

几个都无所谓  发表于 2020-12-15 09:16
发表于 2020-12-18 15:12:26 | 显示全部楼层

代码怎么用啊?
发表于 2021-1-9 22:37:52 来自手机 | 显示全部楼层
学习中,这个功能不错。
发表于 2023-9-22 16:39:17 | 显示全部楼层

学习中,这个功能不错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 06:26 , Processed in 0.172341 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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