乐筑天下

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

[编程交流] 边界创建Lisp-按Tex

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:37:58 | 显示全部楼层 |阅读模式
 
线程:边界创建Lisp-请求
 
 
你好,
 
 
我刚刚从上面的帖子中学到了如何平滑地创建边界。
 
有没有办法通过选定文本的坐标来创建边界?
 
183803llvm72jkbg7jzxkv.jpg
 
 
谢谢
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

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

铜币
242
发表于 2022-7-5 17:59:11 | 显示全部楼层
像这样的?
  1. (defun c:BNDTXT (/ pt)
  2. (while (setq pt (cdr (assoc 10 (entget (ssname(ssget "_+.:E:S" '((0 . "TEXT"))) 0)))))
  3.    (command "_.-boundary" "_a" "_i" "_n" "" "" "_non" pt "")
  4. )
  5. (princ)
  6. )
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

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

铜币
242
发表于 2022-7-5 18:13:11 | 显示全部楼层
还是那样?
  1. (defun c:BNDTXTMULTIPLE (/ pt)
  2. (if (setq ss (ssget '((0 . "TEXT"))))
  3.         (repeat (setq in (sslength ss))
  4.                 (setq pt (cdr (assoc 10 (entget (ssname ss (setq in (1- in)))))))
  5.                 (command "_.-boundary" "_a" "_i" "_n" "" "" "_non" pt "")
  6.         )
  7. )
  8. (princ)
  9. )
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 18:19:11 | 显示全部楼层
尝试:
  1. ;;; 2000+ version
  2. ;;; Tbox.lsp - Draws boxes around Text, Mtext, Attributes & Dimension Text.
  3. ;;; BY: TOM BEAUFORD
  4. ;;; tombu@leoncountyfl.gov
  5. ;;; LEON COUNTY PUBLIC WORKS ENGINEERING SECTION
  6. ;========================================================================
  7. (defun c:tbox (/ *ERROR* thisdrawing EnTyp ENT EnPt SubE SEnTyp Blk BOBJ
  8.                  elist EOBJ ELA rot of ps AtPt ss tb of ll lr ul ur)
  9. (vl-load-com)
  10. (defun *ERROR* (err) ; define local handler
  11.   (princ)
  12. );; "" is the same message you get when exiting an AutoCAD command.
  13. (setq thisdrawing (vla-get-activedocument (vlax-get-acad-object)))
  14. (setvar "cmdecho" 0)
  15. (setq ENT "Something")
  16. (while ENT
  17.    (while(not(or(= EnTyp "ATTRIB")(= EnTyp "ATTDEF")(= EnTyp "TEXT")(= EnTyp "MTEXT")))
  18.      (if(not(= EnTyp nil))(prompt "\nEntity Selected not an Attribute or Text"))
  19.      (if(setq ENT (entsel "\nSelect Attribute or Text: "))
  20.        (setq EnTyp (cdr (assoc 0 (entget (car ENT))))
  21.              EnPt (cadr ENT)
  22.              ENT (car ENT)        ; Entity name
  23.              SubE (car (nentselp "" EnPt))                ; SubEntity
  24.              SEnTyp (cdr (assoc 0 (entget SubE)))                ; SubEntity type
  25.        ); setq
  26.        (setq ENT nil EnTyp nil SEnTyp nil)
  27.      ); if
  28.      (cond
  29.        ((= SEnTyp "ATTRIB")(setq ENT SubE EnTyp SEnTyp SubE nil SEnTyp nil))
  30.        ((= EnTyp "DIMENSION")
  31.          (progn
  32.            (princ "\nEnTyp = Dimension.")
  33.            (setq Blk ENT                ; Parent entity name
  34.                  ENT SubE
  35.                  BOBJ (vlax-ename->vla-object Blk)        ; Entity object
  36.                  EnTyp SEnTyp
  37.                  SubE nil
  38.                  SEnTyp nil
  39.            ); setq
  40.          ); progn
  41.        ); EnTyp = "DIMENSION"
  42.        (ENT(princ "\nEnTyp is not a Dimension, Insert or Attribute."))
  43.      ); cond
  44.      (setq elist (entget ENT); Entity list
  45.      )
  46.      (setq EOBJ (vlax-ename->vla-object ENT)        ; Entity object
  47.                ELA (getvar "clayer")        ; Object layer
  48.      );;setq
  49. ;      (if Blk(vlax-dump-object (vlax-ename->vla-object Blk)))
  50. ;      (vlax-dump-object EOBJ)        ; List object properties
  51.      (if(acet-layer-locked ELA)        ; If object layer's locked
  52.        (progn
  53.          (prompt(strcat "Current Layer "" ELA "" is Locked."))
  54.          (setq EnTyp nil)        ; continue while loop
  55.        )
  56.      )
  57.    );;while
  58.    (setq rot (vlax-get-property EOBJ 'Rotation)
  59.           of (vlax-get-property EOBJ 'Height)
  60.           ps (vlax-safearray->list(vlax-variant-value (vlax-get-property EOBJ 'InsertionPoint)))
  61.    )
  62.    (vla-startundomark thisdrawing)
  63.    (cond
  64.      ((= EnTyp "MTEXT")
  65.        (progn
  66.          (if Blk (setq of (*(vlax-get-property BOBJ 'TextGap)2)))
  67.          (setq AtPt (vlax-get-property EOBJ 'AttachmentPoint))
  68.          (cond
  69.            ((or(= 1 AtPt)(= 4 AtPt)(= 7 AtPt))(setq  ps (polar ps(+ rot PI)(/ of 2))))
  70.            ((or(= 2 AtPt)(= 5 AtPt)(= 8 AtPt))
  71.              (setq  ps (polar ps(+ rot PI)(/ (+ (cdr(assoc 42 elist))of) 2)))
  72.            )
  73.            ((or(= 3 AtPt)(= 6 AtPt)(= 9 AtPt))
  74.              (setq  ps (polar ps(+ rot PI)(+ (cdr(assoc 42 elist))(/ of 2))))
  75.            )
  76.          )
  77.          (cond
  78.            ((or(= 1 AtPt)(= 2 AtPt)(= 3 AtPt))(setq  ps (polar ps(+ rot(/ PI 2))(/ of 2))))
  79.            ((or(= 4 AtPt)(= 5 AtPt)(= 6 AtPt))
  80.              (setq  ps (polar ps(+ rot(/ PI 2))(/ (+ (cdr(assoc 43 elist))of) 2)))
  81.            )
  82.            ((or(= 7 AtPt)(= 8 AtPt)(= 9 AtPt))
  83.              (setq  ps (polar ps(+ rot(/ PI 2))(+ (cdr(assoc 43 elist))(/ of 2))))
  84.            )
  85.          )
  86.          (setq  lr (polar ps rot (+ (cdr(assoc 42 elist))of))
  87.                 ul (polar ps (- rot(/ PI 2))(+ (cdr(assoc 43 elist))of))
  88.                 ur (polar lr (- rot(/ PI 2))(+ (cdr(assoc 43 elist))of))
  89.          )
  90.          (vl-cmdf "pline" "non" ps "non" ul "non" ur "non" lr "c")        ;Drawn Box
  91.        ); progn
  92.      ); EnTyp = "MTEXT"
  93.      ((or(= EnTyp "ATTRIB")(= EnTyp "TEXT"))
  94.        (progn
  95.          (if(= EnTyp "ATTRIB")
  96.             (setq
  97.               elist(subst(cons 73 (cdr(assoc 74 elist)))(assoc 74 elist)elist)
  98.               elist(subst(cons 0 "TEXT")(assoc 0 elist)elist)
  99.             )
  100.          ); if
  101.          (vl-cmdf "ucs" "OBject" ENT)
  102.          (setq tb (textbox elist)
  103.                ll (list(-(car(car tb))(/ of 6))(-(cadr(car tb))(/ of 6)))
  104.                ur (list(+(car(cadr tb))(/ of 6))(+(cadr(cadr tb))(/ of 6)))
  105.          )
  106.          (vl-cmdf "rectang" "non" ll "non" ur)        ;Drawn Box
  107.          (vl-cmdf "ucs" "p")
  108.        ); progn
  109.      ); EnTyp = "ATTRIB" or "TEXT"
  110.    ); cond
  111.    (setq Box (vlax-ename->vla-object (entlast)))
  112.    (vl-catch-all-apply 'vla-put-Linetype (list Box "CONTINUOUS"))
  113.    (vl-catch-all-apply 'vla-put-ConstantWidth (list Box (/ of 20)))
  114.    (setq EnTyp nil SEnTyp nil)
  115.    (vla-endundomark thisdrawing)
  116. ); while
  117. (princ)
  118. ); defun
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:29:14 | 显示全部楼层
 
对它起作用了!
 
非常感谢!!
 
现在我可以用这个lisp来找到结构板的边界,
 
再次感谢。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:43:53 | 显示全部楼层
 
这个也行!
 
谢谢你的帮助!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:10 , Processed in 0.557764 second(s), 67 queries .

© 2020-2025 乐筑天下

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