用CAD里的lisp画图
答案:1 悬赏:0 手机版
解决时间 2021-03-17 04:47
- 提问者网友:萌卜娃娃
- 2021-03-17 01:09
用CAD里的lisp画图
最佳答案
- 五星知识达人网友:青尢
- 2021-03-17 01:25
(defun C:tes ( / #os1 #p ang1 ang2 cd1 cd2 p1 p2 p5 pt x)
(setq #os1 (getvar "osmode"));取得捕捉设置
(vl-load-com)
(if (setq pt (getpoint "
请指定中心点"))
(if (> (setq CD1 (getdist pt "
请输入长度")) 0)
(if (setq ang1 (getangle pt "
请输入角度"))
(progn
(setvar "osmode" 0)
(setq CD2 (* CD1 0.5)
CD2 (* (expt (/ (expt CD2 2) 3) 0.5) -1);计算得到正多边形外切与圆半径r=开方【x平方/3】
ang2 (+ ang1 (* pi 0.5));取得角度
p1 (polar pt ang2 cd2);正多边形一个角点
p5 (polar pt ang1 CD1);镜像点
)
(command "POLYGON" 3 pt "C" p1);绘制正多边形
(command "MIRROR" (entlast) "" pt p5 "N");镜像这个对象
(setq #p (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget (entlast)))));取得镜像多段线里面的点
(setq p1 (car #p) p2 (cadr #p));提取端点
(setq p1 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p1 p2)));;两点相加取得中点
(command "POLYGON" 3 pt "I" p1);绘制正多边形
(setvar "osmode" #os1);还原捕捉
)
)
)
)
(princ)
);复制到记事本以【.lsp】为后缀命名,打开cad用autoLISP加载,命令为:TES来自:求助得到的回答
(setq #os1 (getvar "osmode"));取得捕捉设置
(vl-load-com)
(if (setq pt (getpoint "
请指定中心点"))
(if (> (setq CD1 (getdist pt "
请输入长度")) 0)
(if (setq ang1 (getangle pt "
请输入角度"))
(progn
(setvar "osmode" 0)
(setq CD2 (* CD1 0.5)
CD2 (* (expt (/ (expt CD2 2) 3) 0.5) -1);计算得到正多边形外切与圆半径r=开方【x平方/3】
ang2 (+ ang1 (* pi 0.5));取得角度
p1 (polar pt ang2 cd2);正多边形一个角点
p5 (polar pt ang1 CD1);镜像点
)
(command "POLYGON" 3 pt "C" p1);绘制正多边形
(command "MIRROR" (entlast) "" pt p5 "N");镜像这个对象
(setq #p (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget (entlast)))));取得镜像多段线里面的点
(setq p1 (car #p) p2 (cadr #p));提取端点
(setq p1 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p1 p2)));;两点相加取得中点
(command "POLYGON" 3 pt "I" p1);绘制正多边形
(setvar "osmode" #os1);还原捕捉
)
)
)
)
(princ)
);复制到记事本以【.lsp】为后缀命名,打开cad用autoLISP加载,命令为:TES来自:求助得到的回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