根据AutoCAD图中指定的尺寸缩放长度

问题描述 投票:1回答:1

这是我上一篇文章here的后续内容>

我使用下面的代码ref创建了2D几何。

(defun graph ( pts sls tls )

    (   (lambda ( l )
            (foreach x l (text (cdr x) (itoa (car x)) 0.0 1))
            (mapcar
               '(lambda ( a b / p q r )
                    (setq p (cdr (assoc a l))
                          q (cdr (assoc b l))
                          r (angle p q)
                    )
                    (entmake (list '(0 . "LINE") (cons 10 p) (cons 11 q) '(62 . 8)))
                    (text
                        (mapcar '(lambda ( x y ) (/ (+ x y) 2.0)) p q)
                        (roundupto (distance p q) 12.4)
                        (if (and (< (* pi 0.5) r) (<= r (* pi 1.5))) (+ r pi) r)
                        2
                    )
                )
                sls tls
            )
        )
        (mapcar 'cons (vl-sort (append sls tls) '<) pts)
    )
)
(defun text ( p s a c )
    (entmake
        (list
           '(0 . "TEXT")
            (cons 10 p)
            (cons 11 p)
            (cons 50 a)
            (cons 01 s)
            (cons 62 c)
           '(40 . 2)
           '(72 . 1)
           '(73 . 2)
        )
    )
)

(defun roundupto ( x m / d r )
    (setq d (getvar 'dimzin))
    (setvar 'dimzin 8)
    (setq r (rtos (* m (fix (+ 1 -1e-8 (/ x (float m))))) 2 8))
    (setvar 'dimzin d)
    r
)

输入:

(graph
   '((75 25) (115 45) (90 60) (10 5) (45 0) (45 55) (0 25) (10 50) (115 25))
   '(1 1 1 2 2 3 4 4 6 7 2)
   '(2 4 5 3 6 6 5 7 7 8 9)
)

输出:

enter image description here

实际尺寸与这些行上文本(黄色)中显示的值不匹配。例如,显示的值是62,实际尺寸是54.0833。我想将实际长度重新调整为线条上方以黄色显示的值。我了解上面提供的input中显示的坐标必须改变。可能第一个坐标可以固定,而随后的坐标可以移动。

关于如何执行此操作的任何建议都会很有帮助。

编辑:在我对上一篇文章here的答复中提供的解决方案Scaling lengths in an AutoCAD diagram仅使用从roundupto函数获得的输出来缩放显示为黄色的尺寸。发布此问题的目的是寻求缩放实际长度的建议,而不仅仅是黄色显示的尺寸。

EDIT2:添加其他详细信息

如果直接在AutoCAD中加载输入文件,则下图中显示的黄色文本为实际尺寸enter image description here

并且我想将尺寸转换为下图中显示的相应黄色标签:enter image description here

注意:在EDIT2中第二个图像中显示的标签是使用AutoLISP代码从外部更改的,仅显示了如何缩放相应行的实际长度。在EDIT2中显示的第一张图像中,边缘标签与相应行的长度完全匹配。

这是我上一篇文章的后续文章,我使用下面的代码ref创建了2D几何。 (defun graph(pts sls tls)((lambda(l)(foreach x l(text(cdr x)(itoa ...

geometry 2d scaling autocad autolisp
1个回答
0
投票

所有值上的误差因子是否恒定,或者每个值是否不同?我的意思是,如果您计算60 / 54.0833,您将获得大约1.13。如果以其他方式这样做,您会得到什么?如果存在恒定的“缩放因子”,则可以将顶点乘以该缩放因子,然后更改标签(黄色数字)。

[我承认,我不太了解AutoCAD,因此除非您会通过代码语法与我交谈,否则我只能给出提示,没有代码解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.