明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1292|回复: 0

[推荐]THIS FUNCTION ADDS A NORTHING AND EASTING LEADER LABEL

[复制链接]
发表于 2007-2-11 14:17 | 显示全部楼层 |阅读模式

;THIS FUNCTION ADDS A NORTHING AND EASTING LEADER LABEL TO YOUR
;DRAWING AT AND FOR A SPECIFIED POINT
(defun c:NEA ()
(sETVAR "CMDECHO" 0)
;********ERROR HANDLER**********************
(defun *Error* (msg)
  (if (/= msg "Function cancelled")
    (princ (strcat "\nError: " msg))
  )
(terpri)
                        
  (setq *error* olderr)       
  (princ)
)
;***********************************************
     (graphscr)
     (SETQ OSM (GETVAR "OSMODE")) ;get current osnap mode and save to OSM variable
     (SETVAR "OSMODE" 1) ;set osnap to endpoint
     (GRTEXT -1 "Nea.lsp - KWM '96")
    
(setq a " N "
      b "   E "
      pnt1 (getpoint "\nNorthing & Easting of which point?")
)
 (setq east (rtos (car pnt1) 2 2)
       north (rtos (cadr pnt1) 2 2)
       coord (strcat a north b east)
 )

     (setq pnt2 pnt1)(terpri)
    
     (terpri)
     (setq  y (entget (car(entsel "Select first line for angle point data: "))))
     (setq p1 (cdr (assoc 10 y)))
     (setq p2 (cdr (assoc 11 y)))
     (setq angl1 (angle p1 p2))
     (terpri)

     (setq  z (entget (car(entsel "Select second line for angle point data: "))))
     (setq p3 (cdr (assoc 10 z)))
     (setq p4 (cdr (assoc 11 z)))
     (setq angl2 (angle p3 p4))
     (terpri)

     (SETVAR "OSMODE" 0)          ;set osnap mode to none
     (setq angl3 (- angl1 angl2))
     (setq angl3 (abs angl3))
     (setq angg1 (angtos angl3 1 4))
     (setq angg angl3)

   
     (if (= pi angl3) (setq angla (* 0.5 pi))
     (if (= (* 0.5 pi) angl3) (setq angla (* 0.5 pi))
     (if (= (* 1.5 pi) angl3) (setq angla (* 0.5 pi))
     (if (= (* 2 pi) angl3) (setq angla (* 0.5 pi))
        (if (>= angl3 (* 1.75 pi)) (setq angla (- (* 2 pi) angl3))   
         (if (> angl3 (* 1.5 pi)) (setq angla (- angl3 (* 1.5 PI)))
          (if (>= angl3 (* 1.25 pi)) (setq angla (- (* 1.5 pi) angl3))
           (if (> angl3 pi) (setq angla (- angl3 pi))
            (if (>= angl3 (* pi 0.75))(setq angla (- pi angl3))
             (if (> angl3 (* 0.5 pi))(setq angla (- angl3 (* 0.5 pi)))
           (setq angla angl3)
                        ))))))))));end ifs
     (if (and (>= angla (* 0.22222 pi)) (<= angla (* 0.2777777778 pi)))
        (Alert "        Angle is close to 45 deg. boundary
        may be off by as much as 5 deg.
        Please Verify accuracy"))
     (if (and (>= angla 0.0) (<= angla (* 0.02777777778 pi)))
        (Alert "        Angle is close to 90 deg. boundary
        may be off by as much as 90 deg.
        Please Verify accuracy"))

     (setq angl3 (* angla (/ 180 pi)))
     (setq angl3 (abs angl3))

   
     (setq deg (fix angl3))
     (setq degfloat (float deg))
     (setq decimal (- angl3 degfloat))
     (setq minute (* decimal 60.0))
     (setq min (fix minute))
     (setq minfloat (float min))
     (setq secdec (- minute minfloat))
     (setq second (* secdec 60))
     (setq sec (fix second))
     (setq secfloat (float sec))
     (setq sectest (- second secfloat))
     (if (>= sectest 0.50)(setq sec (1+ sec)))
     (if (= sec 60)
          (progn
          (setq sec 0)
          (setq min (1+ min))
          ))
    (if (= min 60)
          (progn
          (setq min 0)
          (setq deg (1+ deg))
          ))
     (if (< deg 10)(setq deg (strcat "0" (rtos deg 2 0)))
      (setq deg (rtos deg 2 0)))
     (if (< min 10)(setq min (strcat "0" (rtos min 2 0)))
      (setq min (rtos min 2 0)))
     (if (< sec 10)(setq sec (strcat "0" (rtos sec 2 0)))
      (setq sec (rtos sec 2 0)))
       (setq tx (strcat "> POINT="
       deg "%%d" min (chr 39) sec
       (chr 34)))
       (terpri)

     (setq pnt3 (getpoint "End of Leader: "))(terpri)
     (setq ang1 (angle pnt1 pnt2))
     (setq text (getvar "TEXTSIZE"))
     (setq linesize (* text 12.0))
     (if (or (<= ang1 (/ pi 2.0))(>= ang1 (* pi 1.5)))
          (progn
          (setq ang2 0.0)
          (setq pnt4 (polar pnt3 ang2 linesize))
          (setq pnt7 (polar pnt3 0.0 text))
          ))
     (if (and (<= ang1 (* pi 1.5))(>= ang1 (/ pi 2.0)))
          (progn
          (setq ang2 pi)
          (setq pnt4 (polar pnt3 ang2 linesize))
          (setq pnt7 (polar pnt4 0.0 text))
          ))
          (setq pnt5 (polar pnt7 (* pi 1.5)(* text 1.33)))
          (setq pnt6 (polar pnt7 (* pi 1.5)(* text 3)))
          (setq pnt8 (polar pnt7 (/ pi 2)(+(/ text 1) text)))
          (setq pnt9 (polar pnt7 (/ pi 2)(/ text 3)))

            (setq pnt11 (polar pnt7 (* pi 0.42929784)(* 2.0395833 TEXT)))
              (setq pnt12 (polar pnt7 (* pi 0.4645)(* 2.445833 text)))
                (setq pnt13 (polar pnt7 (* 0.44952932 pi)(* 2.9 text)))
          (setq station (getstring "\nStation (include '+'): "))

       (terpri)
     (command "LINE" pnt2 pnt3 pnt4 "")
     (command "TEXT" pnt5 0.0 (strcat "N" (chr 32) north
     ))
     (command "TEXT" pnt6 0.0 (strcat "E" (chr 32) east
     ))
    (command "TEXT" pnt8 0.0 tx)
    (command "TEXT" pnt9 0.0 (strcat "STA " station))
    (command "arc" pnt11 pnt12 pnt13)

     (SETVAR "OSMODE" OSM)  ;set osnap back to original setting ie. OSM variable setting
(terpri)
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 05:04 , Processed in 0.224707 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表