免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 4107|回复: 4
收起左侧

[其他] FW-标注方位角 LSP小插件

[复制链接]

5

主题

2169

铜板

40

好友

助理工程师

Rank: 5Rank: 5

积分
358
QQ
发表于 2014-6-29 12:08 | 显示全部楼层 |阅读模式

(defun c:fw(/ blip cmd ade dec prec nits bzx inipoint endpoint p1
             p2 cs_from cs_to ini end p1_ucs p2_ucs xini xend
             yini yend xp1_ucs yp1_ucs xp2_ucs yp2_ucs tt jdh1
             jdd1 fwj os_mode bz_point mn node zdfwj)
    (setq blip (getvar "blipmode"))
    (setq cmd (getvar "cmdecho"))
    (setq ade (getvar "dimadec"))  
    (setq dec (getvar "dimdec"))   
    (setq prec (getvar "auprec"))  
    (setq nits (getvar "aunits"))  
   
    (setvar "blipmode" 0)
    (setvar "cmdecho" 1)
    (setvar "dimadec" 5)   
    (setvar "dimdec" 3)   
    (setvar "auprec" 5)   
    (setvar "aunits" 3)   
  
    (prompt "\n请选要标注方位角的直线,它不能是多义线")
    (setq bzx (entsel))
    (setq bzx (entget (car bzx)))
    (setq inipoint (cdr (assoc 10 bzx)))
    (setq endpoint (cdr (assoc 11 bzx)))

    (prompt "\n请按起点至终点的顺序选直线上的两个点,以便定方位")
    (prompt "\n请输入起点")
    (setq p1 (getpoint))
    (prompt "\n请输入终点")
    (setq p2 (getpoint))
   
    (setq cs_from 0)         
    (setq cs_to 1)       
    (setq ini (trans inipoint cs_from cs_to))
    (setq end (trans endpoint cs_from cs_to))
    (setq p1_ucs (trans p1 cs_from cs_to))
    (setq p2_ucs (trans p2 cs_from cs_to))
             
    (setq xini (car ini))  
    (setq yini (cadr ini))
    (setq xend (car end))
    (setq yend (cadr end))
    (setq xp1_ucs (car p1_ucs))  
    (setq yp1_ucs (cadr p1_ucs))
    (setq xp2_ucs (car p2_ucs))
    (setq yp2_ucs (cadr p2_ucs))
    (setq tt 0)
    (if (> (abs (- xini xend)) 0.000001)
        (progn   
             (if (>= (/ (- yini yend) (- xini xend)) -0.00001)
                  (progn   
                       (if (< xp1_ucs xp2_ucs)
                              (progn
                                 (setq TT 1)
                               )
                        )
                       (if (> xp1_ucs xp2_ucs)
                              (progn
                                 (setq TT 3)
                               )
                        )
                  )
              )
             (if (< (/ (- yini yend) (- xini xend)) -0.00001)
                  (progn
                      (if (< yp1_ucs yp2_ucs)
                              (progn
                                 (setq TT 2)
                              )
                      )
                      (if (> yp1_ucs yp2_ucs)
                              (progn
                                 (setq TT 4)
                              )
                      )
                  )
             )
         )
     )
  (if (< (abs (- xini xend)) 0.00001)
        (progn
            (if (< yp1_ucs yp2_ucs)
                (progn
                      (setq tt 5)
                 )
            )
            (if (> yp1_ucs yp2_ucs)
                (progn
                      (setq tt 6)
                 )
            )
        )
    )

   (if (< tt 5)
        (progn
            (setq JDh1 (atan (abs (- yini yend)) (abs (- xini xend))))
            (setq JDD1 (angtos JDh1 1 5))   ;小于二分之一PI的弧度转化为角度,且为字符串
                (if (= tt 1)
                   (progn
                      (setq JDh2 (- (* 0.5 PI) JDh1))
                      (setq JDD1 (angtos JDh2 1 5))
                      (setq fwj (strcat "NE" JDD1))
                   )
                )
                (if (= tt 2)
                   (progn
                      (setq JDh2 (+ JDh1 (* 1.5 PI)))
                      (setq JDD1 (angtos JDh2 1 5))
                      (setq fwj (strcat "NW" JDD1))
                   )
                )
                (if (= tt 3)
                   (progn
                      (setq JDh3 (- (* 1.5 PI) JDh1 ))
                      (setq JDD1 (angtos JDh3 1 5))
                      (setq fwj (strcat "SW" JDD1))
                   )
                )
                (if (= tt 4)
                   (progn
                      (setq JDh3 (+ JDh1 (* 0.5 PI)))
                      (setq JDD1 (angtos JDh3 1 5))
                      (setq fwj (strcat "SE" JDD1))
                   )
                )
            )
    )
    (setq tr1 (angtos 0 1 4))   
    (setq tr2 (angtos PI 1 4))  
    (if (= tt 5) (setq fwj (strcat "NE" tr1)))
    (if (= tt 6) (setq fwj (strcat "SW" tr2)))
    (setq mn (strlen fwj))
    (setq node 1)
    (setq zdfwj fwj)
    (repeat mn
      (if (= (substr fwj node 1) "d")
          (progn
              (if (= (substr fwj (- node 1)) "%")
                  (progn
                    (setq zdfwj fwj)
                  )
              )
              (if (/= (substr fwj (- node 1)) "%")
                  (progn
                    (setq zdfwj (strcat (substr fwj 1 (- node 1)) "%%d"
                                      (substr fwj (+ node 1) (- mn node))))
                  )
              )
            )
        )
        (setq node (+ node 1))
      )
    (setq fwj zdfwj)
    (prompt "\n请选标注文字的位置")
    (setq os_mode (getvar "osmode"))
    (setvar "osmode" 0)
    (setq bz_point (getpoint))
    (command "text" bz_point 3.0 0  fwj "")
    (setvar "osmode" os_mode)
    (setvar "blipmode" blip)
    (setvar "cmdecho" cmd)
    (setvar "dimadec" ade)  
    (setvar "dimdec" dec)   
    (setvar "auprec" prec)  
    (setvar "aunits" nits)   
    (prompt "\n......指令fw.....")
    (prompt "\n如果当前字体字高在STYLE中定义为不等于0")
    (prompt ",")
    (prompt "则程序将出错")
    (prompt "\n请选一种没有定义字高的字体做为标注字体")
    (prin1)
)
(princ "\n====  fw运行本插件")

