找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 671|回复: 3

(完成)[编程申请]:求画用地红线图,自动标注的程序

[复制链接]
发表于 2004-3-24 19:07:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我在规划管理部门工作,经常要画用地红线图,求程序:只需用鼠标点击几个图上的点,可自动标出点坐标,自动按顺序用红线连接,并标出每段红线的长度,并计算面积。
狂谢!!我的homexpvip@163.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-3-25 12:16:25 | 显示全部楼层

Re: [编程申请]:求画用地红线图,自动标注的程序

最初由 homexpvip 发布
[B]我在规划管理部门工作,经常要画用地红线图,求程序:只需用鼠标点击几个图上的点,可自动标出点坐标,自动按顺序用红线连接,并标出每段红线的长度,并计算面积。
狂谢!!我的homexpvip@163.com [/B]

下载附件释放到 \XDSoft\Lisp 目录下,加载 plan1.lsp

  1. ;|
  2. 功    能:循环拾取点后,绘制封闭曲线、标注分段线长、各点坐标、积
  3. 适用范围:规划

  4. 注    意:字体高度(textsize)、绘图单位(m & mm)请自行设定
  5. |;
  6. (if (not $xdtb_globle_scale)
  7.   (setq $xdtb_globle_scale 1.0)
  8. )
  9. ($xdrx_load "xdlsp.lsp")
  10. (load "hzbbz.fas")
  11. (defun c:XDTB_DRedLn (/ area e e1 len pcen pt pts ss box xmid ymid)
  12.   (xdrx_begin)
  13.   (xdrx_sysvar_push "osmode")
  14.   (xdrx_ucson)
  15.   (while (setq pt (getpoint "\n边界点: "))
  16.     ($xdlsp_grdraw pt)
  17.     (setq pts (cons pt pts))
  18.     (if        (> (length pts) 1)
  19.       (grdraw (car pts) (cadr pts) 1 1)
  20.     )
  21.   )
  22.   (redraw)
  23.   (setq        e1 (entlast)
  24.         ss (ssadd)
  25.   )
  26.   (if (>= (length pts) 2)
  27.     (progn
  28.       (setq len        (length pts)
  29.             pts        ($XDLSP_Points_Close pts)
  30.       )
  31.       ($XDLSP_Draw_Pline pts t)
  32.       (setq e  (entlast)
  33.             ss (ssadd e ss)
  34.       )
  35.       (mapcar '(lambda (x y)
  36.                  (vl-cmdf ".text"
  37.                           (list        (/ (+ (car x) (car y)) 2)
  38.                                 (/ (+ (cadr x) (cadr y)) 2)
  39.                                 '0.
  40.                           )
  41.                           ""
  42.                           ($xdlsp_rtd ($xdlsp_angle_format (angle x y)))
  43.                           (rtos (distance x y) 2 3)
  44.                  )
  45.                  (ssadd (entlast) ss)
  46.                )
  47.               (reverse (cdr (reverse pts)))
  48.               (cdr pts)
  49.       )
  50.       (if (not (equal e e1))
  51.         (progn
  52.           (setq area (apply 'xdrx_parea pts))
  53.           (if (not (zerop area))
  54.             (progn (vl-cmdf ".text"
  55.                             "j"
  56.                             "mc"
  57.                             (list (/ (apply '+ (mapcar 'car pts)) len)
  58.                                   (/ (apply '+ (mapcar 'cadr pts)) len)
  59.                                   '0.
  60.                             )
  61.                             ""
  62.                             0.
  63.                             (strcat "总面积: " (rtos area 2 3))
  64.                    )
  65.                    (ssadd (entlast) ss)
  66.             )
  67.           )
  68.         )
  69.       )
  70.       (setq box         (apply 'xdrx_pointsbox pts)
  71.             xmid (/ (+ (caar box) (caadr box)) 2)
  72.             ymid (/ (+ (cadar box) (cadr (last box))) 2)
  73.       )
  74.       (mapcar
  75.         '(lambda (p)
  76.            (cond
  77.              ((and (< (car p) xmid)
  78.                    (< (cadr p) ymid)
  79.               )
  80.               (ea:hzbbz        p
  81.                         (polar p (* -0.75 pi) (* 10. $xdtb_globle_scale))
  82.                         0.
  83.                         t
  84.                         "X"
  85.                         t
  86.               )
  87.              )
  88.              ((and (<= (car p) xmid)
  89.                    (>= (cadr p) ymid)
  90.               )
  91.               (ea:hzbbz        p
  92.                         (polar p (* 0.75 pi) (* 10. $xdtb_globle_scale))
  93.                         0.
  94.                         t
  95.                         "X"
  96.                         t
  97.               )
  98.              )
  99.              ((and (>= (car p) xmid)
  100.                    (< (cadr p) ymid)
  101.               )
  102.               (ea:hzbbz        p
  103.                         (polar p (* -0.25 pi) (* 10. $xdtb_globle_scale))
  104.                         0.
  105.                         nil
  106.                         "X"
  107.                         t
  108.               )
  109.              )
  110.              ((and (>= (car p) xmid)
  111.                    (>= (cadr p) ymid)
  112.               )
  113.               (ea:hzbbz        p
  114.                         (polar p _pi4 (* 10. $xdtb_globle_scale))
  115.                         0.
  116.                         nil
  117.                         "X"
  118.                         t
  119.               )
  120.              )
  121.              (t)
  122.            )
  123.            (ssadd (entlast) ss)
  124.          )
  125.         (cdr pts)
  126.       )
  127.       (if ss
  128.         (xdrx_group_make "*" ss)
  129.       )
  130.     )
  131.   )
  132.   (xdrx_ucsoff)
  133.   (xdrx_sysvar_pop)
  134.   (xdrx_end)
  135.   (princ)
  136. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-3-25 17:43:49 | 显示全部楼层
hzbbz.fas 使用说明


  1. 本程序生成一拾取点的当前UCS属性标注块

  2. 使用方法 (ea:hzbbz p1 p2 angle mark type xcontype)

  3. 参  数:  p1 -------- 标注点
  4.           p2 -------- 引线点
  5.           angle ----- 旋转角度
  6.           mark  ----- 坐标数字相对引线的位置,以WCS下 Y 轴为界 左侧 t 右侧 nil
  7.           type  ----- “X” “A” 可选必须大写
  8.           xcontype -- 控制上下标注值是否交换

  9. 返回值:属性块实体名

  10. 说  明: 程序固定文字大小为2.5倍比例,比例由变量 $xdtb_globle_scale 控制,可
  11.          由外部设定,否则默认为 1.0
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-25 20:39:27 | 显示全部楼层

thank

thanks,虽然有些简陋,但足够了,剩下的就只用我做些简单的编辑了,狂谢*-*7

狂喜,星期天加班,其他人用整一星期画的用地红线图,我用此方法三小时完成,一共画了90张图。颇用点鸟枪换炮的感觉。*-*4 *-*6
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-20 23:22 , Processed in 0.183781 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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