明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3612|回复: 16

[源码] 标高标注程序

  [复制链接]
发表于 2016-9-26 14:18:38 | 显示全部楼层 |阅读模式
  1. ;;取两点Y坐标差通用函数
  2. (defun szx_h (a b)
  3.   (setq h (abs (- (cadr a) (cadr b))))
  4.   (atof (rtos h 2 3))
  5. )

  6. (defun c:tt (/ pt1 pt2 old_cmd cl ortho ww hh1 ang pt3 hh hh2 str bg)
  7.   ;;保存系统变量设置
  8.   (setq old_CMD (getvar "CMDECHO")) ;_取得变量值
  9.   (setq cl (getvar "clayer"))
  10.   (setvar "CMDECHO" 0)
  11.   (setq ortho (getvar "orthomode")) ;_取得变量值
  12.   (setvar "orthomode" 0) ;_关
  13.   (setq ww (getvar "dimzin"))
  14.   (setvar "dimzin" 1)
  15.   (if (not (tblsearch "layer" "标高"))
  16.     (command "-layer" "m" "标高" "c" "3" "" "")
  17.   )
  18.   (setvar "clayer" "标高")
  19.   (setq pt1 (getpoint "\n标高基准点:"))
  20.   (if (not (setq hh1 (getreal "\n请输入基准点标高±0.000:")))
  21.     (setq hh1 0.000)
  22.   )
  23.   (setq  hh1 (if  (/= hh1 0)
  24.         (rtos hh1 2 3)
  25.         "%%P0.000"
  26.       )
  27.   )
  28.   (while (setq pt2 (getpoint pt1 "\n定位点:"))
  29.     (setq ang (angle pt1 pt2))
  30.     (setq pt3 (polar pt2 0 100))
  31.     (setq hh  (szx_h pt1 pt2)
  32.     hh2 (/ hh 1000)
  33.     )
  34.     (if  (/= (type hh1) 'str)
  35.       (setq hh1 (vl-princ-to-string hh1))
  36.     )          ;判断是否是字符串并转换
  37.     (setq hh1 (atof hh1))    ;字符串转换成实型数
  38.     (if  (and (> ang 0) (< ang 3.141))
  39.       (setq str (+ hh1 hh2))
  40.       (setq str (- hh1 hh2))
  41.     )
  42.     (setq str (if (/= str 0)
  43.     (rtos str 2 3)
  44.     "%%P0.000"
  45.         )
  46.     )
  47.     (if  (and (> ang 1.570) (< ang 4.712))
  48.       (command "._insert" "bgz.dwg" "non" pt2 "" "" str)
  49.       (command "._insert" "bgy.dwg" "non" pt2 "" "" str)
  50.     )
  51.     (setq bg (entlast))
  52.     (initget "Yes No")
  53.     (if  (= "Yes"
  54.      (getkword "\n是否镜像?[是(Y)/否(N)] <N>:")
  55.   )
  56.       (command "mirror" bg "" "non" pt2 "non" pt3 "y")
  57.     )
  58.     (setvar "orthomode" 1) ;_开   
  59.     (command "_move" bg "" pt2 pause)
  60.   (setvar "orthomode" 0);_关
  61.   )
  62.   ;;刷新图形窗口
  63.   (redraw)
  64.   (setvar "CMDECHO" old_CMD)
  65.   (setvar "orthomode" ortho) ;_恢复变量
  66.   (setvar "dimzin" ww)
  67.   (setvar "clayer" cl)
  68.   (princ)
  69. )
网上找的标高标注程序,用起来都不顺手,自己写了一个,有需要的来去用
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-9-28 12:55:46 | 显示全部楼层
代码写块操作,节选我的一段(CASS高程点块),供楼主参考:
(setq hatchobj(vla-addhatch block achatchpatterntypepredefined  "solid" :vlax-true));创建填充样式
               (setq obj(vla-addcircle block (vlax-3d-point pt) 0.1));创建外环边界添加样式
               (setq outerloop(vlax-make-safearray vlax-vbobject '(0 . 0)));创建填充边界对象数组
               (vlax-safearray-fill outerloop (list obj));数组填充对象
               (vla-appendouterloop hatchobj outerloop)
               (vla-evaluate hatchobj)
               (vla-regen doc :vlax-true)
发表于 2016-9-27 12:56:13 | 显示全部楼层
szx025 发表于 2016-9-27 08:28
属性块忘了,补上另:如何把属性块放在程序中,请高手指点一下

这文件怎么会这么大?
 楼主| 发表于 2016-9-26 14:20:43 | 显示全部楼层
图片放上来

本帖子中包含更多资源

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

x
发表于 2016-9-26 23:30:14 | 显示全部楼层
大师:bgz.dwg bgy.dwg能否发上来?多谢
发表于 2016-9-27 00:58:47 | 显示全部楼层
块文件最好能写到程序里
 楼主| 发表于 2016-9-27 08:28:51 | 显示全部楼层
属性块忘了,补上另:如何把属性块放在程序中,请高手指点一下

本帖子中包含更多资源

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

x
发表于 2016-9-27 09:18:23 | 显示全部楼层
谢谢楼主,感觉很有用。
发表于 2016-9-27 10:30:46 | 显示全部楼层
谢谢楼主,感觉很有用。
发表于 2016-9-27 14:00:40 | 显示全部楼层
感谢楼主分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 15:26 , Processed in 0.208352 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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