124350440 发表于 2010-10-3 16:39:00

求助:帮修改一下标注角度的程序

<p><font face="Verdana">下面这个程序在网上找的,怎么能修改成标注的角度显示成度分秒然后标注在图上啊</font></p>
<p><font face="Verdana">;;;=========================================================================<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>;;;&nbsp;&nbsp;&nbsp; Program name: cpjlxjj.lsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>;;;&nbsp;&nbsp;&nbsp; Description:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; 在AutoCAD屏幕上测量任意两条直线夹角&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>;;;=========================================================================<br/>(Defun *error* (msg)<br/>&nbsp;(princ "错误:")<br/>&nbsp;(princ msg)<br/>&nbsp;(terpri)<br/>)</font></p>
<p><font face="Verdana">(Defun C:jj&nbsp;(/&nbsp;&nbsp;&nbsp;&nbsp; cmde&nbsp;&nbsp;&nbsp; ent_1&nbsp;&nbsp; ent_2&nbsp;&nbsp; ent_1_name<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ent_2_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ang_1&nbsp;&nbsp; ang_2&nbsp;&nbsp; ang<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ang_yj&nbsp;&nbsp; ang_min&nbsp; ang_max<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;(Defun TQ_ENT_NAME (ent)<br/>&nbsp;&nbsp;(eval '(cdr (assoc '0 (entget (car ent)))))<br/>&nbsp;)<br/>&nbsp;(Defun TQ_ANG&nbsp;(ent)<br/>&nbsp;&nbsp;(setq&nbsp;ang&nbsp;(angle (cdr (assoc 10 (entget (car ent))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr (assoc 11 (entget (car ent))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;)<br/>&nbsp;)</font></p>
<p><font face="Verdana">&nbsp;(setq cmde (getvar "cmdecho"))<br/>&nbsp;(setvar "cmdecho" 0)<br/>&nbsp;(setq ent_1 (entsel "\n测量两线夹角,选第一条直线:"))<br/>&nbsp;(if&nbsp;ent_1<br/>&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;(princ "OK!")<br/>&nbsp;&nbsp;&nbsp;(setq ent_1_name (TQ_ENT_NAME ent_1))<br/>&nbsp;&nbsp;&nbsp;(if&nbsp;(= ent_1_name "LINE")<br/>&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq ang_1 (TQ_ANG ent_1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(redraw (car ent_1) 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;(if&nbsp;ang_1<br/>&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq ent_2 (entsel "\n选第二条直线:"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;ent_2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ "OK!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq ent_2_name (TQ_ENT_NAME ent_2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(= ent_2_name "LINE")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq ang_2 (TQ_ANG ent_2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(redraw (car ent_2) 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(and ang_1 ang_2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq ang (abs (- ang_1 ang_2)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(&gt; ang pi)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq ang (- ang pi))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq&nbsp;ang&nbsp;&nbsp;&nbsp;(* ang (/ 180 pi))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang_yj&nbsp;(- 180 ang)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang_min&nbsp;(min ang ang_yj)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang_max&nbsp;(max ang ang_yj)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq&nbsp;ang_min&nbsp;(rtos ang_min 2 4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang_max&nbsp;(rtos ang_max 2 4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(alert<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(strcat&nbsp;"\n 夹&nbsp;&nbsp; 角α = "&nbsp;&nbsp;ang_min<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"° \n\n 180°- α = "<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ang_max&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"°"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ "\n所求夹角=")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ ang_min)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ "\°&nbsp; 180°- 夹角=")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ ang_max)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ "°")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(redraw (car ent_1) 4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(redraw (car ent_2) 4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(princ "\n未选中第二条直线!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(redraw (car ent_1) 4)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;)<br/>&nbsp;&nbsp;(princ "\n未选中第一条直线!")<br/>&nbsp;)<br/>&nbsp;(setvar "cmdecho" cmde)<br/>&nbsp;(princ)<br/>)</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana"><br/></font>&nbsp;</p>

ZZXXQQ 发表于 2010-10-5 19:02:00



;;;=========================================================================
;;;                                                                        
;;;    Program name: cpjlxjj.lsp                                          
;;;                                                                        
;;;    Description:                                                         
;;;   在AutoCAD屏幕上测量任意两条直线夹角                                 
;;;                                                                        
;;;=========================================================================
(defun *error* (msg)
(princ "错误:")
(princ msg)
(terpri)
)
(defun C:jj (/ cmde ent_1 ent_2 ent_1_name ent_2_name ang_1 ang_2 ang ang_yj ang_min ang_max)
(defun TQ_ENT_NAME (ent) (cdr (assoc 0 (entget (car ent)))))
(defun TQ_ANG (ent)
(angle (cdr (assoc 10 (entget (car ent))))
         (cdr (assoc 11 (entget (car ent))))
)
)
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (and (setq ent_1 (entsel "\n测量两线夹角,选第一条直线:"))
          (= (TQ_ENT_NAME ent_1) "LINE")) (progn
(setq ang_1 (TQ_ANG ent_1))
(redraw (car ent_1) 3)
(if (and (setq ent_2 (entsel "\n选第二条直线:"))
         (= (TQ_ENT_NAME ent_2) "LINE")) (progn
   (setq ang_2 (TQ_ANG ent_2))
   (redraw (car ent_2) 3)
   (setq ang (abs (- ang_1 ang_2)))
   (if (> ang pi) (setq ang (- ang pi)))
   (setq ang    (/ (* ang 180) pi)
         ang_yj (- 180 ang)
         ang_min (min ang ang_yj)
         ang_max (max ang ang_yj))
   (setq ang_min (angtos ang_min 1 4)
         ang_max (angtos ang_max 1 4))
   (alert (strcat "\n 夹   角α = " ang_min "° \n\n 180°- α = " ang_max "°"))
   (princ (strcat "\n所求夹角=" ang_min "\°180°- 夹角=" ang_max "°"))
   (redraw (car ent_1) 4)
   (redraw (car ent_2) 4)
) (progn
   (princ "\n未选中第二条直线!")
   (redraw (car ent_1) 4)
))
)
(princ "\n未选中第一条直线!")
)
(setvar "cmdecho" cmde)
(princ)
)

124350440 发表于 2010-10-6 15:03:00

好像标出的角度不对啊,还有能否标注到图上呢?

ZZXXQQ 发表于 2010-10-6 20:55:00

这个是直接标注角度的。


(defun C:jj (/ cmde ent_1 ent_2 ang_1 ang_2 ang ang_yj ang_min ang_max)
(defun dxf (ent n) (cdr (assoc n (entget (car ent)))))
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (and (setq ent_1 (entsel "\n选第一条直线:"))
          (= (dxf ent_1 0) "LINE")) (progn
(redraw (car ent_1) 3)
(if (and (setq ent_2 (entsel "\n选第二条直线:"))
         (= (dxf ent_2 0) "LINE")) (progn
   (redraw (car ent_2) 3)
   (setvar "DIMTAD" 2)
   (setvar "DIMTOH" 1)
   (setvar "DIMAUNIT" 1)
   (setvar "DIMADEC" 4)
   (command "-DIMSTYLE" "S" (strcat (getvar "DIMSTYLE") "$2"))
   (command ".DIMANGULAR" ent1 ent2 PAUSE)
   (redraw (car ent_1) 4)
   (redraw (car ent_2) 4)
) (progn
   (princ "\n未选中第二条直线!")
   (redraw (car ent_1) 4)
))
)
(princ "\n未选中第一条直线!")
)
(setvar "cmdecho" cmde)
(princ)
)

yoyoho 发表于 2010-10-7 09:32:00

<p>Z版你好:</p>
<p>可否请你解释一下,下面这一句(红色部分)意思</p>
<p>(command "-DIMSTYLE" "S" (strcat (getvar "DIMSTYLE") <font color="#ff0000">"$2"</font>))</p>
<p>&nbsp;</p>
<p><font color="#ff0000"><font color="#000000">即</font> "$2" </font><font color="#000000">的作用,谢谢!</font></p>

ZZXXQQ 发表于 2010-10-7 20:01:00

<p>加$2就是当前尺寸的下属“角度”尺寸名</p>

yoyoho 发表于 2010-10-8 12:00:00

<p>感谢Z版了解了.</p>

669423907 发表于 2011-6-7 19:24:21

ZZXXQQ版主好热情。获益非浅!

djjeson 发表于 2019-9-4 16:10:58

新手不会编,参考一下代码,谢谢楼主
页: [1]
查看完整版本: 求助:帮修改一下标注角度的程序