在ug.nx10.0中,两不共圆心并列圆之间共切线内的圆弧为什么不好修剪?怎样才好修剪
1个回答
2016-05-05
展开全部
;程序写了一个,选择圆,然后选择圆外一点,得到的图形如下(defunC:tes(/#k1#os1&r1&tc1ang1ent1ent2ob1ob2pt1pt2pt3x) (setvar"cmdecho"0) (setvar"blipmode"0) (vl-load-com);;加载vlax扩展函数 (setq#os1(getvar"osmode")) (if(and(setqent1(entsel"\n请选择圆"));1 (setqent1(carent1)) (setq#k1(entgetent1)) (=(cdr(assoc0#k1))"CIRCLE") (setqob1(vlax-ename->vla-objectent1)) (setqpt1(getpoint"\n请选择圆外一点")) ) (progn;;1 (setvar"osmode"0) (setqpt2(cdr(assoc10#k1));提取圆心坐标 &tc1(cdr(assoc8#k1));取得圆图层 ) (setqpt3(mapcar'(lambda(x)(*x0.5))(mapcar'+pt1pt2)));两点中心点 (setq&r1(distancept3pt1));长度 (entmake(list'(0."CIRCLE")(cons10pt3)(cons40&r1)));绘制圆 (setqent2(entlast)ob2(vlax-ename->vla-objectent2)) (if(and(setqpt3(vlax-invokeob1'IntersectWithob20));2 (=(lengthpt3)6) );计算交点,如果在圆外一点就有交点 (progn;;2 (setq&r1(cdr(assoc40#k1)));取得圆半径 (setqang1(anglept2pt1)pt2(polarpt2ang1&r1));计算修剪点 (command"TRIM"ent2""(listent1pt2)"");修剪圆 (repeat2 (setqpt2(list(carpt3)(cadrpt3))pt3(cdddrpt3)) (entmake(list'(0."LINE")(cons8&tc1)(cons10pt1)(cons11pt2)));绘制切线 );repeat );progn;2 );if;2 (entdelent2);删除绘制的圆 (setvar"osmode"#os1) );progn;1 );if;1 (prin1));复制到记事本,以【.lsp】为后缀命名,autolisp加载,命令【TES】
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询