只需一步,快速开始
(defun c:qx (/ ss m k s1 edata etype pt1 px1 py1 pt2 px2 py2 D ang po) ;先计算直线旋转角度,再以直线一端点为基点,旋转角的-22.5度,1/2的直线长度为距离定位的点,作为圆弧的第二点. (prompt "\n请选择需变圆弧的直线:") (setq ss (ssget) m 0 k 0 ) (repeat (sslength ss) (setq s1 (ssname ss m)) (setq edata (entget s1) etype (cdr (assoc 0 edata)) ) (if (= etype "LINE") (progn (setq pt1 (cdr (assoc 10 edata)) px1 (car pt1) py1 (cadr pt1) pt2 (cdr (assoc 11 edata)) px2 (car pt2) py2 (cadr pt2) D (/ (sqrt (+ (* (- px1 px2) (- px1 px2)) (* (- py1 py2) (- py1 py2))) ) 2 ) ) (if (= px1 px2) (progn (setq ang (- (/ pi 2) (/ pi 8))) ;画直线时只能由左往右画 (setq po (polar pt1 ang D)) ) (progn (if (= py1 py2) (progn (setq ang (- (* pi 2) (/ pi 8))) ;画直线时只能由下往上画 (setq po (polar pt1 ang D)) ) (progn (setq ang (- (atan (/ (- py1 py2) (- px1 px2))) (/ pi 8)) ) (if (< ang 0) (setq ang (+ ang (* pi 2))) ) (setq po (polar pt1 ang D)) ) ) ) ) (setq k (1+ k) ) (setq m (1+ m) ) (command "arc" pt1 po pt2) (command "erase" s1 "") ) ) ) (princ (strcat "\n共有<" (itoa k) ">根直线变圆弧了")) (prin1) )
使用道具 举报
先考慮
(setq osm (getvar "osmode"))
(setvar "osmode" 0);取消鎖點
...
(setvar "osmode" osm)
谢谢LS.
不过还是没搞清楚锁点与圆弧被取消的联系。
自己画图时,任意三点都可以画出圆弧啊。
另外,还以其它的命令跟锁点有关联吗?
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2025-9-19 03:54 , Processed in 0.293236 second(s), 26 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.