明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2357|回复: 9

纵横断面面积标注

[复制链接]
发表于 2019-11-22 21:59:07 | 显示全部楼层 |阅读模式
  1. (defun cx-ss2en
  2.   (ss / enlst)
  3.   (cond
  4.     ((= (type ss) 'PICKSET)
  5.       (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex SS)))
  6.     )
  7.     ((= (type ss) 'LIST)
  8.       (setq enlst (ssadd))
  9.       (last (mapcar '(lambda (x) (ssadd x enlst)) ss))
  10.     )
  11.     ((='ename(type ss))
  12.       (ssadd ss)
  13.     )
  14.   )
  15. )


  16. ;[功能]点表求面积
  17. (defun getarea (l)
  18.    (abs(* 0.5
  19.       (apply
  20.         '+
  21.         (mapcar
  22.           '(lambda (a b) (- (* (car a) (cadr b)) (* (car b) (cadr a))))
  23.           l
  24.           (append (cdr l) (list (car l)))
  25.         )
  26.       )
  27.    ) )
  28. );;;;;;;;;;;;;;;;;;;
  29. (defun vxs(e / p a b n ob q et d d1 en et)
  30.     (setq a(entget e)ob(vlax-ename->vla-object e)et(cdr(assoc 0 a))n 0 p nil d nil)
  31.     (cond((="LWPOLYLINE"et)
  32.     (repeat(length a)(setq b (nth n a) n (+ n 1))
  33.       (if (= 10 (car b))(progn
  34.         (setq q(list (cadr b) (caddr b))d1(vlax-curve-getDistAtPoint ob q))
  35.         (if p (if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))
  36.           (setq p (list q)))))))
  37.    ((="POLYLINE"et)
  38.     (SETQ EN (ENTGET (SETQ E (ENTNEXT E))))
  39.     (WHILE (/= (CDR (ASSOC 0 EN)) "SEQEND")
  40.       (SETQ q (CDR (ASSOC 10 EN))d1(vlax-curve-getDistAtPoint ob q)q(reverse(cdr(reverse q))))
  41.       (if p(if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))(setq p(list q)))
  42.       (SETQ EN (ENTGET (SETQ E (ENTNEXT E)))))
  43.     (setq p(reverse p))))P)
  44. ;;;;;;;;;;
  45. ;;;;;;;;;;;;;;;;;;;;;;;;
  46. ;;;;;;;;;;;;;;;;;;;
  47. (defun zxzb (pts / len pt )
  48.   (setq len (length pts))
  49. (setq pt (mapcar
  50.   '(lambda(x)
  51.     (/ x len)
  52.   )
  53.   (apply
  54.     'mapcar
  55.     (cons '+ pts)
  56.   )
  57. )
  58. )  pt)

  59. (defun c:dmmj ( /  hxbl hxbl dmx zbb mj xzzb SSA x);  hxbl hxbl dmx zbb

  60. (setq hxbl (getint "\n请输入断面横向比例 1 :"))
  61.   (setq zxbl (getint "\n请输入断面纵向比例 1 :"))

  62. (setq ssa (ssget '( (0 . "LWPOLYLINE")   ) ) ) ;(8 . "0")

  63.   (foreach x (cx-ss2en ssa)
  64. ;(setq dmx (car(entsel "\n请选择要标注断面面积的闭合多段线:")))
  65. (setq zbb (vxs x))
  66.   (setq xzbb  (mapcar          '(lambda (a ) (list   (* (car a)(/ hxbl 1000.000) )  (* (cadr a)(/ zxbl 1000.000) )     )
  67.           )
  68.     zbb)

  69.    )
  70. (setq mj (getarea xzbb))

  71.   (entmake (list '(0 . "TEXT") '(8 . "fgbaj")(cons 1 (rtos mj 2 3)) (cons 10 (zxzb zbb) ) (cons 40 3.0)))
  72.   
  73.   )
  74.        )

本帖子中包含更多资源

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

x
发表于 2019-11-23 08:53:47 | 显示全部楼层
学习学习下
 楼主| 发表于 2019-11-23 10:52:32 | 显示全部楼层

大神大哥你太谦虚; 了
 楼主| 发表于 2019-11-23 17:31:47 | 显示全部楼层
  1. (defun c:zs()
  2.   (setq ss(ssget'((0 . "insert")(8 . "gcd")))j -1)
  3.   (setq gcz 0)
  4.   (repeat(sslength ss)
  5.     (setq en(ssname ss(setq j(1+ j))))
  6.     (setq el(entget en))
  7.     (setq zb10(assoc 10 el))
  8.     (setq zb(last zb10))
  9.     (setq gcz(+ gcz zb))
  10.   )
  11.   (setq gczs(/ gcz (sslength ss)))
  12.   (prompt (strcat"\n平均数为:" (rtos gczs 2 3)))
  13.   (princ)
  14. )

发表于 2019-12-2 19:53:37 | 显示全部楼层
大神,发给操作视频下,不太明白怎么使用
 楼主| 发表于 2019-12-4 20:31:41 | 显示全部楼层
文字连接程序
  1. (defun c:tt (/ e el str tl)
  2.   (if (and (setq e (car (entsel "\nPick First Text: ")))
  3.            (= (cdr (assoc 0 (setq el (entget e)))) "TEXT")
  4.       )
  5.     (progn
  6.       (setq str (cdr (setq tl (assoc 1 el))))
  7.       (while (and (setq e1 (car (entsel "\nNext Join: ")))
  8.                   (= (cdr (assoc 0 (setq el1 (entget e)))) "TEXT")
  9.              )
  10.         (setq str (strcat str (cdr (assoc 1 el1))))
  11.         (entmod        (subst (cons 1 str)
  12.                        tl
  13.                        el
  14.                 )
  15.         )
  16.         (entdel e1)
  17.       )
  18.     )
  19.   )
  20.   (princ)
  21. )

发表于 2020-11-1 11:10:08 | 显示全部楼层
横断面面积标注  感谢分享源码
发表于 2022-9-30 21:18:47 | 显示全部楼层
支持分享源码
发表于 2023-1-3 14:12:42 | 显示全部楼层
支持分享源码
发表于 2023-1-13 11:44:28 | 显示全部楼层
感谢分享源码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 03:48 , Processed in 0.185223 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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