明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1459|回复: 7

奇葩水深点生成数据文件,求改进

[复制链接]
发表于 2015-12-31 23:01:57 | 显示全部楼层 |阅读模式
  1. (DEFUN VXS (E /)
  2.       (CDR (ASSOC 10 (ENTGET E)))


  3.   )
  4. (DEFUN VXS1 (E /)
  5.       (CDR (ASSOC 1 (ENTGET E)))


  6.   )
  7. (defun get_inpoint (blockname)
  8.   (setq in_point(cdr (assoc 10 (entget blockname))))
  9.   in_point
  10. )
  11. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  12. (defun get_inpointname (blockname)
  13.   (setq in_point(cdr(car(entget blockname))))
  14.   in_point
  15. )



  16. (setq ssa (ssget '((0 . "TEXT") (8 . "0"))))
  17.                 (setq ii   0
  18.                       no  0
  19.                   )
  20.                   (repeat (sslength ssa)
  21.                        (setq en (ssname ssa ii)
  22.                             ptb (vxs en)
  23.           pzx (append pzx (list ptb))
  24.            ii  (1+ ii)               )
  25.         )

  26. (setq pzx1(getpoint "\n 文字起点"))
  27. (setq pzx2(getpoint "\n 第二文字终点"))

  28. (setq lst(vl-sort pzx'(lambda(x y)(and (equal (distance pzx1 pzx2) (distance x y) 0.3)

  29.                                        (equal (angle pzx1 pzx2) (angle x y) 0.002)

  30.             (<(car x)(car y))(>(cadr x)(cadr y))
  31.                )      )))





  32. (defun divlst(lst n / a b)
  33.     (while lst(setq b nil)
  34.       (repeat(min(length lst)n)(setq b(cons(car lst) b)lst(cdr lst)))
  35.       (setq a(cons b a)))
  36.     (mapcar'reverse(reverse a)))

  37. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  38. (defun testlsp(lst x1 x2 / a b d l)
  39.   (setq lst(vl-sort lst'(lambda(x y)(and(<(car x)(car y))(<(cadr x)(cadr y)))))
  40. d(distance x1 x2))
  41.   (while lst
  42.     (if(setq a(car lst)
  43.      b(vl-remove-if-not'(lambda(x)(equal(distance x a)d 0.3))(cdr lst)))
  44.       (setq b(cons a b)
  45.     l(cons b l)
  46.     lst(repeat(length b)
  47. (setq a(car b)
  48.        b(cdr b)
  49.        lst(vl-remove a lst))))
  50.       (setq lst(cdr lst))))
  51.   l)
  52. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  53. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  54.   
  55. ;(setq lst nil  newlst nil x1 0)
  56. (setq fp(getfiled "打开数据文件" "C:\" "dat" 5)
  57.   fp(if fp(open fp"w")))
  58. (foreach x (testlsp lst pzx1 pzx2)
  59.   
  60. (repeat (setq k (sslength ssa))
  61.     (if  (and (setq e (ssname ssa (setq k (1- k ))))
  62.        (setq en (entget e))
  63.   )
  64.       (progn  
  65.   
  66.   (if (member (cons 10 (car x)) en)
  67.     (setq pzx3(VXS1 e))
  68.     ;(setq en (cons x en))
  69.   )
  70.       )
  71.     )
  72.   )
  73.   
  74. (repeat (setq k (sslength ssa))
  75.     (if  (and (setq e (ssname ssa (setq k (1- k ))))
  76.        (setq en (entget e))
  77.   )
  78.       (progn  
  79.   
  80.   (if (member (cons 10 (cadr x)) en)
  81.     (setq pzx4(VXS1 e))
  82.     ;(setq en (cons x en))
  83.   )
  84.       )
  85.     )
  86.   )

  87.   (setq pzx5(mapcar '(lambda(x y) (* 0.5(+ x y))  )(car x)  (cadr x)  ))

  88.   (setq pzx6(strcat "0" ",,"(rtos (car pzx5)2 3)","(rtos (cadr pzx5)2 3)","(strcat pzx3"."pzx4)"\n"))

  89. ;(command "rectangle" (car x) (cadr x))

  90. (write-line pzx6 fp)
  91.   

  92.   )


  93. (close fp)

本帖子中包含更多资源

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

x
发表于 2016-1-3 18:18:09 | 显示全部楼层
本帖最后由 llsheng_73 于 2016-1-3 18:19 编辑

1当小数部分为0时,不会出现代表小数的文字。这种情况下需要设置小数为0而不是将其排除,其点位可参考前一点计算出的位置
2不是所有整数部分和小数部分两个文字的插入坐标差值都是相同的。所以整数和小数的匹配是一个问题,可以考虑采用代表整数和小数的文字的距离不超过多少并且小数在右边进行组合,而不是采用固定的距离和角度
进行限制,另外,对于点位的计算如果考虑整数多于一位的情况刚不能用这两个文字的10组取中数
3程序基本无章法,这方面需要提高,比如反复写同一个东东或者不断修改已经写经写好的程序
 楼主| 发表于 2016-1-5 16:41:20 | 显示全部楼层
llsheng_73 发表于 2016-1-3 18:18
1当小数部分为0时,不会出现代表小数的文字。这种情况下需要设置小数为0而不是将其排除,其点位可参考前一点 ...

是啊。我主要是看这个烂图气人,完成大部分,其它自己搞。希望烂图千年一遇
发表于 2016-1-6 19:14:36 | 显示全部楼层
同步学习中………………
发表于 2016-1-15 12:21:23 | 显示全部楼层
烂图
发表于 2016-2-15 21:57:46 | 显示全部楼层
这是海图水深的标准标法呀~~~
发表于 2016-2-19 21:10:24 | 显示全部楼层
如何做到的請大哥教一下
发表于 2024-12-6 20:32:17 | 显示全部楼层
海图的标注 审美丑到bao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 08:25 , Processed in 0.183080 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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