【发布时间】:2020-07-31 02:58:42
【问题描述】:
这是我之前的帖子here的后续内容@
我使用以下代码创建了一个 2D 几何图形,ref。
(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 中显示的坐标必须有所不同。大概,第一个坐标可以固定,后面的坐标可以移动。
任何关于如何做到这一点的建议都会非常有帮助。
编辑:在我之前的帖子Scaling lengths in an AutoCAD diagram 的回答中提供的解决方案here 使用从roundupto 函数获得的输出仅缩放以黄色显示的尺寸。发布此问题的目的是询问有关缩放实际长度的建议,而不仅仅是以黄色显示的尺寸。
EDIT2:添加其他详细信息
如果直接在AutoCAD中加载输入文件,下图中显示的黄色文字为实际尺寸
注意:EDIT2 中第二张图像中显示的标签已使用 AutoLISP 代码在外部进行了更改,以仅显示必须如何缩放相应行的实际长度。在 EDIT2 中显示的第一张图像中,边缘标签与相应线条的长度完全匹配。
【问题讨论】:
-
这能回答你的问题吗? Scaling lengths in an AutoCAD diagram
-
请注意,当您将问题标记为重复问题时,会自动生成评论 “这能回答您的问题吗?”,我认为这是 - 我不会以这种方式表达评论。
-
@LeeMac 是的,他们改变了近距离投票以更加“友好”,但他们中的大多数已经没有意义了,只是混淆了......投票或多或少只是从记忆中(真正原因是)
-
感谢您对评论的澄清。我期待收到有关如何处理已发布问题的建议。非常感谢!
标签: geometry 2d scaling autocad autolisp