明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8091|回复: 23

高程点压盖自动避让

[复制链接]
发表于 2013-12-31 23:47 | 显示全部楼层 |阅读模式
本帖最后由 蓝图测绘 于 2013-12-31 23:48 编辑


不知不觉业余学习lisp有4个月了,在新年到来之际,上一个小程序,程序比较简单,望高手们多提意见,以便更加完善。

;高程点压盖自动避让
(defun c:ygcd()
  (setq
    osmode_old (getvar "osmode")
    cmdecho_old (getvar "cmdecho")
    clayer_old (getvar "clayer")
  )
  (setvar "cmdecho" 0)
  (princ "\n请选择高程点")
  (setq ss (ssget (List (cons 0 "INSERT") (cons 8 "GCD") (CONS 2 "GC200"))))
  (setq i 0 m 0)
  (if (= ss nil)
    (alert"没有选择到符合CASS条件的高程点\n图层为GCD、图块名为GC200")
  )
  (repeat (sslength ss)
    (setq gcdname (ssname ss i))
    (setq gcdsx (entget gcdname '("south")))
    (setq e (cdr (assoc -1 gcdsx)))
    (setq ent (entget e))
    (setq en (entget (setq ent (entnext e))))
    (setq zb (cdr (assoc 10 en)) x (car zb) y (cadr zb))
    (setq enLayer (cdr (assoc 8 en)))
    (setq bzg (/ (cdr (assoc 40 en)) 2))
    (setq pt zb)
    (jswk)
    (if (/= ss1 nil)
      (progn
        (scptb)
(setq k 0)
(while (and (/= ss1 nil) (< k 15))
   (setq pt (nth k ptb))
   (jswk)
   (if (= ss1 nil)
     (progn
       (setq pn (list x0 (+ y0 bzg)))
       (entmod (subst (cons 11 pn) (assoc 11 en) en))
       (setq m (1+ m))
     )
   )
   (setq k (1+ k))
)
      )
    )
    (setq i (1+ i))
  )
  (command "regen" "")
  (setvar "osmode" osmode_old)
  (setvar "cmdecho" cmdecho_old)
  (setvar "clayer" clayer_old)
  (princ "\n本次操作共移动了 ") (princ m) (princ " 个高程点")
  (prin1)
)
(princ "\n====蓝图测绘,精心制作; 键入 ygcd 运行本插件====")
;;;计算高程注记外框
(defun jswk()
  (setq x0 (car pt) y0 (cadr pt))
  (setq pt0 (list x0 y0))
  (setq box (textbox en))
  (setq wx (- (car (cadr box)) (car (car box))))
  (setq wy (- (cadr (cadr box)) (cadr (car box))))
  (setq xt (+ x0 wx))
  (setq yt (+ y0 wy))
  (setq ptt (list xt yt))
  (setq ss1 (ssget "_c" pt0 ptt (list '(-4 . "<NOT") (cons 8 enLayer) '(-4 . "NOT>"))))
)
;;;计算插入点
(defun scptb()
  (setq pt1 (list x (+ y bzg)))
  (setq pt2 (list x (- y bzg)))
  (setq pt3 (list x (+ y (* 2 bzg))))
  (setq pt4 (list x (- y (* 2 bzg))))
  (setq pt5 (list (- x bzg) (- y (* 2 bzg))))
  (setq pt6 (list (- x (* 2 bzg)) (- y (* 2 bzg))))
  (setq pt7 (list (- x (* 3 bzg)) (- y (* 2 bzg))))
  (setq pt8 (list (- x (* 4 bzg)) (- y (* 2 bzg))))
  (setq pt9 (list (- x (* 5 bzg)) (- y (* 2 bzg))))
  (setq pt10 (list (- x (* 6 bzg)) (- y (* 2 bzg))))
  (setq pt11 (list (- x  bzg) (+ y (* 2 bzg))))
  (setq pt12 (list (- x  (* 2 bzg)) (+ y (* 2 bzg))))
  (setq pt13 (list (- x  (* 3 bzg)) (+ y (* 2 bzg))))
  (setq pt14 (list (- x  (* 4 bzg)) (+ y (* 2 bzg))))
  (setq pt15 (list (- x  (* 5 bzg)) (+ y (* 2 bzg))))
  (setq pt16 (list (- x  (* 6 bzg)) (+ y (* 2 bzg))))
  (setq ptb (list pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 pt15 pt16))
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2019-5-6 10:17 | 显示全部楼层
这个要怎么用?楼主能不能弄成附件。谢谢
发表于 2022-12-4 22:55 | 显示全部楼层
支持支持,好东西
发表于 2022-9-30 15:24 | 显示全部楼层
支持支持,好东西
发表于 2014-1-1 10:16 | 显示全部楼层
抢个沙发先。
 楼主| 发表于 2014-1-1 10:57 | 显示全部楼层
符合测量注记的优先级别顺序要求,一般不注记在4号位置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-1-1 11:32 | 显示全部楼层
谢谢分享
元旦快乐!
发表于 2014-1-3 23:50 来自手机 | 显示全部楼层
新年快乐!学习一下!
发表于 2014-1-4 09:39 | 显示全部楼层
蓝图测绘老师是测量界精英
发表于 2014-1-13 17:02 | 显示全部楼层
支持了    希望出好的作品
发表于 2014-2-27 04:27 | 显示全部楼层
下来看一下,,支持一个,
发表于 2014-3-6 20:36 | 显示全部楼层
看哈效果如何
发表于 2014-3-9 20:24 | 显示全部楼层
谢谢楼主分享。
收藏下来,看看、学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 10:38 , Processed in 0.597785 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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