修改和改进现有路线
你好我目前正在使用一个函数,该函数对二维线进行尺寸标注,并生成文本以显示相关尺寸,我正在尝试确定是否可以在插入文本时为其指定特定位置。
目前,文本被手动放置在例程的末尾,但我希望它被放置在特定的偏移位置,即:距离直线0.50m,如下例。
我是一个完全的新手,当谈到Lisp程序的例程,并渴望学习,如果有人能告诉我正确的方向,这将是非常感谢。
这是我们目前正在使用的。。。
(defun c:d1-2002()
(command "osnap" "end")
(setq pt1 (getpoint "1st end:"))
(setvar "lastpoint" pt1)
(setq pt2 (getpoint "2nd end:"))
(command "osnap" "")
(setq dist (rtos (distance pt1 pt2) 2 2))
(setq ang (- 90.0 (/ (* (angle pt1 pt2) 180.0) pi)))
(setq pt1 (getpoint "mid point of text:"))
(setq b(* 3 (getvar "dimscale")))
(command "-layer" "m" "DISTANCE" "c" "3" "" "")
(command "text" "m" pt1 b ang dist)
(princ)
)
Dimstyle是一种创建样式的方法,它关闭了所有端点,并设置了尺寸线,因此只以文本结束,然后处理偏移并将文本置于中间等
另一种方法是计算出与lisp相似的文本位置。
; simple line labeller
; by Alan H June 2018
(defun c:linelab ( / pt1 pt2 pt3 oldsnap rads oldang ang dist)
(setq oldsnap (getvar 'osmode))
(setq oldang (getvar 'angdir))
(setq rads (getvar 'aunits))
(setvar 'osmode 1)
(setq dimsc (* 3 (getvar "dimscale")))
(alert "Text will follow Pt1 -> pt2") ; delete line later
(setq pt1 (getpoint "pick end pt"))
(setq pt2 (getpoint "Pick other end"))
(setq ang (angle pt1 pt2))
(setq dist (distance pt1 pt2))
(setq pt3 (polar pt1 ang (/ dist 2.0)))
(setq pt3 (polar pt3 (+ ang (/ pi 2.0)) 3.5)) ; hard coded 3.5
(if (= (tblsearch "layer" "DISTANCE") nil)
(command "-layer" "m" "DISTANCE" "c" "3" "" "")
)
(setvar 'osmode 0) ; end
(setvar 'angdir 0) ; east
(setvar 'aunits 3) ; radians
(command "text" pt3 dimsc (- ang (/ pi 2.0)) (rtos dist 2 2))
; flip option here inside/outside press enter
(setvar 'osmode oldsnap)
(setvar 'angdir oldang)
(setvar 'aunits rads)
)
(c:linelab)
请阅读代码发布指南,并将您的代码包含在代码标签中。
Your Code Here=
Your Code Here 下面是一些快速编写的内容,您可以通过使用entmake for the text labels&cmdecho来进一步优化,以消除控制台垃圾邮件,但我将留给您使用
我喜欢BIGAL提到的简化dimstyle,如果线条发生变化,标签会自动更新 谢谢你的建议,如果有机会,我会查一查,然后告诉你我的进展。 当然,我将来一定会遵循这些指导原则。 谢谢@FranknBeans,现在有很多事情要处理! 再次感谢所有的建议,最终开始实施其中的一些建议,并最终采用了精简的维度风格。这个解决方案肯定更容易掌握,但我仍然对Auto-LISP方面感兴趣,并将努力继续与社区互动,以达到这一目的。
页:
[1]