明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1374|回复: 9

【K:CreatRvTXT】创建云线文字标注

[复制链接]
发表于 2024-4-4 17:05:05 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2024-4-4 23:27 编辑

之前写了云线标注,很多小伙伴反馈缺少文字标注。

刚好最近有小伙伴付费定制,就把原先的云线程序整体上做了一些修改。
主要是增加了这个子函数,也分享给大家耍耍~
  1. ;创建云线文字标注
  2. (defun K:CreatRvTXT (TgtObj Col TgtDIM STR / CurCol Code StaPT EndPT MTEN)
  3.     (setq StaPT Nil EndPT Nil)
  4.     (if (eq 'ENAME (type TgtObj))(setq TgtObj (vlax-ename->vla-object TgtObj)))
  5.     (setq Col
  6.         (if (/= Col (atoi (setq CurCol (getvar "CECOLOR"))))
  7.             (cond
  8.                 ((= "BYBLOCK" CurCol) 7);随块
  9.                 ((= "BYLAYER" CurCol) (cdr (assoc 62 (tblsearch "layer" (getvar "CLAYER")))));随层
  10.                 (T (atoi CurCol))
  11.             )
  12.             Col
  13.         )
  14.     )(redraw)
  15.     (while ;Grread
  16.         (progn
  17.         (princ "\n——★★★ 请指定标注点或空格 ★★★——\n")
  18.         (while (and (setq Code (grread T (+ 1 4 8) 0)) (eq (car Code) 5))
  19.             (redraw)
  20.             (setq StaPT (trans (cadr Code) 1 0) ;WCS
  21.                     EndPT (vlax-curve-getClosestPointTo TgtObj StaPT);WCS
  22.             )
  23.             (grdraw (trans StaPT 0 1) (trans EndPT 0 1) Col);UCS
  24.         )
  25.         (cond
  26.             ((and (eq (car Code) 3) (eq (type StaPT) 'LIST));点选
  27.                 Nil ;退出循环
  28.             )
  29.             ((equal Code '(2 32));空格
  30.                 (redraw)
  31.                 (setq StaPT (trans (cadr (grread '(2 32))) 1 0) ;WCS
  32.                     EndPT (vlax-curve-getClosestPointTo TgtObj StaPT);WCS
  33.                 )
  34.                 (grdraw (trans StaPT 0 1) (trans EndPT 0 1) Col);UCS
  35.                 Nil ;退出循环
  36.             )
  37.             (T
  38.             (princ "\n——★★★ 请输入点或 ESC退出! ★★★——\n")
  39.             T ;继续循环
  40.             );退出循环
  41.         )
  42.         )
  43.     )
  44.     (if (and StaPT EndPT)
  45.         (progn
  46.             (entmake (list '(0 . "LINE") (cons 10 StaPT) (cons 11 EndPT)));直线
  47.             (setq MTEN
  48.                 (entmakeX
  49.                     (list (cons 0 "MTEXT")
  50.                             (cons 100 "AcDbEntity")
  51.                             (cons 100 "AcDbMText")
  52.                             (cons 10 StaPT)
  53.                             (cons 40 (* TgtDIM 5.0));字高
  54.                             (cons 41 (* TgtDIM 100.0));总页宽
  55.                             (cons 71
  56.                                 (if (> (cadr (mapcar '- (trans StaPT 0 1)(trans EndPT 0 1))) 0);Y大,上侧
  57.                                     7 ;左下
  58.                                     1 ;左上
  59.                                 )
  60.                             );对齐基点
  61.                             (cons 1
  62.                                 (strcat
  63.                                     STR "时间:"(menucmd "M=$(edtime,$(getvar,date),YYYY/MO/DD HH:MM)")
  64.                                     "\n" STR "人员:"(getenv "USERNAME")
  65.                                     "\n" STR "内容:"
  66.                                 )
  67.                             );文字内容
  68.                             (cons 50 (-
  69.                                         (- (* 2 pi) (getvar "viewtwist"))
  70.                                         (angle '(0. 0. 0.) (trans (getvar 'UCSXDIR) 0 (trans '(0. 0. 1.) 1 0 t) t)))
  71.                             );文字旋转始终水平视图
  72.                     )
  73.                 );多行文字
  74.             )
  75.             (if MTEN
  76.                 (progn
  77.                     (command "_.MTEDIT" MTEN)
  78.                     (while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前面的命令完成
  79.                 )
  80.                
  81.             
  82.             );编辑多行文字
  83.         )
  84.     )
  85.     (redraw);刷新视图
  86. )


用法:
  1. (K:CreatRvTXT (car (nentsel)) 230 1.0 "修改")

  2. (K:CreatRvTXT (car (nentsel)) 230 1.0 "批注")




本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
ssyfeng + 1 很给力!

查看全部评分

发表于 2024-4-4 21:36:19 | 显示全部楼层

(K:CreatRvTXT (car (nentsel)) 230 1.0 "修改")

(K:CreatRvTXT (car (nentsel)) 230 1.0 "批注")

要这么长的命令吗😅
 楼主| 发表于 2024-4-4 21:40:58 | 显示全部楼层
本帖最后由 kucha007 于 2024-4-5 01:05 编辑
szhorse 发表于 2024-4-4 21:36
(K:CreatRvTXT (car (nentsel)) 230 1.0 "修改")

(K:CreatRvTXT (car (nentsel)) 230 1.0 "批注")

嘛,你有需要就自己改咯
发表于 2024-4-7 08:09:53 | 显示全部楼层

感谢分享
感谢分享
发表于 2024-4-30 15:10:26 | 显示全部楼层
  1. (defun-c TT (/ TgtObj Col TgtDIM STR)
  2.   (setq TgtObj (car (nentsel "\n选择一个对象: ")))
  3.   (setq Col 230) ; 颜色编号设置为230
  4.   (setq TgtDIM 1.0) ; 文字标注的高度设置为1.0
  5.   (setq STR "修改") ; 文字内容设置为"修改"
  6.   (K:CreatRvTXT TgtObj Col TgtDIM STR)
  7.   (princ)
  8. )
发表于 2024-6-10 11:42:49 | 显示全部楼层
本帖最后由 muai2010 于 2024-6-10 13:48 编辑

(K:CreatRvTXT (car (nentsel)) 230 1.0 "修改")除了修改生效,其他230 好像是不生效
发表于 2024-11-8 15:09:03 | 显示全部楼层
多谢分享,稍微调整了一点点,把文字高度跟全局比例关联了一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:40 , Processed in 0.184240 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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