乐筑天下

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

[编程交流] 多行文字与文字问题

[复制链接]

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 11:46:51 | 显示全部楼层 |阅读模式
我有以下代码:
 
  1. (defun c:COPYPART (/ ObjC ObjP1 ObjP2 ObjA TxtV Nw1Txt
  2.       Nw2txt)
  3. (setq CREcho (getvar "CMDECHO"))
  4. (setq CRSnap (getvar "OSMODE"))
  5. (setq CRortho (getvar "ORTHOMODE"))
  6. ;;-------------Error handler---------------
  7. (setq *error*    ;;;resets sysvar incase of
  8.     (lambda (msg)   ;;;an error, esc, exit, cancel
  9.       (setvar "cmdecho" CRcecho)
  10.       (setvar "OSMODE" CRSnap)
  11.       (setvar "ORTHOMODE" CROrtho)
  12.       (princ msg)
  13.       (princ)))
  14. ;;------------------------------------------------
  15. (setvar "ORTHOMODE" 1)
  16. (if (< CRSnap 16384)
  17.      (setvar "OSMODE" (+ CRSnap 16384)))
  18. (setq ObjC (entsel "\nSelect object to copy down: "))
  19. (setq ObjP1 (list (car (cadr Objc)) (cadr (cadr Objc))))
  20. (setq ObjA (getangle "\nSpecify direction of copy: " Objp1))
  21. (cond ( (= ObjA 0) (setq ObjP2 (list (+ (car ObjP1) 30)(cadr ObjP1))))
  22. ( (= Obja (/ pi 2)) (setq ObjP2 (list (car ObjP1) (+ (cadr ObjP1) 5.25))))
  23. ( (= Obja pi)(setq ObjP2 (list (- (car ObjP1) 30)(cadr ObjP1))))
  24. ( (= Obja (* 3 (/ pi 2)))(setq ObjP2 (list (car ObjP1) (- (cadr ObjP1) 5.25)))))
  25. (vl-cmdf "_.copy" ObjC "" ObjP1 Objp2)
  26. (setq TxtV (entget(entlast)))
  27. (setq Nw1Txt (subst (cons 1 "###-###") (assoc 1 TxtV) TxtV))
  28. (entmod Nw1Txt)
  29. (entupd TxtV)
  30. (setq NewTxt (strcase (getstring "\nEnter New text value: ")))
  31. (setq Nw2Txt (subst (cons 1 NewTxt) (assoc 1 TxtV) TxtV))
  32. (entmod Nw2Txt)
  33. (setvar "CMDECHO" CREcho)
  34. (setvar "OSMODE" CREnap)
  35. (setvar "ORTHOMODE" CROrtho)
  36. (princ)
  37. )

 
这就是它所做的。有一些文本已经存在,我只需要将其复制到上/下/左或右的某个距离。复制时,它将文本值更改为“###-####”。然后我需要输入新数据。
 
如果我复制一个“TEXT”对象,效果很好。如果我选择一个“多行文字”对象,它将进行复制,但不会更改值或给我输入新值的选项。
 
我认为“TEXT”和“MTEXT”对于文本字符串都有相同的DXF代码,即1。有没有想过为什么这不适用于多行文字?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:03:59 | 显示全部楼层
试试这个:
 
请记住,当多次修改实体时,必须将变量值更新到新修改的实体数据列表。
 
PS>2010年,复制命令重复,不确定其他版本-您可能需要在末尾添加“”。
 
PPS>我会使用vla副本来确定。
回复

使用道具 举报

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 12:16:11 | 显示全部楼层
嗯,这确实有效。我要通读一遍,试着理解它是如何做到的。我肯定会有一些问题。谢谢,你帮了我很大的忙。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:33:54 | 显示全部楼层
不客气,很乐意帮忙
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 12:40:44 | 显示全部楼层
不复印怎么样?
  1. 2
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:48:50 | 显示全部楼层
很好的解决方案,艾伦!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 11:08 , Processed in 0.603012 second(s), 75 queries .

© 2020-2025 乐筑天下

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