三点画室内门的程序画出来不对,请大神指点
(defun c:Door3P (/ pt1 pt2 pt3 ang width door_len)
(setvar "cmdecho" 0) ; 关闭命令回显
;-- 用户输入处理 --
(if (and (setq pt1 (getpoint "\n选择门洞插入点: "))
(setq pt2 (getpoint pt1 "\n指定开启方向端点: "))
(setq pt3 (getpoint pt2 "\n指定门板宽度确认点: ")))
(progn
;-- 参数计算 --
(setq ang (angle pt1 pt2)) ; 计算开启角度
(setq width (distance pt2 pt3)) ; 计算门板宽度
(setq door_len (distance pt1 pt2)) ; 门板长度默认取墙厚
;-- 图层设置 --
(command "-layer" "m" "门构件" "c" "7" "" "lw" "0.3" "" "") ; 创建门图层
;-- 绘制门板矩形 --
(command "pline"
pt1
(polar pt1 (+ ang (/ pi 2)) (/ width 2)) ; 计算左上角点
(polar (polar pt1 ang door_len) (+ ang (/ pi 2)) (/ width 2)) ; 右上角点
(polar pt1 ang door_len) ; 右下角点
"c") ; 闭合多段线
;-- 绘制开启弧线 --
(command "arc" pt1 "c" pt2 (polar pt1 ang door_len)) ; 三点画弧
(princ "\n门构件绘制完成!"))
(princ "\n输入点无效,操作已取消。"))
(princ))
(defun c:tt ()
"三点画门"
(if (and (setq pt1 (getpoint "\n选择门洞插入点: "))
(setq pt2 (getpoint pt1 "\n指定开启方向端点: "))
(setq pt3 (getpoint pt2 "\n指定门板宽度确认点: "))
)
(progn
(setq ang (angle pt1 pt2) ; 计算开启角度
width (* (distance pt2 pt3) 0.5) ; 计算门板宽度
ww (distance pt1 pt2) ; 门板长度默认取墙厚
)
(command "-layer" "m" "门构件" "c" "7" "" "lw" "0.3" "" "") ; 创建门图层
(setq pt4(polar pt1 ang ww) ; 右下角点
pt1a (polar pt1 (+ ang (/ pi 2)) width) ; 计算左上角点
pt4a (polar pt4 (+ ang (/ pi 2)) width) ; 右上角点
pt4b (polar pt4 (- ang (/ pi 2)) width)
)
(command "pline" pt1 pt1a pt4a pt4 "c")
(command "arc" pt1 "c" pt2 pt4b) ; 三点画弧
)
)
(princ)
) 配个图,标注好点的序号,更好理解些。 画圆弧 ang 有问题 配个图,标注好点的序号,更好理解些。
配个图,无图无真相
页:
[1]