明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2794|回复: 6

计曲线标注程序

[复制链接]
发表于 2012-1-3 11:26:42 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 493514506 于 2012-1-3 11:27 编辑

求等高线计曲线标注程序
要求:1,提示输入等高距: 米(如0.5 1 2 2.5等)
          2,画直线,创建所有与直线相交的DGX的选择集
          3,标注,获取选择集中每根等高线的标高,判断是否能够被(等高距与5的乘积)整除,若能整除,在等高线与直线的交点处标出等高线的标高(与直线垂直,字头朝向高处)
        4,删除直线。
附样图
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

试试这个,字头朝高处,自己加一个判断
发表于 2012-1-3 11:26:43 | 显示全部楼层
试试这个,字头朝高处,自己加一个判断
  1. (defun c:tt()
  2.     (setq d (getreal "\n请输入等高距:") n 0)
  3.     (setq pt1 (getpoint "\n请输入第一点:"))
  4.     (setq pt2 (getpoint pt1 "\n请输入第二点:"))
  5.     (command "_.line" pt1 pt2 "")
  6.     (setq line (entlast))
  7.     (setq ss (ssget "f" (list pt1 pt2) '((8 . "dgx"))))
  8.     (if ss
  9.       (repeat (sslength ss)
  10.         (setq en (ssname ss n))
  11.         (setq h (vla-get-elevation (vlax-ename->vla-object en)))
  12.         (if (= (rem h (* d 5.0)) 0)
  13.           (progn
  14.         (setq dxf_line (entget line))
  15.         (setq st (cdr (assoc 10 dxf_line)) et (cdr (assoc 11 dxf_line)))
  16.         (setq st (list (car st) (cadr st) h) et (list (car et) (cadr et) h))
  17.         (setq dxf_line (subst (cons 10 st) (assoc 10 dxf_line) dxf_line))
  18.         (setq dxf_line (subst (cons 11 et) (assoc 11 dxf_line) dxf_line))
  19.         (entmod dxf_line)
  20.         (entupd line)
  21.         (setq pt (vlax-safearray->list (vlax-variant-value (vla-IntersectWith (vlax-ename->vla-object line) (vlax-ename->vla-object en) acExtendNone))))
  22.         (setq pt (list (car pt) (cadr pt)))
  23.         (setq ang (/ (* 180 (vla-get-angle (vlax-ename->vla-object line))) pi))
  24.         (command "_.text" pt 1 (+ ang 90) (rtos h 2 2))
  25.           )
  26.         )
  27.         (setq n (1+ n))
  28.       )
  29.     )
  30.     (command "_.erase" line "")
  31.     (princ)
  32.     )
回复

使用道具 举报

发表于 2012-1-3 11:32:42 | 显示全部楼层
CASS中有此功能,不过最多一次只能标注4根计曲线。
回复

使用道具 举报

发表于 2012-1-5 11:52:18 | 显示全部楼层
每根等高线的标高从哪获取?
回复

使用道具 举报

 楼主| 发表于 2012-1-6 12:32:51 | 显示全部楼层
多谢byghbcx ,可是程序只标注一根,其他满足条件的不标注,不知什么原因
回复

使用道具 举报

发表于 2012-1-6 16:37:20 | 显示全部楼层
本帖最后由 byghbcx 于 2012-1-6 16:38 编辑
493514506 发表于 2012-1-6 12:32
多谢byghbcx ,可是程序只标注一根,其他满足条件的不标注,不知什么原因


判断是否能够被(等高距与5的乘积)整除,我机上怎么是可以标注的?
回复

使用道具 举报

 楼主| 发表于 2012-1-7 12:12:38 | 显示全部楼层
少了两句
(vl-load-com)
(setq n 0)
基本可以实现,多谢帮助。程序根据需要完善中,完善后发上来。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-27 16:39 , Processed in 0.227276 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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