乐筑天下

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

[编程交流] 将对象设为块

[复制链接]

22

主题

100

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2022-7-6 10:32:42 | 显示全部楼层
@李
有两个原因。
一个是我想知道cad(或你们的cad lisp大师)是如何做到这一点的。第二个是下图。
中文单词不能设置文字和线条之间的间距。这很烦人。我读过很多帖子。和
无法想出如何改变这一点。
 
105753yeoogwhjggggdhre.jpg
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 10:36:25 | 显示全部楼层
也适用于俄语文本。
105753ktyvj8jf3f3q6q3l.jpg
使用格式化\\pxse将搁板提升到文本上方
手动执行此操作很长一段时间,因此它们优于由多个命令编写的命令。也许这真的对中国人有用。
尝试使用MTLE、VLR\u MTLE\u ON、VLR\u MTLE\u OFF命令
  1. ;;; http://forum.dwg.ru/showthread.php?t=26548&page=3
  2. [color="red"];;; Where to change the value of the interval between lines of paragraph
  3. ;;; in the reactor at multilider?
  4. ;;; search line (mtext-paragraph "\ \ pxse" 0.86667 (entlast))
  5. ;;; it change the number of 0.86667 to the desired[/color]
  6. (defun le-endCommand (CALL CALLBACK)
  7. (if (= (strcase (car CALLBACK)) "MLEADER")
  8. (mtext-paragraph "\\pxse" [b][size="4"][color="red"]0.86667[/color][/size][/b] (entlast)) [b][color="red"];;; This changes the value of line spacing section![/color][/b]
  9. )
  10. )
  11. (defun gc:FieldCode (ent / foo elst xdict dict field str)
  12. ;; credits gile
  13. (defun foo (field str / pos fldID objID)
  14.    (setq pos 0)
  15.    (if (setq pos (vl-string-search "\\_FldIdx " str pos))
  16.      (while (setq pos (vl-string-search "\\_FldIdx " str pos))
  17.        (setq fldId (entget (cdr (assoc 360 field)))
  18.              field (vl-remove (assoc 360 field) field)
  19.              str   (strcat
  20.                      (substr str 1 pos)
  21.                      (if (setq objID (cdr (assoc 331 fldId)))
  22.                        (vl-string-subst
  23.                          (strcat "ObjId " (itoa (gc:EnameToObjectId objID)))
  24.                          "ObjIdx"
  25.                          (cdr (assoc 2 fldId))
  26.                        )
  27.                        (foo fldId (cdr (assoc 2 fldId)))
  28.                      )
  29.                      (substr str (1+ (vl-string-search ">%" str pos)))
  30.                    )
  31.        )
  32.      )
  33.      str
  34.    )
  35. )
  36.    ;; gc:EnameToObjectId (gile)
  37. ;; Returns the ObjectID from an ename
  38. ;;
  39. ;; Argument : an ename
  40. (defun gc:EnameToObjectId (ename)
  41. ;; credits gile
  42. ((lambda (str)
  43.     (hex2dec
  44.       (substr (vl-string-right-trim ">" str) (+ 3 (vl-string-search ":" str)))
  45.     )
  46.   )
  47.    (vl-princ-to-string ename)
  48. )
  49. )
  50.    ;;============================================================;;
  51. ;; hex2dec (gile)
  52. ;; convert an hexadecimal into a decimal (int)
  53. ;;
  54. ;; Argument : un hexadedimal (string)
  55. (defun hex2dec (s / r l n)
  56. (setq        r 0 l (vl-string->list (strcase s)))
  57. (while (setq n (car l))
  58.    (setq l (cdr l)
  59.          r (+ (* r 16) (- n (if (<= n 57) 48 55)))
  60.    )
  61. )
  62. )
  63. ;;--------------------------------------------------------;;
  64. (setq elst (entget ent))
  65. (if (vlax-property-available-p (vlax-ename->vla-object ent) 'Textstring)
  66.    (setq str (vla-get-TextString (vlax-ename->vla-object ent)))
  67.    )
  68. (if (and
  69. (member (cdr (assoc 0 elst)) '("ATTRIB" "MTEXT" "TEXT" "MULTILEADER"))
  70. (setq xdict (cdr (assoc 360 elst)))
  71. (setq dict (dictsearch xdict "ACAD_FIELD"))
  72. (setq field (dictsearch (cdr (assoc -1 dict)) "TEXT"))
  73.      )
  74.    (setq str (foo field (cdr (assoc 2 field))))
  75. )
  76.    str
  77. )
  78. (defun isFieldAvailable ( obj  / fc )
  79. (if (= (type obj) 'ENAME)
  80.      (setq obj (vlax-ename->vla-object obj))
  81.    )
  82. (and
  83.    (setq fc (vla-GetExtensionDictionary  obj))
  84.    (setq fc (vlax-vla-object->ename fc))
  85.    (dictsearch fc "ACAD_FIELD")
  86.    )
  87. )
  88. (defun mtext-paragraph ( pat value obj / ss i mtext ent)
  89. ;;; Изменить межстрочный интервал мтекста и многострочных аттрибутов
  90. ;;; Change Line Spacing
  91. ;;; http://forum.dwg.ru/showthread.php?t=54857
  92. ;;; Измените значение системной переменной ATTIPE на 1 и будет
  93. ;;; в редакторе многострочных атрибутов полноценный вариант редактора
  94. ;;; pat "\\pxse" or "\\pxsm"
  95. ;;; value - koeff like 0.86667
  96. ;;; obj - ename or vla object
  97. (vl-load-com)
  98. (setq value (rtos value 2 5))
  99. (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  100. (setq ent (vlax-vla-object->ename obj))
  101. (if (and (vlax-write-enabled-p obj)
  102.        (vlax-property-available-p obj 'Textstring)
  103.                 (or (not (vlax-property-available-p obj 'MTextAttribute))
  104.                     (and (vlax-property-available-p obj 'MTextAttribute)
  105.                          (eq (vla-get-MTextAttribute obj) :vlax-true)
  106.                          )
  107.                     )
  108.                 )
  109.          (progn
  110.            (setq mtext (gc:FieldCode ent))
  111.            (if (not(setq i (vl-string-search "\\PX" (strcase mtext))))
  112.              (setq i 0)
  113.              )
  114.            (if (wcmatch (strcase (substr mtext (1+ i) 3)) "\\PX")  
  115.              (setq mtext
  116.                  (strcat (if (not (zerop i))(substr mtext 1 i) "")
  117.                  pat value ";"
  118.                  (substr mtext (+ 2 (vl-string-search ";" mtext i))))
  119.                    )
  120.              (setq mtext (strcat pat value ";" mtext))
  121.              )
  122.            (vla-put-TextString obj mtext)
  123.            (if (isFieldAvailable obj)
  124.              (progn
  125.                (vl-cmdf "_.updatefield" ent "")
  126.                (entupd ent)
  127.                )
  128.              )
  129.            )
  130.        )
  131. )
  132. (defun C:MTLS ( / ss i lst mtext ls *LS*)
  133. ;;; MText Line Spacing
  134. ;;; Change line spacing mtext and multi-attribute
  135. ;;; Change Line Spacing
  136. ;;; Http://forum.dwg.ru/showthread.php?t=54857
  137. ;;; Change the value of system variable ATTIPE at 1 and will
  138. ;;, the editor of multi-attributes high-grade version of the editor  (vl-load-com)
  139. (if (zerop
  140.      (setq
  141.        *LS* (abs
  142.               (atof (vl-princ-to-string (getcfg "AppData/MTEXTLS/LS")))
  143.             ) ;_ end of abs
  144.      ) ;_ end of setq
  145.    ) ;_ end of zerop
  146. (setq *LS* 1)
  147. ) ;_ end of if
  148. (if (and
  149.        (progn
  150.          (initget 6)
  151.          (princ "\nEnter line spasing value <")
  152.          (princ *LS*)
  153.          (princ ">: ")
  154.          (if (setq ls (getreal))
  155.            (progn
  156.              (setq *LS* ls)
  157.              (setcfg "AppData/MTEXTLS/LS" (rtos *LS* 2 2))
  158.              )
  159.            (setq ls *LS*)
  160.            )
  161.        )
  162.        (setq lst nil ss (ssget "_:L" '((0 . "MTEXT,ATTDEF,INSERT,MULTILEADER"))))
  163.        (repeat (setq i (sslength ss)) ;_ end setq
  164.         (setq lst (cons (ssname ss (setq i (1- i))) lst))
  165.         ) ;_ en
  166.        )
  167.    (progn
  168.      (setq ss nil)
  169.      (foreach itm lst
  170.        (if (and itm (setq itm (vlax-ename->vla-object itm))
  171.           (vlax-property-available-p itm 'Hasattributes)
  172.    (eq :vlax-true (vla-get-HasAttributes itm))
  173.                 )
  174.          (setq ss (append ss
  175.                           (mapcar 'vlax-vla-object->ename
  176.                           (append (vlax-invoke itm 'Getattributes)(vlax-invoke itm 'Getconstantattributes))
  177.                                   )
  178.                           )
  179.                )
  180.           )
  181.        )
  182.      (setq lst (append lst ss))
  183.      (foreach itm lst (mtext-paragraph "\\pxsm" ls itm))
  184.    )
  185.    )
  186. (princ)
  187. )
  188. (defun C:MTLE ( / ss i lst mtext ls *LE*)
  189. ;;; MText Line Equal
  190. ;;; Change line spacing mtext and multi-attribute
  191. ;;; Change Line Equal
  192. ;;; Http://forum.dwg.ru/showthread.php?t=54857
  193. ;;; Change the value of system variable ATTIPE at 1 and will
  194. ;;, the editor of multi-attributes high-grade version of the editor
  195. (vl-load-com)
  196. (if (zerop
  197.      (setq
  198.        *LE* (abs
  199.               (atof (vl-princ-to-string (getcfg "AppData/MTEXTLS/LE")))
  200.             ) ;_ end of abs
  201.      ) ;_ end of setq
  202.    ) ;_ end of zerop
  203. (setq *LE* 1)
  204. ) ;_ end of if
  205. (if (and
  206.        (progn
  207.          (initget 6)
  208.          (princ "\nEnter line spasing (equal) value <")
  209.          (princ *LE*)
  210.          (princ ">: ")
  211.          (if (setq ls (getreal))
  212.            (progn
  213.              (setq *LE* ls)
  214.              (setcfg "AppData/MTEXTLS/LE" (rtos *LE* 2 2))
  215.              )
  216.            (setq ls *LE*)
  217.            )
  218.        )
  219.        (setq lst nil ss (ssget "_:L" '((0 . "MTEXT,ATTDEF,INSERT,MULTILEADER"))))
  220.        (repeat (setq i (sslength ss)) ;_ end setq
  221.         (setq lst (cons (ssname ss (setq i (1- i))) lst))
  222.         ) ;_ en
  223.        )
  224.    (progn
  225.      (setq ss nil)
  226.      (foreach obj lst
  227.        (if (and obj (setq obj (vlax-ename->vla-object obj))
  228.           (vlax-property-available-p obj 'Hasattributes)
  229.    (eq :vlax-true (vla-get-HasAttributes obj))
  230.                 )
  231.          (setq ss (append ss
  232.                           (mapcar 'vlax-vla-object->ename
  233.                           (append (vlax-invoke obj 'Getattributes)(vlax-invoke obj 'Getconstantattributes))
  234.                                   )
  235.                           )
  236.                )
  237.           )
  238.        )
  239.      (setq lst (append lst ss))
  240.      (foreach itm lst (mtext-paragraph "\\pxse" ls itm))
  241.    )
  242.    )
  243. (princ)
  244. )
  245. (defun C:VLR_MTLE_ON ()
  246. (vl-load-com)
  247. (or *vlr-MTLE
  248.     (setq *vlr-MTLE (vlr-command-reactor nil '((:vlr-commandEnded . le-endCommand)))))
  249. (princ "\nMtex Line Equal Reactor ON")
  250. (setvar "MODEMACRO" (strcat "*LE* "(VL-STRING-LEFT-TRIM "*LE* " (getvar "MODEMACRO"))))
  251. (princ)
  252. )
  253. ;;  Turn the reactors off
  254. (defun C:VLR_MTLE_OFF ()
  255. (and *vlr-MTLE (vlr-added-p *vlr-MTLE) (vlr-remove *vlr-MTLE))
  256. (setvar "MODEMACRO" (VL-STRING-LEFT-TRIM "*LE* " (getvar "MODEMACRO")))
  257. (princ "\nMtex Line Equal Reactor OFF")
  258. (princ)
  259. )
  260. (princ "\nType MTLE, MTLS, VLR_MTLE_ON, VLR_MTLE_OFF in command line")

 
 
注:所有俄语注释均通过机器翻译。希望他们能充分翻译
回复

使用道具 举报

22

主题

100

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2022-7-6 10:39:19 | 显示全部楼层
嗨,VVA
首先感谢您的代码。
我正在使用您的代码,并发现以下问题。
我使用mtle命令并输入值“1”,它在图片中显示左侧结果。
但输入值“2”,它会在图片中显示正确的结果(这是错误的)。我错过了什么吗??有关更多详细信息,请参阅所附图片。
105756ra1lh96y2rk92y4f.png
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 10:41:19 | 显示全部楼层
需要使用0.8-0.9中的值。尝试指定值0.86。
如何找到所需的值格式化\\pxse?
1.绘制文字高度为1的多重引线
 

                               
登录/注册后可看大图

 
2.使用行距格式
 

                               
登录/注册后可看大图

 
3、求段落行距的值。会的
 

                               
登录/注册后可看大图

 
4.对于具有几行的多重引线,我使用段落间距省略2行和后续行
 

                               
登录/注册后可看大图

 
对现有mleader使用MTLE命令
在绘制新的多重引线之前,键入命令VLR\u MTLE\u ON
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 10:46:34 | 显示全部楼层
请求版主移动帖子,从新帖子中的11个开始
回复

使用道具 举报

22

主题

100

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2022-7-6 10:49:03 | 显示全部楼层
它起作用了。凉的谢谢
回复

使用道具 举报

22

主题

100

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2022-7-6 10:51:52 | 显示全部楼层
@VVX
 
我在代码的最后一行添加了以下代码。但cad在没有此类命令的情况下给出错误。
 
  1. (command "VLR_MTLE_ON")
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:54:41 | 显示全部楼层
您不能这样调用LISP函数,而是:
 
  1. (c:VLR_MTLE_ON)
回复

使用道具 举报

22

主题

100

帖子

78

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2022-7-6 11:00:59 | 显示全部楼层
:)酷男人。李。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:06 , Processed in 0.621619 second(s), 82 queries .

© 2020-2025 乐筑天下

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