cad指北针lisp_用CAD里的LISP画图,题目如图片,编写一程序,可在任意位置任意方向绘制指定大小的指北针。...
寫了一個,圖如下:
Autolisp代碼如下:(defunc:tes(/&ang1&ang2&dis1&ent1&kw1&p1&p2&p3&p4&p5&pt1&pt2&r1&r2x)
(setvar"cmdecho"0)
(setvar"blipmode"0)
(if(and(setq&p1(getpoint"
請指定圓心"))
(setq&r1(getdist&p1"
請輸入圓半徑"))
)
(PRogn
(setq&r2(*&r12))
(entmake(list'(0."CIRCLE")(cons10&p1)(cons40&r1)))
(setq&ent1(entlast)&kw1(ssadd)&kw1(ssadd&ent1&kw1))
(setq&p5(CADr(grreadt)))
(if(=(distance&p1&p5)0)(setq&ang10)(setq&ang1(angle&p1&p5)))
(setq&p2(polar&p1&ang1&r2)&p3(polar&p1(+&ang1(*pi0.8))&r2)&p4(polar&p1(-&ang1(*pi0.8))&r2))
(entmake(list'(0."LWPOLYLINE")'(100."AcDbEntity")'(100."AcDbPolyline")(cons903)'(70.1)(cons10&p1)(cons10&p2)(cons10&p3)))
(setq&ang2(angle&p2&p4)&pt1(polar&p2&ang2&r2)&dis1(distance&p1&pt1)&pt1(mapcar'(lambda(x)(*x0.5))(mapcar'+&p1&pt1)))
(setq&pt2(polar&p4&ang2(*&r2-1))&pt2(mapcar'(lambda(x)(*x0.5))(mapcar'+&p1&pt2)))
(entmake(list'(0."LWPOLYLINE")'(100."AcDbEntity")'(100."AcDbPolyline")(cons904)(cons10&p2)'(40.0.0)(cons41&dis1)(cons10&pt1)(cons10&pt2)(cons40&dis1)'(41.0.0)(cons10&p4)))
(setq&p4(polar&p1&ang1(*&r2-1))&ang2(+&ang1(*pi0.5)))
(entmake(list'(0."TEXT")(cons1"N")(cons10&p4)(cons40(*&r10.8))'(41.0.6)(cons50&ang2)'(72.4)(cons11&p4)))
(while(setq&ent1(entnext&ent1))(setq&kw1(ssadd&ent1&kw1)))
(command"ROTATE"&kw1""&p1"R"&p1&p2)
)
)
(PRinc)
)
總結
以上是生活随笔為你收集整理的cad指北针lisp_用CAD里的LISP画图,题目如图片,编写一程序,可在任意位置任意方向绘制指定大小的指北针。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 史上最详细的ConcurrentHash
- 下一篇: 保研之旅(中科院空天院、武汉大学、华南理