Geometry 根据AutoCAD图表中指定的尺寸缩放长度
这是我上一篇文章的后续文章 我使用以下代码创建了一个二维几何体 输出: 实际尺寸与文字中显示的值(黄色)不匹配。 例如,62是显示的值,54.0833是实际尺寸。我想将实际长度重新缩放到显示的值,以黄色显示在线条上。 我知道上面提供的Geometry 根据AutoCAD图表中指定的尺寸缩放长度,geometry,2d,scaling,autocad,autolisp,Geometry,2d,Scaling,Autocad,Autolisp,这是我上一篇文章的后续文章 我使用以下代码创建了一个二维几何体 输出: 实际尺寸与文字中显示的值(黄色)不匹配。 例如,62是显示的值,54.0833是实际尺寸。我想将实际长度重新缩放到显示的值,以黄色显示在线条上。 我知道上面提供的输入中显示的坐标必须改变。第一个坐标可能是固定的,随后的坐标可能会移动 任何关于如何做到这一点的建议都会非常有用 编辑:在我上一篇文章的答案中提供的解决方案使用从roundupto函数获得的输出,仅缩放以黄色显示的维度。发布此问题的目的是征求关于缩放实际长度的建议
输入中显示的坐标必须改变。第一个坐标可能是固定的,随后的坐标可能会移动
任何关于如何做到这一点的建议都会非常有用
编辑:在我上一篇文章的答案中提供的解决方案使用从roundupto
函数获得的输出,仅缩放以黄色显示的维度。发布此问题的目的是征求关于缩放实际长度的建议,而不仅仅是黄色显示的尺寸
编辑2:添加其他详细信息
如果直接在AutoCAD中加载输入文件,则下图中显示的黄色文字为实际尺寸
我想将尺寸转换为下图中显示的相应黄色标签:
注意:EDIT2中第二个图像中显示的标签是使用AutoLISP代码在外部更改的,仅显示必须如何缩放相应行的实际长度。在EDIT2中显示的第一幅图像中,边缘标签与相应行的长度完全匹配。所有值是否都有一个恒定的误差系数,或者每个值的误差系数是否不同?
我的意思是,如果你计算60/54.0833,你大概得到1.13。如果你在其他长度上这样做,你会得到什么?
如果有一个恒定的“缩放因子”,您可以将顶点乘以该因子,然后更改标签(黄色数字)
我承认,我对AutoCAD不太了解,所以我只能给出提示,除非你能告诉我你的代码语法,否则没有代码解决方案
我怀疑一些舍入或除法错误是造成数值差异的原因。你能查一下吗?例如,a b/p q r
是整数还是浮点结果?roundupto
是如何工作的?哪种精度具有pipi
?您是否可以截断或规范化所有值,使其具有相同的精度(例如“逗号后三位数”)
参数sls
和tls
的含义是什么pts
我可以从您发布的输入中识别为“点列表”。是否所有值都有一个恒定的误差系数,或者每个值都不同?
我的意思是,如果你计算60/54.0833,你大概得到1.13。如果你在其他长度上这样做,你会得到什么?
如果有一个恒定的“缩放因子”,您可以将顶点乘以该因子,然后更改标签(黄色数字)
我承认,我对AutoCAD不太了解,所以我只能给出提示,除非你能告诉我你的代码语法,否则没有代码解决方案
我怀疑一些舍入或除法错误是造成数值差异的原因。你能查一下吗?例如,a b/p q r
是整数还是浮点结果?roundupto
是如何工作的?哪种精度具有pipi
?您是否可以截断或规范化所有值,使其具有相同的精度(例如“逗号后三位数”)
参数sls
和tls
的含义是什么pts
我可以从您发布的输入中识别为“积分列表”。这是否回答了您的问题?请注意,当您将一个问题标记为重复问题时,会自动生成“这是否回答了您的问题?”的注释,我觉得这是-我不会用这种方式表达注释。@LeeMac yep他们将近距离投票改得更“友好”,但大多数问题不再有意义,只是混淆了。。。多多少少只是凭记忆投票(真正的原因是什么),谢谢你对评论的澄清。我期待着收到关于如何继续处理所张贴问题的建议。非常感谢!这回答了你的问题吗?请注意,当您将一个问题标记为重复问题时,会自动生成“这是否回答了您的问题?”的注释,我觉得这是-我不会用这种方式表达注释。@LeeMac yep他们将近距离投票改得更“友好”,但大多数问题不再有意义,只是混淆了。。。多多少少只是凭记忆投票(真正的原因是什么),谢谢你对评论的澄清。我期待着收到关于如何继续处理所张贴问题的建议。非常感谢!
(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)
)