墙代码的帮助
该代码使用中心线绘制墙,并根据墙的厚度指定层。我相信一些大师可以帮助我改进它,如下所示:
·当输入最后一个点时,消除讨厌的“错误:错误参数类型:2D/3D点:nil”消息
·当最后一面墙的端点是第一面墙的第一个点(墙闭合形成房间)时,使墙线成圆角。
·当存在T或X交点时,使墙线(不是中心线)成圆角。
·清理代码,以获得更好的解决方案。
提前谢谢,我为写代码的糟糕方式道歉。 *未附上代码* 我真傻,这是密码:
(定义c:墙(/f1 pnt4 f2 c d e pnt1 pnt3 pnt2 pnt5 pnt6 ang lac laca ee f11 f21)
(setvar“osmode”0)
(命令“fillet”“r”0)
(setq f1 nil)
(setq pnt4 nil)
(setq f2 nil)
(setq c 0)
;;;;;-------------------------------------------------------
(if(非*WID)(setq*WID 0.15))
(princ“\n输入墙宽度:
(普林斯*威德)
(SETQ WID(GETDIST“>:”)
(IF(非WID)(SETQ WID*WID)(SETQ*WID WID))
(SETQ MWID(/WID 2))
;;;;;;;----------------------------------------------------
(SETQ EE(*WID 100))
(SETQ EE(RTOS EE 2 0))
(setq Lac(strcat“WALLS-BLINE-“EE”)
;;;;;;-----------------------------------------------------
(setq e 3)
(setq pnt1(getpoint“\n墙的第一点”))
(e时)
(如果(/=pnt3 nil)(setq f1 pnt3))
(如果(>c 1)(setq f1(极性pnt3和mWID)))
(如果(/=pnt3 nil)(setq f11 pnt5))
(如果(>c 1)(setq f11(极性pnt5和mWID)))
(setq pnt2(getpoint“\n下一点”pnt1))
(setq c(+c 1))
(setq aNG(角度pnt1 pnt2))
(setq pnt3(极性pnt1(-aNG(dtr 90))MWID))
(setq pnt4(极性pnt2(-aNG(dtr 90))MWID))
(setq pnt5(极性pnt1(+aNG(dtr 90))MWID))
(setq pnt6(极性pnt2(+aNG(dtr 90))MWID))
(命令“LAYER”“MAKE”LAC“COLOR”“6”“LTYPE”“CENTER”“”“)
(命令行“pnt1 pnt2”)
(setq LacA(strcat“墙”-EE))
(如果(
(命令“LAYER”“MAKE”Laca“COLOR”2““ltype”“continuous”“”“”)
(命令“LAYER”“MAKE”Laca“COLOR”4““ltype”“continuous”“”“”)
(命令行“pnt3 pnt4”)
(命令行“pnt5 pnt6”)
(setq f2(极性pnt2(-aNG(dtr 90))mWID))
(setq f21(极性pnt2(+aNG(dtr 90))mWID))
(setq pnt1 pnt2)
(如果(/=f1 nil)(命令“fillet”f1 f2))
(如果(/=f11 nil)(命令“fillet”f11 f21))
(命令“LAYER”SET“0”)
)
(普林斯)
)
页:
[1]