乐筑天下

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

[编程交流] 如何在cad中排序?

[复制链接]

19

主题

55

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 07:19:06 | 显示全部楼层 |阅读模式
你好
如您所见(附)在代码(层“C-Road-Ctn-Title”)下,一个区域(层“Area Block”)是我想要的一个订单,以保持这些数字的组合。
样本文件(附件)
 
我该怎么做?
样本2.dwg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:28:22 | 显示全部楼层
单独选择每列。
 
  1. (defun c:Txtorder (/ ss i sn e l lst pts)
  2. (vl-load-com)
  3. (if (setq ss (ssget "_:L" '((0 . "*TEXT"))))
  4.    (progn (repeat (setq i (sslength ss))
  5.             (vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
  6.             (if (numberp (read (cdr (assoc 1 (setq e (entget sn))))))
  7.               (setq l (cons (list (cdr (assoc 1 e)) (cdr (assoc 10 e)) sn) l))
  8.             )
  9.           )
  10.           (setq lst (vl-sort l '(lambda (q p) (< (atof (car q)) (atof (car p))))))
  11.           (setq pts (vl-sort l '(lambda (q p) (> (cadr (cadr q)) (cadr (cadr p))))))
  12.           (repeat (length lst)
  13.             (entupd
  14.               (cdr
  15.                 (assoc -1
  16.                        (entmod (subst (cons 10 (cadr (car pts))) (cons 10 (cadr (car lst))) (entget (caddr (car lst)))))
  17.                 )
  18.               )
  19.             )
  20.             (setq lst (vl-remove (car lst) lst))
  21.             (setq pts (vl-remove (car pts) pts))
  22.           )
  23.    )
  24. )
  25. (princ "\nWritten by Tharwat Al Shoufi")
  26. (princ)
  27. )
回复

使用道具 举报

19

主题

55

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 07:38:01 | 显示全部楼层
谢谢你的回答,但我不知道为什么我的“区域块”号码变了!!!!!!
我不喜欢我的数字改变;只是排序顺序,它意味着一行一行是“C-Road-Ctn-Title”,下一行是“
区域块“就这样!!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:44:29 | 显示全部楼层
 
你是说他们的位置只是(垂直的)吗?
回复

使用道具 举报

19

主题

55

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 07:48:30 | 显示全部楼层
 
是,并将所有文本排序为垂直。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:56:21 | 显示全部楼层
还有一个例程,用于在x轴上垂直排列所选文本。
 
  1. (defun c:Test (/ x ss i e sn p l)
  2. (vl-load-com)
  3. (if (setq  ss (ssget '((0 . "TEXT"))))
  4.    (progn
  5.      (repeat (setq i (sslength ss))
  6.        (vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
  7.        (setq l (cons sn l))
  8.        (cond ((not x) (setq x (car (cdr (assoc 10 (setq e (entget sn)))))))
  9.              ((if (> (setq p (car (cdr (assoc 10 (setq e (entget sn)))))) x)
  10.                 (setq x p)
  11.               )
  12.              )
  13.        )
  14.      )
  15.      (foreach ent l
  16.        (entupd
  17.          (cdr
  18.            (assoc -1
  19.                   (entmod
  20.                     (subst (cons 10 (list x (cadr (cdr (assoc 10 (entget ent)))))) (assoc 10 (entget ent)) (entget ent))
  21.                   )
  22.            )
  23.          )
  24.        )
  25.      )
  26.    )
  27.    (princ)
  28. )
  29. (princ "\nWritten by Tharwat Al Shoufi")
  30. (princ)
  31. )
回复

使用道具 举报

19

主题

55

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:00:38 | 显示全部楼层
谢谢,再提一个问题;如果可能,增加数字层“C-Road-Ctn-Title”和层“Area block”之间的距离!!?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:06:47 | 显示全部楼层
 
试试这个。。。
  1. (defun c:Test (/ ss d i e sn lst l p n ent)
  2. (vl-load-com)
  3. (if (and (setq ss (ssget '((0 . "TEXT")))) (setq d (getdist "\n Specify Distance between texts :")))
  4.    (progn (repeat (setq i (sslength ss))
  5.             (vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
  6.             (setq e (entget sn))
  7.             (setq lst (cons (list sn (cdr (assoc 10 e)) (cdr (assoc 40 e))) lst))
  8.           )
  9.           (setq l (vl-sort lst '(lambda (a b) (> (cadr (cadr a)) (cadr (cadr b))))))
  10.           (setq p (polar (cadr (car l)) (* pi 1.5) (+ (caddr (car l)) d)))
  11.           (setq n 0)
  12.           (repeat (1- (length l))
  13.             (setq ent (nth (setq n (1+ n)) l))
  14.             (entupd
  15.               (cdr (assoc -1 (entmod (subst (cons 10 p) (assoc 10 (entget (car ent))) (entget (car ent))))))
  16.             )
  17.             (setq p (polar p (* pi 1.5) (+ (caddr ent) d)))
  18.           )
  19.    )
  20.    (princ)
  21. )
  22. (princ "\nWritten by Tharwat Al Shoufi")
  23. (princ)
  24. )
回复

使用道具 举报

19

主题

55

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:17:02 | 显示全部楼层
再次非常感谢;解决了的
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:21:12 | 显示全部楼层
 
随时欢迎你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:58 , Processed in 0.548122 second(s), 72 queries .

© 2020-2025 乐筑天下

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