cad指北针lisp_cad中可画任意位置,任意方向的指北针的LISP程序

这是一个使用AutoLISP编写的程序,能够帮助用户在CAD中绘制任意位置和方向的指北针。用户首先指定圆心和半径,然后程序会创建一个指北针图形,包括两个半圆形弧和指向'北'的文字标记。最后,用户可以旋转指北针以适应所需角度。
摘要由CSDN通过智能技术生成

2014-05-09 回答

写了一个,图如下: autolisp代码如下: (defun c:tes ( / &ang1 &ang2 &dis1 &ent1 &kw1 &p1 &p2 &p3 &p4 &p5 &pt1 &pt2 &r1 &r2 x)  (setvar "cmdecho" 0)  (setvar "blipmode" 0)  (if (and (setq &p1 (getpoint "\n请指定圆心"))           (setq &r1 (getdist &p1 "\n请输入圆半径"))      )   (progn    (setq &r2 (* &r1 2))    (entmake (list '(0 . "circle") (cons 10 &p1) (cons 40 &r1)))    (setq &ent1 (entlast) &kw1 (ssadd) &kw1 (ssadd &ent1 &kw1))    (setq &p5 (cadr (grread t)))    (if (= (distance &p1 &p5) 0) (setq &ang1 0) (setq &ang1 (angle &p1 &p5)) )    (setq &p2 (polar &p1 &ang1 &r2) &p3 (polar &p1 (+ &ang1 (* pi 0.8)) &r2) &p4 (polar &p1 (- &ang1 (* pi 0.8)) &r2))    (entmake (list '(0 . "lwpolyline") '(100 . "acdbentity") '(100 . "acdbpolyline") (cons 90 3) '(70 . 1) (cons 10 &p1) (cons 10 &p2) (cons 10 &p3)))    (setq &ang2 (angle &p2 &p4) &pt1 (polar &p2 &ang2 &r2) &dis1 (distance &p1 &pt1) &pt1 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ &p1 &pt1)))    (setq &pt2 (polar &p4 &ang2 (* &r2 -1)) &pt2 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ &p1 &pt2)))    (entmake (list '(0 . "lwpolyline") '(100 . "acdbentity") '(100 . "acdbpolyline") (cons 90 4) (cons 10 &p2) '(40 . 0.0) (cons 41 &dis1) (cons 10 &pt1)(cons 10 &pt2) (cons 40 &dis1) '(41 . 0.0) (cons 10 &p4)))    (setq &p4 (polar &p1 &ang1 (* &r2 -1)) &ang2 (+ &ang1 (* pi 0.5)))    (entmake (list '(0 . "text") (cons 1 "n") (cons 10 &p4) (cons 40 (* &r1 0.8)) '(41 . 0.6) (cons 50 &ang2) '(72 . 4) (cons 11 &p4)))    (while (setq &ent1 (entnext &ent1)) (setq &kw1 (ssadd &ent1 &kw1)) )    (command "rotate" &kw1 "" &p1 "r" &p1 &p2)   )  )  (princ) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值