明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1007|回复: 2

在样本多段线中心标注高程

[复制链接]
发表于 2016-4-29 20:31 | 显示全部楼层 |阅读模式

  1. ;;;by Gu_xl
  2. (defun gxl-cs:gcd (inspt height scale / pt blkdef obj);展高程点函数(inspt:插入点,heitht:高程值,scale:缩放比例,xsws:高程注记位数)
  3. (vl-load-com) ;将 Visual LISP 扩展功能加载到 AutoLISP
  4.   (regapp "SOUTH")
  5.   (setvar "CMDECHO" 0)
  6.   (command "layer" "m" "GCD" "c" "1" "" "L" "CONTINUOUS" ""  "")
  7.   (if height
  8.     (setq height (rtos height 2 3));3为高程注记位数
  9.     (setq height "")
  10.   )
  11.   (regapp "SOUTH")
  12.   
  13.   ;;;检查字体 "HZ" 是否存在
  14.   (if (not (tblobjname "style" "宋体"))
  15.     ;(command "style" "HZ" "rs.shx,hztxt.shx" 0 1 0 "" "" "")
  16.     (command "style" "宋体" "" 0 1 0 "" "" "")
  17.   )
  18.   ;;;检查是否存在高程点图块定义
  19.   (if (not (tblobjname "block" "GC200"))
  20.     (progn
  21.       (setq blkdef (vla-Add (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-3D-point '(0 0 0)) "GC200"))
  22.       (setq obj
  23.         (vla-AddPolyline
  24.            blkdef
  25.            (vlax-make-variant
  26.               (vlax-safearray-fill
  27.                  (vlax-make-safearray vlax-vbdouble (cons 0 5))
  28.                  '(-0.2 0 0 0.2 0 0)
  29.               )
  30.            )
  31.         )
  32.       )
  33.       (vla-SetBulge obj 0 1) (vla-SetBulge obj 1 1)
  34.       (vla-put-Closed obj :vlax-true)
  35.       (vla-put-ConstantWidth obj 0.4)
  36.     )
  37.   )
  38.   ;;;插入块
  39.   (entmake (list
  40.              '(0 . "INSERT")
  41.              '(100 . "AcDbEntity")
  42.              '(100 . "AcDbBlockReference")
  43.              '(66 . 1);;;属性跟随标志,1跟随,0不跟随
  44.               (cons 2 "GC200")
  45.               (cons 10 inspt)
  46.               (cons 41 scale)
  47.               (cons 42 scale)
  48.               (cons 43 scale)
  49.               (list -3 '("SOUTH" (1000 . "202101")))
  50.            )
  51.   )
  52.   ;;;插入属性
  53.   (entmake (list
  54.              '(0 . "ATTRIB")
  55.              '(100 . "AcDbEntity")
  56.              '(100 . "AcDbText")
  57.               (cons 10 (setq pt (polar inspt 0 (* 1.2 scale))))
  58.               (cons 40 (* 2.0 scale))
  59.               (cons 50 0)
  60.               (cons 41 0.8)
  61.               (cons 51 0)
  62.               (cons 1 height)
  63.               (cons 7 "宋体")
  64.        (cons 62 3)
  65.               (cons 72 0)
  66.               (cons 11 pt)
  67.               '(100 . "AcDbAttribute")
  68.               (cons 2 "height")
  69.               (cons 70  0)
  70.               (cons 74 2)
  71.            )
  72.    )
  73.    ;;;结束标志
  74.    (entmake '((0 . "SEQEND")))
  75.    (princ)
  76. )
  77. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  78. (defun vxs (e / i v lst)
  79.   (setq i 0)
  80.   (while
  81.     (setq v (vlax-curve-getpointatparam e (setq i (1+ i))))
  82.      (setq lst (cons v lst))
  83.   )
  84.   (reverse lst))
  85. ;;;;;;;;;;;;;;;;;;;;;;;;
  86. (defun zxd (ent / pts len pt )
  87. (setq pts (vxs ent))
  88.   (setq len (length pts))
  89. (setq pt (mapcar
  90.   '(lambda(x)
  91.     (/ x len)
  92.   )
  93.   (apply
  94.     'mapcar
  95.     (cons '+ pts)
  96.   )
  97.   )
  98.       )
  99.   pt
  100.   )

  101. (defun changdu (e / )
  102.   (Vla-get-length (VLAX-ename->vla-object e))
  103.   )
  104. (defun changdu1 (e / )
  105.   (vlax-curve-getDistAtParam (VLAX-ename->vla-object e) (vlax-curve-getEndParam (VLAX-ename->vla-object e)));取得曲线长度
  106.   )
  107. (defun c:ctgc (  / gcz  yangbenchang  blc scale lst ent xinzb)

  108. (setq gcz (getreal "\n请输入需要注记的高程值:"))
  109. (setq yangbenchang (changdu1 (car (entsel "\n请选择样本承台LWPOLYLINE:"))))

  110.   (setq blc (getint "\n请输入比例尺1:<500>"))
  111.   (if (= blc nil)(setq blc 500))
  112.   (setvar 'userr1 blc);设置比例尺
  113. (setq scale (* 0.001 blc));缩放比例
  114. (setq i 0)
  115.   (setq lst (ssget '( (0 . "*polyline") (8 . "BASE,基础边")) ) )

  116.   (repeat (sslength lst)
  117.   (setq ent (ssname lst i))
  118. (if (equal yangbenchang (changdu1 ent) 0.1)
  119. (progn
  120. (setq xinzb (list (car (zxd ent)) (cadr (zxd ent)) gcz )  )
  121. (gxl-cs:gcd xinzb gcz scale)
  122.   )
  123.   )

  124. (setq i (+ i 1))
  125.   )



  126.   )




本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
USER2128 + 1 赞一个!
wkq004 + 1 赞一个!

查看全部评分

发表于 2016-5-1 11:33 | 显示全部楼层
命令是多少呀?
发表于 2016-5-6 14:33 | 显示全部楼层
如何使用   能不能演示一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 18:08 , Processed in 0.823707 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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