李,
我一直在写一些代码来绘制平面图中的楼梯。
到目前为止,我有这个;
就在原始阶段,它会询问两个点楼梯的方向、宽度,然后是台阶的长度。我的想法是将其开发成一个工具,在其中绘制楼梯平面图,包括步骤编号、尺寸、扶手、1.2米以上虚线所示的步骤等。。。
在这里的代码中,它直接询问将根据用户输入的楼层高度和高度计算的步长数。
上述怀疑是为了修剪扶手内的踏步线。到目前为止,它可以修剪扶手内的任何东西。我只是想在trim命令激活时选择“仅阶梯线”。
- (defun c:str()
- (setq osm (getvar "OSMODE"))
- (setq Layer (getvar "CLAYER"))
- (setvar "OSMODE" 15359)
- (setq P1 (getpoint "\npick point P1:"))
- (setq P2 (getpoint P1 "\npick point P2:"))
- (setq dir (angle p1 p2))
- (setq nor (+ (dtor 90) dir))
- (setq Width (getdist "\nStair Width:"))
- (setq HWidth (/ Width 2))
- (setq Steps (getint "\nNumber of Steps:"))
- (setq Going (getdist "Going:"))
- (setq P3 (polar p1 (+(dtor 180) nor) HWidth))
- (setq P4 (polar p1 nor HWidth))
- (setq p6 (polar p4 dir (* (- Steps 1) Going)))
-
- (setq P7 (polar p4 (+ (dtor 180) nor) 0.05))
- (setq P8 (polar p7 (+ (dtor 90) nor) 0.20))
- (setq P9 (polar p6 (+ (dtor 180) nor) 0.05))
- (setq P10 (polar p9 (+ (dtor 270) nor) 0.20))
- (setq P11 (polar p10 (+ (dtor 180) nor) 0.05))
- (setq p12 (polar p8 (+ (dtor 180) nor) 0.05))
- (setq ctpA1 (polar p7 (+ (dtor 182) dir) 0.01))
- (setq ctpA2 (polar p9 (+ (dtor 358) dir) 0.01))
- (setvar "OSMODE" 0)
- (setvar "CLAYER" "A-FLOR-HRAL")
- (command "_PLINE" p8 p7 p9 p10 p11 p12 "C")
- (setq n 1)
- (repeat Steps
- (if
- (> n 4)
- (setvar "CLAYER" "A-DETL-HIDN")
- (setvar "CLAYER" "A-FLOR-STRS")
- )
- (command "Line" p3 P4 "")
- (setq P3 (polar P3 dir Going))
- (setq P4 (polar P4 dir Going))
- (setq n (1+ n))
- );Repeat
- (command "_TRIM" "" "F" ctpA1 ctpA2 "" "")
- (setvar "OSMODE" OSM)
- (setvar "CLAYER" Layer)
- );Defun
-
- (defun dtor (d)
- (* d 0.01745329)
- )
- (defun rtod (r)
- (* r 57.2958)
- )
|