明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 461045462

等高线之间标注高程值

  [复制链接]
发表于 2011-11-20 00:13:11 | 显示全部楼层
测试一下,真的还不错啊 谢谢啊
发表于 2011-11-30 19:11:57 | 显示全部楼层
二楼版主的思路非常正确,其它程序本人认为结果是错的。
 楼主| 发表于 2011-12-8 21:07:59 | 显示全部楼层
李龙山 发表于 2011-11-30 19:11
二楼版主的思路非常正确,其它程序本人认为结果是错的。

二楼版主的思路非常正确,其它程序结果并非全是错的,只是不很理想而已......
谢谢
发表于 2011-12-15 12:24:18 | 显示全部楼层
本帖最后由 李龙山 于 2011-12-15 12:41 编辑
461045462 发表于 2011-12-8 21:07
二楼版主的思路非常正确,其它程序结果并非全是错的,只是不很理想而已......
谢谢

  (SETVAR "OSMODE" 512)
   (setq        p1 (getpoint "\n捕捉第一根等高线上一点: ")
         p2 (getpoint "\n捕捉另一等高线上一点: ")
p1和p2不可能捕捉到离内插高程点最近的等高线上的点。只有采取2楼的函数才能做到。
例如: (command "osnap" "off")
    (setq x1 (car (entsel "\n选择高程点旁边的一根等高线:"))
   P1 (vlax-curve-getClosestPointTo x1 Pz)
pz为内插高程点,p1为等高线上离pz最近点。供楼主参考。
发表于 2012-2-16 16:37:40 | 显示全部楼层
很早就想写个程序自动加密高程点,但是一直效果和速度太慢,今日突然看见此文感觉不分享给大家有点过意不去。
             (支持全测,反对加密)
        如果你已经生成了等高线,但是觉得高程点不够多,想加密一下,有没有什么好的方法呢?答案是肯定的。
       首先CASS里面就有这一个命令,在【工程应用】→【等高线生成数据文件】,就可以根据等高线,在等高线上生成若干个高程点。这样就会生成一个点文件,如果你想使用的话直接展点就可以了,是不是很简单,哈哈!
       但是如果你象我一样还有别的想法,比如我不只想要等高线上的点,我还需要加密等高线中间的点,那怎么办呢?还是有办法的。而且主要也是用CASS里的这个命令,只不过我们需要变通一下。
      我先讲一下思路:第一先由等高线提取高程点,刚才CASS那个命令已经为我们做到了。然后我们把生成的高程点再展到新的图形里面,然后再生成DTM,重新生成等高线。在这里生成等高线的时候就有个技巧了,你可以加密你的等高线了,比如你原来的等高线是1米的,现在你想加密它,那么这次你就可以生成等高距为0.5米的了,这样的话,你就能得到0.5米的高程点了,然后你再重复这个命令【工程应用】→【等高线生成数据文件】,就能得到你想要的高程点了不是,明白了吗?哈哈,是不是很简单。
       声明一下:你的机器配置一定要好啊,不然是很费时的,甚至会死机!我就做了0.12米的等高线,差点死机!
下面详细说一下步骤:
1、打开你想要加密高程点的图形(废话),然后工程应用】→【等高线生成数据文件】,得到高程点文件。
2、新建图形文件,将刚才的高程点文件展绘到这里。注意高程展点的时候就不要设置高程点的距离了,越密越好(就是为0吗)。
3、高程点建立DTM,然后【等高线】→【绘制等高线】,输入等高距为你想要的高程数据,比如我输入0.12米,那么最后生成的等高线就会有*.12,*.24,*.36,……*.32 ……等等的等高线了。理论上你可以得到你想要的任何数值,只要你把等高距设置的足够小。
4、然后你再运行【工程应用】→【等高线生成数据文件】命令,就可以得到你想要的高程点了。
5、打完收工。
      如果你的图形很大,要加密的点很多的话,要保证你的电脑配置,不然会死机的!
发表于 2012-2-17 12:01:38 | 显示全部楼层
x想学习,不知道怎么样才能入门
 楼主| 发表于 2012-3-7 14:08:14 | 显示全部楼层
zhanglangjing 发表于 2012-2-16 16:37
很早就想写个程序自动加密高程点,但是一直效果和速度太慢,今日突然看见此文感觉不分享给大家有点过意不去 ...

谢谢您的关注
您说的方法虽然可行,觉得较复杂,转换较慢,要重复使用这个命令【工程应用】→【等高线生成数据文件】。。。。
谢谢
发表于 2012-9-9 12:49:28 | 显示全部楼层
本帖最后由 004 于 2012-9-9 12:53 编辑

自己临时写的,可以用,但不精。。

  1. ;;;201107311130wkq004
  2. (defun c:tt ()
  3.   (setvar "osmode" 512)
  4.   (command "layer" "s" "gcd" "")
  5.   (setq p1 (getpoint "\n请输入点位置:"))
  6.   (setq p2 (getpoint "\n请输入点位置:"))
  7.   (setq a1 (caddr p1))
  8.   (setq a2 (caddr p2))
  9. ;;;  (setq a3 (/ (- a1 a2) 2))
  10. ;;;  (setq a4 (- (caddr p1) a3))
  11.   (setq s1 (distance p1 p2))
  12.   (setvar "osmode" 0)
  13.   (setvar "thickness" 1610000)
  14.   (setq xh 1)
  15.   (while (= 1 xh)
  16.     (setq TMP  (grread T 15 1)
  17.    MODE (car TMP)
  18.    val  (cadr TMP)
  19.     )
  20.     (redraw)
  21.     (cond
  22.       ((= 5 MODE)
  23.        (progn
  24.   (grdraw p1 val -1)
  25.   (grdraw p2 val -1)
  26.   (grdraw p1 p2 -1)
  27.        )
  28.       )
  29.       ((= 3 MODE)
  30.        (progn
  31.   (setq val (list (car val) (cadr val)))
  32.   (setq ang1 (abs (- (atof (angtos (angle p1 val) 0 4))
  33.        (atof (angtos (angle p1 p2) 0 4))
  34.     )
  35.       )
  36.   )
  37.   (if (> ang1 180)
  38.     (setq ang1 (- 360 ang1))
  39.   )
  40.   (setq ang2 (abs (- (atof (angtos (angle p2 val) 0 4))
  41.        (atof (angtos (angle p2 p1) 0 4))
  42.     )
  43.       )
  44.   )
  45.   (if (> ang2 180)
  46.     (setq ang2 (- 360 ang2))
  47.   )
  48.   (if (< (+ ang1 ang2) 90)
  49.     (progn
  50.       (redraw)
  51.       (setq
  52.         dist1 (* (cos (* pi (/ ang1 180.0))) (distance p1 val))
  53.       )
  54.       (if (> a1 a2)
  55.         (setq bili+- -1)
  56.         (setq bili+- 1)
  57.       )
  58.       (setq gaocheng
  59.       (+ a1
  60.          (* bili+- (/ dist1 (distance p1 p2)) (abs (- a1 a2)))
  61.       )
  62.       )
  63.       (setq ptz (append val (list gaoCheng)))
  64. ;;;      (setq p4 (subst gaocheng a1 val))
  65.       (setq text (rtos gaocheng 2 1))
  66. ;;;      (setq p5 (list (+ (car p4) 1) (nth 1 p4) gaocheng))
  67. ;;;      (command "point" p4)
  68. ;;;      (command "text" p5 "2.0" "" text)
  69.       (entmake (list (cons 0 "POINT")
  70.        (cons 10 ptz)
  71.         )
  72.       )
  73.       (entmake
  74.         (list (cons 0 "TEXT")
  75.        (cons 1 text)
  76.        (cons 10 ptz)
  77.        (cons 40 2.0)
  78. ;;;       (cons 73 2)
  79.         )
  80.       )
  81.       (setq xh 0)
  82.     )
  83.   )
  84.        )
  85.       )
  86.       ((= 25 MODE)
  87.        ;;右击
  88.        (progn
  89.   (redraw)
  90.   (setq xh 0)
  91.        )
  92.       )
  93.     )
  94.   )
  95.   (setvar "thickness" 0)
  96.   (command "layer" "s" "0" "")
  97.   (princ)
  98. )

 楼主| 发表于 2012-9-10 15:49:56 | 显示全部楼层
004 发表于 2012-9-9 12:49
自己临时写的,可以用,但不精。。

谢谢您的关注!
下载收藏了,等会试试,学习学习。
谢谢!
 楼主| 发表于 2012-9-10 20:24:02 | 显示全部楼层
等高线高程值加密可以参考:
南方CASS 内插高程点程序
http://bbs.mjtd.com/forum.php?mo ... &fromuid=376902
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-29 02:59 , Processed in 0.184000 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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