4个回答
2015-10-06 · 知道合伙人软件行家
关注
展开全部
加载一个小插件;
;定长分割圆弧;
(defun C:tes ( / &dis1 &dis2 &end &ob1 &p1 &ss1 &sta ang1 c10 c40 c50 c51 c6 c62 c8 ent i n1)
(if (null vlax-dump-object) (vl-load-com) )
(if (and
(setq ent (entsel "\n请选择要分割的圆弧"))
(setq &ob1 (vlax-ename->vla-object (car ent)))
(setq &dis1 (vlax-curve-getDistAtParam &ob1 (vlax-curve-getEndParam &ob1)))
(setq &dis2 (getdist (strcat "\n请输入" (rtos &dis1) "的圆弧" "分割指定长度")))
(> &dis2 0)
(> &dis1 &dis2)
)
(progn;;1
(setq c10 (Vlax-SafeArray->List (Vlax-Variant-Value (vla-get-Center &ob1))));圆弧中心
(setq &sta (vlax-curve-getStartPoint &ob1) &end (vlax-curve-getEndPoint &ob1))
(setq &ss1 '() n1 (fix (/ &dis1 &dis2)))
(if (= (rem (/ &dis1 &dis2)) 0) (setq n1 (- n1 1)) )
(if (> n1 0);2
(progn;;2
(setq &ss1 (cons &sta &ss1) i 1)
(repeat n1
(setq &p1 (vlax-curve-getPointAtDist &ob1 (* &dis2 i)) i (1+ i))
(setq &ss1 (cons &p1 &ss1))
);repeat
);progn;2
);if;2
(setq &ss1 (cons &end &ss1))
(setq c8 (vla-get-layer &ob1) c50 (vla-get-StartAngle &ob1))
(setq c62 (vla-get-color &ob1) c6 (vla-get-Linetype &ob1))
(setq c40 (vla-get-Radius &ob1) ang1 (angle c10 &sta))
(if (<= (abs (- ang1 c50)) 0.00001) (setq &ss1 (reverse &ss1)) )
(setq &sta (car &ss1) &ss1 (cdr &ss1) i 0 c50 (angle c10 &sta))
(repeat (length &ss1)
(setq &end (nth i &ss1) i (1+ i))
(setq c51 (angle c10 &end))
(entmake (list '(0 . "ARC") (cons 8 c8) (cons 62 c62) (cons 6 c6) (cons 10 c10) (cons 40 c40) (cons 50 c50) (cons 51 c51)))
(setq &sta &end c50 c51)
)
(vla-delete &ob1)
);progn;1
);if
(princ)
);复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES】
;因为是用VLA程序写的,所以对象的法向坐标是-1也可以分割,分割后的对象法向坐标为1
展开全部
绘图-点-定距等分;选择要等分的弧线,输入距离就可以。然后再格式-点样式里调整一下点大小就可以看见了。建议按绝对单位设置大小。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按相同角度来分割
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询