明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 707|回复: 1

提取点号生成坐标文件T1234T

[复制链接]
发表于 2024-9-5 10:05:03 | 显示全部楼层 |阅读模式
本帖最后由 树櫴希德 于 2024-9-5 10:07 编辑

  1. ;(jiaodujuli (getpoint) (getpoint))
  2. ;(myassoc (car(entsel)) 10) jiaodujuli
  3. (defun jiaodujuli (pt1 pt2 / jiaodu  juli )
  4.   (setq pt1 (vl-remove (last pt1)pt1))
  5.   (setq pt2 (vl-remove (last pt2)pt2))
  6.     (setq jiaodu (angle pt1 pt2))
  7.     (setq juli (distance pt1 pt2))
  8. (list jiaodu  juli )
  9.   )

  10. (defun 10zu (e /)
  11. (cdr(assoc 10 (entget e)))
  12.   )
  13. (defun 1zu (e /)
  14. (cdr(assoc 1 (entget e)))
  15.   )

  16. (defun 0zu (e /)
  17. (cdr(assoc 0 (entget e)))
  18.   )

  19. (defun SstoEs(ss / a en lst)
  20.   (if ss(progn(setq a -1)
  21.    (while(setq en(ssname ss(setq a(1+ a))))
  22.      (setq lst(cons en lst)))))
  23.   lst)

  24. (defun myassoc(e code / a b)
  25.   (setq e(entget e))
  26.   (while(setq a(assoc code e))
  27.     (setq b(cons a b)e(vl-remove a e)))
  28.   (mapcar'cdr(reverse b))
  29.   )

  30. (defun c:tt(/ fp s m p h a)
  31.   (setq fp(getfiled "打开数据文件" "C:\\" "dat" 36)
  32.   fp(if fp(open fp"a")))
  33.   (setq s(sstoes(ssget"X"'((0 . "LWPOLYLINE")(8 . "0"))))m 0 a "")
  34.   (repeat (length s)
  35.     (setq p(myassoc(nth m s)10)m(1+ m)
  36.     p(list(/(+(caar p)(caadr p))2)(/(+(cadar p)(cadadr p))2)))
  37.     (setq h(vl-sort(sstoes(ssget"CP"(list(setq p1(polar p 3.14 3.5))(setq p2(polar p1 1.57 2))(polar p2 0 5.5)(polar p 0 2))'((0 . "TEXT")(8 . "桩号"))))
  38.        (function(lambda(e1 e2)(<(cadr(assoc 10(entget e1)))(cadr(assoc 10(entget e2)))))))
  39.     h(mapcar'(lambda(x)(cdr(assoc 1(entget x))))h)
  40.     h(if(=(length h)2)(strcat(car h)"."(cadr h))(car h)))
  41.     (setq a(strcat a(itoa m)",,"(rtos (car p)2 3)","(rtos (cadr p)2 3)","h"\n")))
  42.   (write-line a fp)
  43.   (close fp))
  44. ;; 创建直线图元
  45. (defun NewLine:pt1-pt2 (pt1 pt2)
  46.   (entmake (list '(0 . "LINE")
  47.              (cons 10 pt1)
  48.              (cons 11 pt2)
  49.      (cons 62 3)
  50.            )
  51.   )
  52. )




  53. ;(nentselp (getpoint))
  54. ;(1zu (car(entsel )))
  55. ;(0zu (car(entsel )))
  56. (defun c:t1234t ( / fp s m p hhh a  pt1 pt2 jiaodu  juli kk x  )  ;  
  57.   (setq fp(getfiled "打开数据文件" "C:\\" "dat" 36)
  58.   fp(if fp(open fp"a")))
  59.   (setq pt1 (getpoint "\n 请指定圆心点:"))
  60.   (setq pt2 (getpoint "\n 请指定文字中间点:"))

  61.   (setq jiaodu (car (jiaodujuli pt1 pt2  )))
  62.   (setq juli (cadr (jiaodujuli pt1 pt2  )))
  63.   (setq s(sstoes(ssget'((0 . "circle")(8 . "00 路基段工艺"))))
  64.   m 0
  65.   a "")
  66.    (repeat (length s)
  67.      (setq p(10zu (nth m s)))  ;(10zu (nth 0 s))
  68.      (setq kk (list (car (polar p jiaodu juli) ) (cadr (polar p jiaodu juli) ) ) )

  69.   (setq hhh(vl-remove nil (mapcar  '(lambda (x)    (if (equal (0zu x) "TEXT" )  (1zu x)     )  )    (sstoes(ssget "F" (list  (list (car p) (cadr p))  kk (polar p (angle kk p) juli) )) )   )))  ;(polar p (angle kk p) juli)这句可以删除好点

  70.      
  71.                ;( NewLine:pt1-pt2  (list (car p) (cadr p))  kk)
  72.    ;(setq  h  (1zu(car(nentselp "" kk ))  )   )
  73.      
  74.   (setq   m(1+ m) )
  75.      
  76.      (setq a(strcat (car hhh) ",," (rtos (car p)2 3) "," (rtos (cadr p)2 3) "," (rtos (caddr p)2 3) ))
  77.   (write-line a fp)
  78.     (setq p nil) (setq kk nil) (setq h nil)
  79.      )

  80. (close fp)
  81.       (princ)

  82.   )

本帖子中包含更多资源

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

x
发表于 2024-9-19 15:35:57 | 显示全部楼层
很好→很棒!很好~很棒!!很好……很棒!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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