这是我上一篇文章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) )
输出:
实际尺寸与这些行上文本(黄色)中显示的值不匹配。例如,显示的值是62,实际尺寸是54.0833。我想将实际长度重新调整为线条上方以黄色显示的值。我了解上面提供的input
中显示的坐标必须改变。可能第一个坐标可以固定,而随后的坐标可以移动。
关于如何执行此操作的任何建议都会很有帮助。
编辑:在我对上一篇文章here的答复中提供的解决方案Scaling lengths in an AutoCAD diagram仅使用从roundupto
函数获得的输出来缩放显示为黄色的尺寸。发布此问题的目的是寻求缩放实际长度的建议,而不仅仅是黄色显示的尺寸。
EDIT2:添加其他详细信息
如果直接在AutoCAD中加载输入文件,则下图中显示的黄色文本为实际尺寸
注意:在EDIT2中第二个图像中显示的标签是使用AutoLISP代码从外部更改的,仅显示了如何缩放相应行的实际长度。在EDIT2中显示的第一张图像中,边缘标签与相应行的长度完全匹配。
这是我上一篇文章的后续文章,我使用下面的代码ref创建了2D几何。 (defun graph(pts sls tls)((lambda(l)(foreach x l(text(cdr x)(itoa ...
所有值上的误差因子是否恒定,或者每个值是否不同?我的意思是,如果您计算60 / 54.0833,您将获得大约1.13。如果以其他方式这样做,您会得到什么?如果存在恒定的“缩放因子”,则可以将顶点乘以该缩放因子,然后更改标签(黄色数字)。
[我承认,我不太了解AutoCAD,因此除非您会通过代码语法与我交谈,否则我只能给出提示,没有代码解决方案。