cad的样条曲线怎么改成多个圆弧
4个回答
2015-08-13 · 知道合伙人软件行家
关注
展开全部
这个目前只有编写的autolisp才可以办到,AutoCAD里面直接转换的话,只能转换为等分多段线。
(defun C:TES ( / &dis1 &dis2 &dis3 &dis4 &end &hud &k1 &kw1 &ob1 &p1 &p2 &sta &tc1 fb1 i n ss)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(vl-load-com)
(princ "\n请选择样条曲线")
(if (and (setq &kw1 (ssget '((0 . "SPLINE"))))
(setq n (getint "\n请输入等分数值"))
);1
(progn;;1
(while (setq &k1 (ssname &kw1 0));1
(setq &kw1 (ssdel &k1 &kw1) &ob1 (vlax-ename->vla-object &k1))
(if (> (setq &dis1 (vlax-curve-getDistAtParam &ob1 (vlax-curve-getEndParam &ob1))) 0)
(progn;;2
(setq &sta (vlax-curve-getStartPoint &ob1) &end (vlax-curve-getEndPoint &ob1) i 1 &dis2 0 ss '())
(while (>= n i);2
(setq &dis3 (/ (* &dis1 i) n) &dis4 (/ (+ &dis2 &dis3) 2) &p2 (vlax-curve-getPointAtDist &ob1 &dis4))
(if (= i n) (setq &p1 &end) (setq &p1 (vlax-curve-getPointAtDist &ob1 &dis3)) )
(setq ss (cons (cons 10 &sta) ss))
(setq &hud (T~20150813~1 &sta &p1 &p2) ss (cons (cons 42 &hud) ss))
(setq &sta &p1 &dis2 &dis3 i (+ i 1))
);while;2
(if (vlax-curve-isClosed &ob1)
(setq fb1 '(70 . 1))
(progn
(setq fb1 '(70 . 0) ss (cons (cons 10 &end)ss) n (1+ n))
)
)
(setq &tc1 (vla-get-layer &ob1) ss (reverse ss))
(entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (cons 8 &tc1) '(100 . "AcDbPolyline") (cons 90 n) fb1) ss))
);progn;2
);if;2
(vla-delete &ob1)
);while;1
);progn;1
);if;1
(prin1)
)
(defun T~20150813~1 (&_point1 &_point2 &_point3 / &_ang1 &_ang2 &_point1 &_point2 &_point3);三点输入计算弧度
(setq &_ang1 (angle &_point3 &_point2) &_ang2 (angle &_point3 &_point1) &_ang1 (* (- &_ang2 &_ang1) 0.5))
(if (= (sin &_ang1) 0) (cos &_ang1) (/ (cos &_ang1) (sin &_ang1)) )
);复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES】
;等分的数值越大,得到的多段线越接近样条曲线,炸开多段线,得到的就是圆弧。
展开全部
你可以直接画多个圆弧(云线),比改得快90倍
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用br打断命令就可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询