评分

参与人数 1铜板 +3 收起 理由
zhuofeng41 + 3 地信网的成长离不开您的支持!谢谢分享!

查看全部评分

62

主题

6万

铜板

46

好友

版主

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
10001

精华勋章宣传勋章爱心勋章组织勋章优秀斑主地信元老灌水勋章荣誉会员勋章活跃勋章官方团队地信专家组VIP勋章贡献勋章名人堂勋章成就学员勋章10周年纪念勋章

发表于 2014-11-22 22:20 | 显示全部楼层
蛮有趣的小程序
经复制另存为lsp实测,对线段标注非常好,对多线段或其他属性不能直接标注
对于测量人,常用CASS,作用不大,对于其他专业也还是有点用处的
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

4

主题

3984

铜板

72

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
1790
发表于 2015-11-4 00:10 | 显示全部楼层
标注的是度分秒格式的
回复 支持 反对

使用道具 举报

0

主题

621

铜板

2

好友

技术员

Rank: 3Rank: 3

积分
66
发表于 2019-9-14 17:39 | 显示全部楼层
感谢感谢
回复

使用道具 举报

0

主题

298

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
59
发表于 2020-7-23 19:29 | 显示全部楼层
:zt:zt:zt
回复

使用道具 举报

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

本版积分规则

在线客服
快速回复 返回顶部 返回列表