乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: tieptouch

[编程交流] 帮助删除文本重叠PIN

[复制链接]

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 09:55:59 | 显示全部楼层
 
LM,
我还对这个lisp感兴趣,可以删除tieptouch描述的重叠文本。为了理解重叠文本,测量员在地面上拾取了一堆点。然后将其传输到测量软件,该软件生成特定高度的所有文本(例如,在autocad上为1.6m)。尤其是道路,两侧都有排水沟和路堑。因此,将拾取许多点,如道路边缘、护栏、排水沟右侧、排水沟倒置、排水沟左侧、切割底部、切割顶部等。文本(即代码、点编号和点高程)-但我们正在查看的将是文本高程。因为将显示所有文字高程,这会导致重叠。因为我们需要随机删除文本提升,所以最终它看起来很好,如tieptouch所示。所以删除哪一点无关紧要。
希望这个解释清楚。谢谢
总成
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
243
发表于 2022-7-6 10:00:43 | 显示全部楼层
你可以用这样的东西:
  1. (defun c:FText (/ ent ent1 i lst newlayer ofset ss ss1 ss_tmp ans)
  2. ;|By Gia Bach 2010|;
  3. (defun GetBound (ent ofs / ang elist ll lr tb tb1 tb2 ul ur)
  4. (setq elist (entget ent)
  5. ang (cdr (assoc 50 elist))
  6. tb (textbox elist)
  7. tb1 (car tb)
  8. tb2 (cadr tb)
  9. ll (polar (cdr (assoc 10 elist))
  10. (+(angle '(0 0) tb1) ang) (DISTANCE '(0 0) tb1))
  11. lr (polar ll ang (- (car tb2) (car tb1)))
  12. ur (polar ll (+ ang (angle tb1 tb2)) (distance tb1 tb2))
  13. ul (polar ll (+ ang (/ pi 2)) (- (cadr tb2) (cadr tb1))) )
  14. (setq ang (angle ll lr) )
  15. (setq ll (polar ll (- ang (* pi 0.75)) (sqrt (* (* ofs ofs) 2)))
  16. lr (polar lr (- ang (/ pi 4)) (sqrt (* (* ofs ofs) 2)))
  17. ur (polar ur (+ ang (/ pi 4)) (sqrt (* (* ofs ofs) 2)))
  18. ul (polar ul (+ ang (* pi 0.75)) (sqrt (* (* ofs ofs) 2))) )
  19. (list ll lr ur ul))
  20. (command "_.undo" "be")
  21. (setq ss (ssget (list (cons 0 "TEXT"))) ss1 (ssadd) )
  22. (or *ofset (setq *ofset 0.5))
  23. (initget 4)
  24. (setq ofset (getreal (strcat "\nDistance Textbox offset: <" (rtos *ofset) ">")))
  25. (if (= ofset nil) (setq ofset *ofset) (setq *ofset ofset))
  26. (while (> (sslength ss) 0)
  27. (setq ent (ssname ss 0)
  28. lst (GetBound ent ofset) )
  29. (ssdel ent ss)
  30. (if (setq ss_tmp (ssget "cp" lst (list(cons 0 "TEXT"))))
  31. (progn
  32. (setq i -1)
  33. (while (setq ent1 (ssname ss_tmp (setq i (1+ i))))
  34. (if (not (equal ent ent1))
  35. (progn
  36. (ssadd ent1 ss1)
  37. (if (ssmemb ent1 ss) (ssdel ent1 ss)) ))) ) ) )
  38. (if (> (sslength ss1) 0)
  39. (progn
  40. (setq newlayer "Text_Filter")
  41. (if (not (tblsearch "layer" newlayer))
  42. (command "-layer" "n" newlayer "c" 2 newlayer "") )
  43. (command "change" ss1 "" "p" "la" newlayer "") ) )
  44. (setq ans (getstring "\n Do you want to Erase all of Dup Text ? [Y/N] <Y>"))
  45. (if (or (= ans "") (not ans) (= (strcase ans) "Y")) (command ".erase" ss1 "") T)
  46. (command "_.undo" "e")
  47. (princ))

它将根据您选择的距离(从textbox的偏移量)过滤重叠的文本,并将所有找到的文本更改为layer text_Filter,并让您决定是否删除。要保留的文本属于创建类
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 10:03:29 | 显示全部楼层
非常感谢Ketxu。这就是我需要的。再次感谢你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 06:25 , Processed in 0.321376 second(s), 57 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表