明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5965|回复: 8

如何旋转高程点时使高程点注记保持水平

  [复制链接]
发表于 2013-4-10 00:17:11 | 显示全部楼层 |阅读模式
本帖最后由 yuanziyou 于 2013-4-19 23:48 编辑

现有一数据文件dat,展点后,需要根据其中的2个坐标点做旋转操作,如何能保证旋转的时候高程点注记一直保持水平?现在的处理方法是,先旋转,然后分别更新点号层文字的旋转角度为0和高程点注记层的旋转角度为0.虽然功能已经实现,但有个问题就是高程点注记会压盖高程点,请问如何避免.
自己经过几天的摸索,总算找到了方法(主要就是旋转角和对齐点的问题),代码如下
  1. (defun c:xz()
  2.         (xx 100);旋转
  3.         (dz 100);对齐属性
  4. )
  5. (defun xx(blc);修改属性块的旋转角(blc:比例尺)
  6. (setq s1 (ssget "_X" '((8 . "GCD"))))
  7. (setq i 0)
  8. (repeat (sslength s1)
  9.      (setq e (ssname s1 i)
  10.              i (1+ i)
  11.              e1 (entget e)
  12.                 e2 (entget (entnext e));属性块的属性数据
  13.         )
  14.         (entmod (subst (cons 50 0) (assoc 50 e1) e1))
  15.         (entmod (subst (cons 50 0) (assoc 50 e2) e2))
  16.             (entupd e)
  17.         (entupd (entnext e))
  18. )
  19. (princ)
  20. )
  21. (defun dz(blc);修改属性块对起点(blc:比例尺)
  22. (setq s2 (ssget "_X" '((8 . "GCD"))))
  23. (setq j 0)
  24. (repeat (sslength s2)
  25.      (setq e (ssname s2 j)
  26.              j (1+ j)
  27.              e1 (entget e)
  28.                 p (cdr (assoc 10 e1));块的插入点
  29.                 e2 (entget (entnext e))
  30.                 p2 (list (+ (car p) (* 0.0012 blc)) (cadr p) (cadr p));属性文字的第二对起点
  31.                 p1 (list (car p2) (- (cadr p2) (* 0.001 blc)) (caddr p2));属性文字的第一对起点
  32.         )
  33.         (entmod (subst (cons 10 p1) (assoc 10 e2) e2))
  34.         (entmod (subst (cons 11 p2) (assoc 11 e2) e2))
  35.         (entupd (entnext e))
  36. )
  37. (princ)
  38. )






发表于 2013-4-10 10:26:49 | 显示全部楼层
是用CASS展的高程点吧?可以将这些高程点坐标保存后删除,再重新展点一次即可。
发表于 2013-4-10 10:32:08 | 显示全部楼层
楼上的方法是一种,还可以用测站改正。
发表于 2013-4-10 10:52:10 | 显示全部楼层
我的做法是:旋转后,检查高程值是否保持原样,然后用CASS重新生成数据进行展点,再核对高程值。
 楼主| 发表于 2013-4-10 11:54:11 | 显示全部楼层
poly168 发表于 2013-4-10 10:26
是用CASS展的高程点吧?可以将这些高程点坐标保存后删除,再重新展点一次即可。

手动的方法我也想到的:先高程点生成数据文件,然后再重新展点.
但是我想用lisp的方法实现,因为从原始数据到最后的成果的几乎都用代码实现了,就是压盖的问题还没能解决
发表于 2013-6-7 10:33:16 | 显示全部楼层
因为我是VBA编写的,LISP我很整不来。我的步骤是:一、计算转换参数;二、选择集,我是点号、高程注记作为扩展属性附加到高程点上的块。可以用屏选控制也可以根据起始和终止点号控制要转换的坐标点数量,测量过程中可能会出现某天的数据定错向的情况,用点号控制比较方便。三、将选择集中的每一个点坐标和点号提取,然后删除这个点,将坐标转换后重展每一个点。展出来的点可以根据需要进行旋转或水平放置。
发表于 2013-6-7 10:38:24 | 显示全部楼层
你要的是不是这样的功能啊图片

本帖子中包含更多资源

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

x
发表于 2013-6-7 12:47:11 | 显示全部楼层
poly168 发表于 2013-6-7 10:38
你要的是不是这样的功能啊图片

欢迎分享
软件界面挺好看的
发表于 2015-2-2 19:42:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 14:22 , Processed in 0.191247 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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