多段线生成缓冲区
本帖最后由 newer 于 2025-1-10 10:02 编辑[*]生成多多段线的BOX,
[*]批量
[*]灵活设置上下左右偏移距离
[*]灵活设置封口方式
(defun c:xdtb_pl2box ( / ents ss tf tf1 val)
(defun _prompt1 ()
(xdrx_prompt
(xdrx-string-formatex
(xdrx-string-multilanguage
"\n** Offset 当前设置:上偏(%.1f) | 下偏(%.1f) | 左偏(%.1f) | 右偏(%.1f) | 封端(%s) **"
"\n** Offset Current settings:[ Up(%.1f) | Down(%.1f) | Left(%.1f) | Right(%.1f) | Close(%s) ]**"
)
#xd-var-global-offset-up-distance
#xd-var-global-offset-down-distance
#xd-var-global-offset-left-distance
#xd-var-global-offset-right-distance
#xd-var-global-offset-close-mode
)
)
t
)
(if (not #xd-var-global-offset-up-distance)
(setq #xd-var-global-offset-up-distance 10.0)
)
(if (not #xd-var-global-offset-down-distance)
(setq #xd-var-global-offset-down-distance 10.0)
)
(if (not #xd-var-global-offset-left-distance)
(setq #xd-var-global-offset-left-distance 0.0)
)
(if (not #xd-var-global-offset-right-distance)
(setq #xd-var-global-offset-right-distance 0.0)
)
(if (not #xd-var-global-offset-close-mode)
(setq #xd-var-global-offset-close-mode "Chamfer")
)
(xdrx-begin)
(_prompt1)
(setq tf t)
(while
(and
tf
(_prompt1)
(xdrx_initssget
(xdrx-string-multilanguage
"选取要偏移的多段线[上偏(0)/下偏(1)/左偏(2)/右偏(3)/封端(4)]<退出>:"
"Select the polyline to be offset [ Up(0)/Down(1)/Left(2)/Right(3)/CloseMode(4) ]<Exit>:"
)
"0 1 2 3 4"
""
""
""
)
(setq ss (xdrx_ssget
'((-4 . "<or")
(0 . "line")
(-4 . "<and")
(0 . "*polyline")
(-4 . "<not")
(-4 . "&=")
(70 . 1)
(-4 . "not>")
(-4 . "and>")
(-4 . "or>")
)
)
)
)
(setq tf1 (type ss))
(cond
((= tf1 'STR)
(cond
((= ss "0")
(if (setq val
(getreal (xdrx-string-formatex
(xdrx-string-multilanguage
"\n上偏距离<%.1f>"
"\nUp Offset<%.1f>"
)
#xd-var-global-offset-up-distance
)
)
)
(setq #xd-var-global-offset-up-distance val)
)
)
((= ss "1")
(if (setq val
(getreal (xdrx-string-formatex
(xdrx-string-multilanguage
"\n下偏距离<%.1f>"
"\nDown Offset<%.1f>"
)
#xd-var-global-offset-down-distance
)
)
)
(setq #xd-var-global-offset-down-distance val)
)
)
((= ss "2")
(if (setq val
(getreal (xdrx-string-formatex
(xdrx-string-multilanguage
"\n左偏距离<%.1f>"
"\nLeft Offset<%.1f>"
)
#xd-var-global-offset-Left-distance
)
)
)
(setq #xd-var-global-offset-Left-distance val)
)
)
((= ss "3")
(if (setq val
(getreal (xdrx-string-formatex
(xdrx-string-multilanguage
"\n右偏距离<%.1f>"
"\nRight Offset<%.1f>"
)
#xd-var-global-offset-Right-distance
)
)
)
(setq #xd-var-global-offset-Right-distance val)
)
)
((= ss "4")
(xdrx-initget "0 1")
(if (setq val
(getint
(xdrx-string-formatex
(xdrx-string-multilanguage
"\n封口方式<%d>:"
"\nClose Modet<%d>:"
)
(if
(= (strcase #xd-var-global-offset-close-mode)
"CHARMFER"
)
0
1
)
)
)
)
(setq #xd-var-global-offset-close-mode
(if (= val 0)
"Charmfer"
"Fillet"
)
)
)
)
)
)
((= tf1 'PICKSET)
(if (= (strcase #xd-var-global-offset-close-mode) "CHARMFER")
(xdrx-setvar "boxfillet" 1)
(xdrx-setvar "boxfillet" 0))
(setq ents (xdrx-getproperty
ss
"tobox"
#xd-var-global-offset-down-distance
#xd-var-global-offset-Up-distance
#xd-var-global-offset-Left-distance
#xd-var-global-offset-Right-distance
)
)
(xdrx-entity-make ents)
(setq tf nil)
)
)
)
(xdrx-end)
(princ)
)
页:
[1]